summaryrefslogtreecommitdiff
path: root/share/doc/gccint
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2024-02-04 16:16:35 +0800
committeralk3pInjection <webmaster@raspii.tech>2024-02-04 16:16:35 +0800
commitabdaadbcae30fe0c9a66c7516798279fdfd97750 (patch)
tree00a54a6e25601e43876d03c1a4a12a749d4a914c /share/doc/gccint
Import stripped Arm GNU Toolchain 13.2.Rel1HEADumineko
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads Change-Id: I7303388733328cd98ab9aa3c30236db67f2e9e9c
Diffstat (limited to 'share/doc/gccint')
-rw-r--r--share/doc/gccint/Accessors.html161
-rw-r--r--share/doc/gccint/Ada-Tests.html113
-rw-r--r--share/doc/gccint/Add-Options.html232
-rw-r--r--share/doc/gccint/Adding-a-new-GIMPLE-statement-code.html111
-rw-r--r--share/doc/gccint/Adding-new-DECL-node-types.html198
-rw-r--r--share/doc/gccint/Addressing-Modes.html783
-rw-r--r--share/doc/gccint/Aggregate-Return.html200
-rw-r--r--share/doc/gccint/Alias-analysis.html190
-rw-r--r--share/doc/gccint/Alignment-Output.html182
-rw-r--r--share/doc/gccint/Alignment-of-poly_005fints.html180
-rw-r--r--share/doc/gccint/All-Debuggers.html155
-rw-r--r--share/doc/gccint/Allocation-Order.html147
-rw-r--r--share/doc/gccint/Analyzer-Internals.html491
-rw-r--r--share/doc/gccint/Anchored-Addresses.html160
-rw-r--r--share/doc/gccint/Annotations.html92
-rw-r--r--share/doc/gccint/Arithmetic-on-poly_005fints.html106
-rw-r--r--share/doc/gccint/Arithmetic.html483
-rw-r--r--share/doc/gccint/Assembler-Format.html114
-rw-r--r--share/doc/gccint/Assembler.html120
-rw-r--r--share/doc/gccint/Attr-Example.html141
-rw-r--r--share/doc/gccint/Attributes.html113
-rw-r--r--share/doc/gccint/BTF-Debug.html92
-rw-r--r--share/doc/gccint/Back-End.html186
-rw-r--r--share/doc/gccint/Basic-Blocks.html217
-rw-r--r--share/doc/gccint/Basic-Statements.html217
-rw-r--r--share/doc/gccint/Bit_002dFields.html126
-rw-r--r--share/doc/gccint/Blocks.html116
-rw-r--r--share/doc/gccint/Build.html90
-rw-r--r--share/doc/gccint/C-Constraint-Interface.html174
-rw-r--r--share/doc/gccint/C-Tests.html207
-rw-r--r--share/doc/gccint/C-and-C_002b_002b-Trees.html145
-rw-r--r--share/doc/gccint/CTF-Debug.html92
-rw-r--r--share/doc/gccint/C_002b_002b-ABI.html201
-rw-r--r--share/doc/gccint/C_002b_002b-Expressions.html138
-rw-r--r--share/doc/gccint/Caller-Saves.html97
-rw-r--r--share/doc/gccint/Calls.html151
-rw-r--r--share/doc/gccint/Changing-Multiple-RTL-SSA-Instructions.html211
-rw-r--r--share/doc/gccint/Changing-One-RTL-SSA-Instruction.html232
-rw-r--r--share/doc/gccint/Changing-RTL-Instructions.html97
-rw-r--r--share/doc/gccint/Checking-for-a-poly_005fint-marker-value.html97
-rw-r--r--share/doc/gccint/Class-Preferences.html100
-rw-r--r--share/doc/gccint/Class-hierarchy-of-GIMPLE-statements.html225
-rw-r--r--share/doc/gccint/Classes.html239
-rw-r--r--share/doc/gccint/Cleanups.html135
-rw-r--r--share/doc/gccint/Code-Iterators.html188
-rw-r--r--share/doc/gccint/Collect2.html161
-rw-r--r--share/doc/gccint/Comparing-ordered-poly_005fints.html146
-rw-r--r--share/doc/gccint/Comparing-potentially_002dunordered-poly_005fints.html105
-rw-r--r--share/doc/gccint/Comparison-functions-for-poly_005fint.html132
-rw-r--r--share/doc/gccint/Comparisons-involving-poly_005fint.html128
-rw-r--r--share/doc/gccint/Comparisons.html210
-rw-r--r--share/doc/gccint/Compound-Expressions.html88
-rw-r--r--share/doc/gccint/Compound-Lvalues.html101
-rw-r--r--share/doc/gccint/Computing-bounds-on-poly_005fints.html118
-rw-r--r--share/doc/gccint/Concept-Index.html5784
-rw-r--r--share/doc/gccint/Condition-Code.html126
-rw-r--r--share/doc/gccint/Conditional-Execution.html176
-rw-r--r--share/doc/gccint/Conditional-Expressions.html107
-rw-r--r--share/doc/gccint/Config-Fragments.html109
-rw-r--r--share/doc/gccint/Configuration-Files.html141
-rw-r--r--share/doc/gccint/Configuration.html101
-rw-r--r--share/doc/gccint/Configure-Terms.html144
-rw-r--r--share/doc/gccint/Consequences-of-using-poly_005fint.html132
-rw-r--r--share/doc/gccint/Constant-Attributes.html110
-rw-r--r--share/doc/gccint/Constant-Definitions.html261
-rw-r--r--share/doc/gccint/Constant-expressions.html261
-rw-r--r--share/doc/gccint/Constants.html396
-rw-r--r--share/doc/gccint/Constraints.html121
-rw-r--r--share/doc/gccint/Containers.html113
-rw-r--r--share/doc/gccint/Contributing.html101
-rw-r--r--share/doc/gccint/Contributors.html1367
-rw-r--r--share/doc/gccint/Control-Flow.html128
-rw-r--r--share/doc/gccint/Conversions.html235
-rw-r--r--share/doc/gccint/Converting-poly_005fints.html189
-rw-r--r--share/doc/gccint/Copying.html793
-rw-r--r--share/doc/gccint/Costs.html584
-rw-r--r--share/doc/gccint/Current-structure-hierarchy.html150
-rw-r--r--share/doc/gccint/D-Language-and-ABI.html163
-rw-r--r--share/doc/gccint/DWARF.html238
-rw-r--r--share/doc/gccint/Data-Output.html278
-rw-r--r--share/doc/gccint/Debug-Information.html147
-rw-r--r--share/doc/gccint/Debugging-Info.html99
-rw-r--r--share/doc/gccint/Debugging-the-Analyzer.html349
-rw-r--r--share/doc/gccint/Decimal-float-library-routines.html417
-rw-r--r--share/doc/gccint/Declarations.html116
-rw-r--r--share/doc/gccint/Deficiencies.html88
-rw-r--r--share/doc/gccint/Define-Constraints.html291
-rw-r--r--share/doc/gccint/Define-Subst-Example.html177
-rw-r--r--share/doc/gccint/Define-Subst-Output-Template.html129
-rw-r--r--share/doc/gccint/Define-Subst-Pattern-Matching.html105
-rw-r--r--share/doc/gccint/Define-Subst.html140
-rw-r--r--share/doc/gccint/Defining-Attributes.html219
-rw-r--r--share/doc/gccint/Defining-Mode-Iterators.html125
-rw-r--r--share/doc/gccint/Defining-Predicates.html227
-rw-r--r--share/doc/gccint/Delay-Slots.html160
-rw-r--r--share/doc/gccint/Dependency-analysis.html212
-rw-r--r--share/doc/gccint/Dependent-Patterns.html118
-rw-r--r--share/doc/gccint/Directives.html447
-rw-r--r--share/doc/gccint/Disable-Insn-Alternatives.html191
-rw-r--r--share/doc/gccint/Dispatch-Tables.html228
-rw-r--r--share/doc/gccint/Division-of-poly_005fints.html127
-rw-r--r--share/doc/gccint/Documentation.html102
-rw-r--r--share/doc/gccint/Driver.html597
-rw-r--r--share/doc/gccint/Dump-examples.html128
-rw-r--r--share/doc/gccint/Dump-files-and-streams.html110
-rw-r--r--share/doc/gccint/Dump-output-verbosity.html118
-rw-r--r--share/doc/gccint/Dump-setup.html105
-rw-r--r--share/doc/gccint/Dump-types.html155
-rw-r--r--share/doc/gccint/Edges.html346
-rw-r--r--share/doc/gccint/Effective_002dTarget-Keywords.html2063
-rw-r--r--share/doc/gccint/Elimination.html172
-rw-r--r--share/doc/gccint/Empty-Statements.html94
-rw-r--r--share/doc/gccint/Emulated-TLS.html174
-rw-r--r--share/doc/gccint/Example.html128
-rw-r--r--share/doc/gccint/Examples.html128
-rw-r--r--share/doc/gccint/Exception-Handling.html225
-rw-r--r--share/doc/gccint/Exception-Region-Output.html251
-rw-r--r--share/doc/gccint/Exception-handling-routines.html117
-rw-r--r--share/doc/gccint/Expander-Definitions.html289
-rw-r--r--share/doc/gccint/Expression-trees.html143
-rw-r--r--share/doc/gccint/Expressions.html323
-rw-r--r--share/doc/gccint/File-Framework.html314
-rw-r--r--share/doc/gccint/Files.html147
-rw-r--r--share/doc/gccint/Filesystem.html212
-rw-r--r--share/doc/gccint/Final-Actions.html409
-rw-r--r--share/doc/gccint/Fixed_002dpoint-fractional-library-routines.html1537
-rw-r--r--share/doc/gccint/Flags.html619
-rw-r--r--share/doc/gccint/Floating-Point.html162
-rw-r--r--share/doc/gccint/Fragments.html112
-rw-r--r--share/doc/gccint/Frame-Layout.html388
-rw-r--r--share/doc/gccint/Frame-Registers.html298
-rw-r--r--share/doc/gccint/Front-End-Config.html154
-rw-r--r--share/doc/gccint/Front-End-Directory.html115
-rw-r--r--share/doc/gccint/Front-End-Makefile.html187
-rw-r--r--share/doc/gccint/Front-End.html164
-rw-r--r--share/doc/gccint/Function-Basics.html209
-rw-r--r--share/doc/gccint/Function-Entry.html326
-rw-r--r--share/doc/gccint/Function-Properties.html186
-rw-r--r--share/doc/gccint/Functions-for-C_002b_002b.html343
-rw-r--r--share/doc/gccint/Functions.html99
-rw-r--r--share/doc/gccint/Funding.html135
-rw-r--r--share/doc/gccint/GENERIC.html136
-rw-r--r--share/doc/gccint/GGC-Roots.html103
-rw-r--r--share/doc/gccint/GIMPLE-API.html133
-rw-r--r--share/doc/gccint/GIMPLE-Exception-Handling.html129
-rw-r--r--share/doc/gccint/GIMPLE-Tests.html130
-rw-r--r--share/doc/gccint/GIMPLE-instruction-set.html120
-rw-r--r--share/doc/gccint/GIMPLE-sequences.html188
-rw-r--r--share/doc/gccint/GIMPLE.html178
-rw-r--r--share/doc/gccint/GIMPLE_005fASM.html160
-rw-r--r--share/doc/gccint/GIMPLE_005fASSIGN.html229
-rw-r--r--share/doc/gccint/GIMPLE_005fBIND.html143
-rw-r--r--share/doc/gccint/GIMPLE_005fCALL.html220
-rw-r--r--share/doc/gccint/GIMPLE_005fCATCH.html120
-rw-r--r--share/doc/gccint/GIMPLE_005fCOND.html176
-rw-r--r--share/doc/gccint/GIMPLE_005fDEBUG.html198
-rw-r--r--share/doc/gccint/GIMPLE_005fEH_005fFILTER.html130
-rw-r--r--share/doc/gccint/GIMPLE_005fGOTO.html101
-rw-r--r--share/doc/gccint/GIMPLE_005fLABEL.html102
-rw-r--r--share/doc/gccint/GIMPLE_005fNOP.html95
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fLOAD.html113
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fSTORE.html101
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fCONTINUE.html127
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fCRITICAL.html108
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fFOR.html199
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fMASTER.html92
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fORDERED.html93
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fPARALLEL.html172
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fRETURN.html103
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fSECTION.html103
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fSECTIONS.html134
-rw-r--r--share/doc/gccint/GIMPLE_005fOMP_005fSINGLE.html109
-rw-r--r--share/doc/gccint/GIMPLE_005fPHI.html124
-rw-r--r--share/doc/gccint/GIMPLE_005fRESX.html103
-rw-r--r--share/doc/gccint/GIMPLE_005fRETURN.html100
-rw-r--r--share/doc/gccint/GIMPLE_005fSWITCH.html138
-rw-r--r--share/doc/gccint/GIMPLE_005fTRY.html135
-rw-r--r--share/doc/gccint/GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html112
-rw-r--r--share/doc/gccint/GNU-Free-Documentation-License.html560
-rw-r--r--share/doc/gccint/GNU-Project.html97
-rw-r--r--share/doc/gccint/GTY-Options.html418
-rw-r--r--share/doc/gccint/Gimplification-pass.html125
-rw-r--r--share/doc/gccint/Guidelines-for-Diagnostics.html677
-rw-r--r--share/doc/gccint/Guidelines-for-Options.html88
-rw-r--r--share/doc/gccint/Guidelines-for-using-poly_005fint.html209
-rw-r--r--share/doc/gccint/Header-Dirs.html110
-rw-r--r--share/doc/gccint/Headers.html129
-rw-r--r--share/doc/gccint/Host-Common.html141
-rw-r--r--share/doc/gccint/Host-Config.html108
-rw-r--r--share/doc/gccint/Host-Fragment.html89
-rw-r--r--share/doc/gccint/Host-Misc.html168
-rw-r--r--share/doc/gccint/IPA-passes.html107
-rw-r--r--share/doc/gccint/IPA.html293
-rw-r--r--share/doc/gccint/Identifiers.html138
-rw-r--r--share/doc/gccint/Incdec.html186
-rw-r--r--share/doc/gccint/Including-Patterns.html160
-rw-r--r--share/doc/gccint/Inheritance-and-GTY.html139
-rw-r--r--share/doc/gccint/Initialization.html205
-rw-r--r--share/doc/gccint/Insn-Attributes.html113
-rw-r--r--share/doc/gccint/Insn-Canonicalizations.html238
-rw-r--r--share/doc/gccint/Insn-Lengths.html181
-rw-r--r--share/doc/gccint/Insn-Splitting.html458
-rw-r--r--share/doc/gccint/Insns.html754
-rw-r--r--share/doc/gccint/Instruction-Output.html334
-rw-r--r--share/doc/gccint/Int-Iterators.html163
-rw-r--r--share/doc/gccint/Integer-library-routines.html286
-rw-r--r--share/doc/gccint/Interface.html153
-rw-r--r--share/doc/gccint/Internal-flags.html119
-rw-r--r--share/doc/gccint/Internal-structure.html96
-rw-r--r--share/doc/gccint/Invoking-the-garbage-collector.html111
-rw-r--r--share/doc/gccint/Iterators.html102
-rw-r--r--share/doc/gccint/Jump-Patterns.html112
-rw-r--r--share/doc/gccint/Jumps.html99
-rw-r--r--share/doc/gccint/LCSSA.html127
-rw-r--r--share/doc/gccint/LTO-Overview.html209
-rw-r--r--share/doc/gccint/LTO-Testing.html130
-rw-r--r--share/doc/gccint/LTO-object-file-layout.html197
-rw-r--r--share/doc/gccint/LTO.html110
-rw-r--r--share/doc/gccint/Label-Output.html671
-rw-r--r--share/doc/gccint/Language_002ddependent-trees.html101
-rw-r--r--share/doc/gccint/Languages.html114
-rw-r--r--share/doc/gccint/Late-IPA-passes.html110
-rw-r--r--share/doc/gccint/Leaf-Functions.html153
-rw-r--r--share/doc/gccint/Libgcc.html134
-rw-r--r--share/doc/gccint/Library-Calls.html213
-rw-r--r--share/doc/gccint/Library-Files.html90
-rw-r--r--share/doc/gccint/Liveness-information.html128
-rw-r--r--share/doc/gccint/Logical-Operators.html324
-rw-r--r--share/doc/gccint/Loop-Analysis-and-Representation.html109
-rw-r--r--share/doc/gccint/Loop-manipulation.html136
-rw-r--r--share/doc/gccint/Loop-querying.html147
-rw-r--r--share/doc/gccint/Loop-representation.html215
-rw-r--r--share/doc/gccint/Looping-Patterns.html213
-rw-r--r--share/doc/gccint/MIPS-Coprocessors.html109
-rw-r--r--share/doc/gccint/MODE_005fCC-Condition-Codes.html239
-rw-r--r--share/doc/gccint/Machine-Constraints.html3282
-rw-r--r--share/doc/gccint/Machine-Desc.html157
-rw-r--r--share/doc/gccint/Machine-Modes.html765
-rw-r--r--share/doc/gccint/Machine_002dIndependent-Predicates.html242
-rw-r--r--share/doc/gccint/Macros-and-Functions.html134
-rw-r--r--share/doc/gccint/Macros-for-Initialization.html264
-rw-r--r--share/doc/gccint/Maintaining-the-CFG.html248
-rw-r--r--share/doc/gccint/Makefile.html320
-rw-r--r--share/doc/gccint/Man-Page-Generation.html122
-rw-r--r--share/doc/gccint/Manipulating-GIMPLE-statements.html291
-rw-r--r--share/doc/gccint/Match-and-Simplify.html110
-rw-r--r--share/doc/gccint/Memory-model.html109
-rw-r--r--share/doc/gccint/Misc.html1628
-rw-r--r--share/doc/gccint/Miscellaneous-Docs.html126
-rw-r--r--share/doc/gccint/Miscellaneous-Register-Hooks.html97
-rw-r--r--share/doc/gccint/Miscellaneous-poly_005fint-routines.html97
-rw-r--r--share/doc/gccint/Miscellaneous-routines.html132
-rw-r--r--share/doc/gccint/Mnemonic-Attribute.html120
-rw-r--r--share/doc/gccint/Mode-Iterators.html112
-rw-r--r--share/doc/gccint/Mode-Switching.html183
-rw-r--r--share/doc/gccint/Modifiers.html209
-rw-r--r--share/doc/gccint/Multi_002dAlternative.html168
-rw-r--r--share/doc/gccint/Named-Address-Spaces.html211
-rw-r--r--share/doc/gccint/Namespaces.html176
-rw-r--r--share/doc/gccint/Number-of-iterations.html164
-rw-r--r--share/doc/gccint/OpenACC.html159
-rw-r--r--share/doc/gccint/OpenMP.html321
-rw-r--r--share/doc/gccint/Operands.html115
-rw-r--r--share/doc/gccint/Optimization-groups.html137
-rw-r--r--share/doc/gccint/Optimization-info.html106
-rw-r--r--share/doc/gccint/Option-Index.html114
-rw-r--r--share/doc/gccint/Option-file-format.html267
-rw-r--r--share/doc/gccint/Option-properties.html515
-rw-r--r--share/doc/gccint/Options.html97
-rw-r--r--share/doc/gccint/Other-poly_005fint-arithmetic.html124
-rw-r--r--share/doc/gccint/Output-Statement.html201
-rw-r--r--share/doc/gccint/Output-Template.html179
-rw-r--r--share/doc/gccint/Overview-of-poly_005fint.html165
-rw-r--r--share/doc/gccint/Overview.html130
-rw-r--r--share/doc/gccint/PCH-Target.html130
-rw-r--r--share/doc/gccint/PIC.html132
-rw-r--r--share/doc/gccint/Parameterized-Names.html197
-rw-r--r--share/doc/gccint/Parsing-pass.html164
-rw-r--r--share/doc/gccint/Pass-manager.html122
-rw-r--r--share/doc/gccint/Passes.html110
-rw-r--r--share/doc/gccint/Pattern-Ordering.html104
-rw-r--r--share/doc/gccint/Patterns.html187
-rw-r--r--share/doc/gccint/Peephole-Definitions.html113
-rw-r--r--share/doc/gccint/Per_002dFunction-Data.html144
-rw-r--r--share/doc/gccint/Plugin-API.html295
-rw-r--r--share/doc/gccint/Plugins-GC.html113
-rw-r--r--share/doc/gccint/Plugins-attr.html150
-rw-r--r--share/doc/gccint/Plugins-building.html176
-rw-r--r--share/doc/gccint/Plugins-description.html99
-rw-r--r--share/doc/gccint/Plugins-gate.html92
-rw-r--r--share/doc/gccint/Plugins-loading.html106
-rw-r--r--share/doc/gccint/Plugins-pass.html134
-rw-r--r--share/doc/gccint/Plugins-recording.html96
-rw-r--r--share/doc/gccint/Plugins-tracking.html93
-rw-r--r--share/doc/gccint/Plugins.html118
-rw-r--r--share/doc/gccint/Portability.html122
-rw-r--r--share/doc/gccint/Predicates.html153
-rw-r--r--share/doc/gccint/Processor-pipeline-description.html595
-rw-r--r--share/doc/gccint/Profile-information.html186
-rw-r--r--share/doc/gccint/Profiling.html140
-rw-r--r--share/doc/gccint/Properties-of-the-poly_005fint-comparisons.html171
-rw-r--r--share/doc/gccint/RTL-Classes.html302
-rw-r--r--share/doc/gccint/RTL-Declarations.html106
-rw-r--r--share/doc/gccint/RTL-Objects.html170
-rw-r--r--share/doc/gccint/RTL-SSA-Access-Lists.html235
-rw-r--r--share/doc/gccint/RTL-SSA-Accesses.html137
-rw-r--r--share/doc/gccint/RTL-SSA-Basic-Blocks.html159
-rw-r--r--share/doc/gccint/RTL-SSA-Instructions.html128
-rw-r--r--share/doc/gccint/RTL-SSA-Phi-Nodes.html139
-rw-r--r--share/doc/gccint/RTL-SSA-Resources.html101
-rw-r--r--share/doc/gccint/RTL-SSA.html122
-rw-r--r--share/doc/gccint/RTL-Template.html342
-rw-r--r--share/doc/gccint/RTL-Tests.html123
-rw-r--r--share/doc/gccint/RTL-passes.html356
-rw-r--r--share/doc/gccint/RTL.html151
-rw-r--r--share/doc/gccint/Range-checks-on-poly_005fints.html154
-rw-r--r--share/doc/gccint/Reading-RTL.html104
-rw-r--r--share/doc/gccint/Register-Arguments.html623
-rw-r--r--share/doc/gccint/Register-Basics.html277
-rw-r--r--share/doc/gccint/Register-Classes.html820
-rw-r--r--share/doc/gccint/Registers.html107
-rw-r--r--share/doc/gccint/Regs-and-Memory.html544
-rw-r--r--share/doc/gccint/Regular-IPA-passes.html201
-rw-r--r--share/doc/gccint/Require-Support.html185
-rw-r--r--share/doc/gccint/Run_002dtime-Target.html321
-rw-r--r--share/doc/gccint/SSA-Operands.html471
-rw-r--r--share/doc/gccint/SSA.html353
-rw-r--r--share/doc/gccint/Scalar-Return.html237
-rw-r--r--share/doc/gccint/Scalar-evolutions.html151
-rw-r--r--share/doc/gccint/Scheduling.html600
-rw-r--r--share/doc/gccint/Sections.html487
-rw-r--r--share/doc/gccint/Selectors.html195
-rw-r--r--share/doc/gccint/Sequence-iterators.html339
-rw-r--r--share/doc/gccint/Sharing.html171
-rw-r--r--share/doc/gccint/Shrink_002dwrapping-separate-components.html154
-rw-r--r--share/doc/gccint/Side-Effects.html461
-rw-r--r--share/doc/gccint/Simple-Constraints.html433
-rw-r--r--share/doc/gccint/Small-IPA-passes.html183
-rw-r--r--share/doc/gccint/Soft-float-library-routines.html393
-rw-r--r--share/doc/gccint/Sorting-poly_005fints.html100
-rw-r--r--share/doc/gccint/Source-Tree.html99
-rw-r--r--share/doc/gccint/Special-Accessors.html293
-rw-r--r--share/doc/gccint/Stack-Arguments.html264
-rw-r--r--share/doc/gccint/Stack-Checking.html205
-rw-r--r--share/doc/gccint/Stack-Registers.html120
-rw-r--r--share/doc/gccint/Stack-Smashing-Protection.html139
-rw-r--r--share/doc/gccint/Stack-and-Calling.html122
-rw-r--r--share/doc/gccint/Standard-Names.html3707
-rw-r--r--share/doc/gccint/Statement-Sequences.html89
-rw-r--r--share/doc/gccint/Statement-and-operand-traversals.html147
-rw-r--r--share/doc/gccint/Statements-for-C-and-C_002b_002b.html358
-rw-r--r--share/doc/gccint/Statements.html111
-rw-r--r--share/doc/gccint/Static-Analyzer.html94
-rw-r--r--share/doc/gccint/Storage-Layout.html795
-rw-r--r--share/doc/gccint/Storage-References.html179
-rw-r--r--share/doc/gccint/Subdirectories.html146
-rw-r--r--share/doc/gccint/Subst-Iterators.html128
-rw-r--r--share/doc/gccint/Substitutions.html150
-rw-r--r--share/doc/gccint/System-Config.html101
-rw-r--r--share/doc/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html69
-rw-r--r--share/doc/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html69
-rw-r--r--share/doc/gccint/Tagging-Insns.html192
-rw-r--r--share/doc/gccint/Tail-Calls.html122
-rw-r--r--share/doc/gccint/Target-Attributes.html333
-rw-r--r--share/doc/gccint/Target-Fragment.html335
-rw-r--r--share/doc/gccint/Target-Macros.html172
-rw-r--r--share/doc/gccint/Target-Structure.html145
-rw-r--r--share/doc/gccint/Temporaries.html119
-rw-r--r--share/doc/gccint/Test-Directives.html99
-rw-r--r--share/doc/gccint/Test-Idioms.html164
-rw-r--r--share/doc/gccint/Testsuites.html114
-rw-r--r--share/doc/gccint/Texinfo-Manuals.html144
-rw-r--r--share/doc/gccint/The-Language.html464
-rw-r--r--share/doc/gccint/Top-Level.html257
-rw-r--r--share/doc/gccint/Torture-Tests.html132
-rw-r--r--share/doc/gccint/Trampolines.html294
-rw-r--r--share/doc/gccint/Tree-SSA-passes.html563
-rw-r--r--share/doc/gccint/Tree-SSA.html128
-rw-r--r--share/doc/gccint/Tree-overview.html180
-rw-r--r--share/doc/gccint/Troubleshooting.html104
-rw-r--r--share/doc/gccint/Tuple-representation.html297
-rw-r--r--share/doc/gccint/Tuple-specific-accessors.html147
-rw-r--r--share/doc/gccint/Type-Information.html188
-rw-r--r--share/doc/gccint/Type-Layout.html466
-rw-r--r--share/doc/gccint/Types-for-C_002b_002b.html295
-rw-r--r--share/doc/gccint/Types.html446
-rw-r--r--share/doc/gccint/Unary-and-Binary-Expressions.html651
-rw-r--r--share/doc/gccint/Uninitialized-Data.html192
-rw-r--r--share/doc/gccint/User-Experience-Guidelines.html109
-rw-r--r--share/doc/gccint/User-GC.html200
-rw-r--r--share/doc/gccint/Using-RTL-SSA.html148
-rw-r--r--share/doc/gccint/Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html138
-rw-r--r--share/doc/gccint/VMS-Debug.html96
-rw-r--r--share/doc/gccint/Values-in-Registers.html250
-rw-r--r--share/doc/gccint/Varargs.html252
-rw-r--r--share/doc/gccint/Vector-Operations.html142
-rw-r--r--share/doc/gccint/Vectors.html277
-rw-r--r--share/doc/gccint/WHOPR.html171
-rw-r--r--share/doc/gccint/Working-with-declarations.html240
-rw-r--r--share/doc/gccint/arm_005farch_005fv8a_005fhard_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fcoproc1_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fcoproc2_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fcoproc3_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fdsp_005fok.html69
-rw-r--r--share/doc/gccint/arm_005ffp16_005falternative.html69
-rw-r--r--share/doc/gccint/arm_005ffp16_005fieee.html69
-rw-r--r--share/doc/gccint/arm_005ffp16_005fok.html69
-rw-r--r--share/doc/gccint/arm_005ffp16fml_005fneon_005fok.html69
-rw-r--r--share/doc/gccint/arm_005ffp_005fdp_005fok.html69
-rw-r--r--share/doc/gccint/arm_005ffp_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fhard_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fmve.html69
-rw-r--r--share/doc/gccint/arm_005fneon_005ffp16_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fneon_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fneon_005fok_005fno_005ffloat_005fabi.html69
-rw-r--r--share/doc/gccint/arm_005fneonv2_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fsat_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fsimd32_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fsoftfp_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fv8_005f1_005flob_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fv8_005f1a_005fneon_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fv8_005f2a_005fdotprod_005fneon_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fscalar_005fok.html69
-rw-r--r--share/doc/gccint/arm_005fvfp3_005fok.html69
-rw-r--r--share/doc/gccint/compat-Testing.html199
-rw-r--r--share/doc/gccint/default_005fpacked.html69
-rw-r--r--share/doc/gccint/define_005fenum.html69
-rw-r--r--share/doc/gccint/define_005fenum_005fattr.html69
-rw-r--r--share/doc/gccint/define_005fpeephole.html256
-rw-r--r--share/doc/gccint/define_005fpeephole2.html199
-rw-r--r--share/doc/gccint/epilogue-instruction-pattern.html69
-rw-r--r--share/doc/gccint/gcc-Directory.html111
-rw-r--r--share/doc/gccint/gcov-Testing.html152
-rw-r--r--share/doc/gccint/index.html937
-rw-r--r--share/doc/gccint/input_005flocation_005fexample.html69
-rw-r--r--share/doc/gccint/loop_002div.html134
-rw-r--r--share/doc/gccint/poly_005fint.html141
-rw-r--r--share/doc/gccint/profopt-Testing.html135
-rw-r--r--share/doc/gccint/prologue-instruction-pattern.html69
-rw-r--r--share/doc/gccint/real-RTL-SSA-insns.html69
-rw-r--r--share/doc/gccint/shift-patterns.html69
-rw-r--r--share/doc/gccint/stack_005fsize_005fao.html69
-rw-r--r--share/doc/gccint/stack_005fsize_005fet.html69
-rw-r--r--share/doc/gccint/wi-arithmetic-on-poly_005fints.html111
-rw-r--r--share/doc/gccint/window_005fsave-instruction-pattern.html69
446 files changed, 102193 insertions, 0 deletions
diff --git a/share/doc/gccint/Accessors.html b/share/doc/gccint/Accessors.html
new file mode 100644
index 0000000..4e32b12
--- /dev/null
+++ b/share/doc/gccint/Accessors.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Accessors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Accessors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Accessors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Special-Accessors.html#Special-Accessors" rel="next" title="Special Accessors">
+<link href="RTL-Classes.html#RTL-Classes" rel="previous" title="RTL Classes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Accessors"></a>
+<div class="header">
+<p>
+Next: <a href="Special-Accessors.html#Special-Accessors" accesskey="n" rel="next">Special Accessors</a>, Previous: <a href="RTL-Classes.html#RTL-Classes" accesskey="p" rel="previous">RTL Classes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Access-to-Operands"></a>
+<h3 class="section">14.3 Access to Operands</h3>
+<a name="index-accessors"></a>
+<a name="index-access-to-operands"></a>
+<a name="index-operand-access"></a>
+
+<a name="index-XEXP"></a>
+<a name="index-XINT"></a>
+<a name="index-XWINT"></a>
+<a name="index-XSTR"></a>
+<p>Operands of expressions are accessed using the macros <code>XEXP</code>,
+<code>XINT</code>, <code>XWINT</code> and <code>XSTR</code>. Each of these macros takes
+two arguments: an expression-pointer (RTX) and an operand number
+(counting from zero). Thus,
+</p>
+<div class="smallexample">
+<pre class="smallexample">XEXP (<var>x</var>, 2)
+</pre></div>
+
+<p>accesses operand 2 of expression <var>x</var>, as an expression.
+</p>
+<div class="smallexample">
+<pre class="smallexample">XINT (<var>x</var>, 2)
+</pre></div>
+
+<p>accesses the same operand as an integer. <code>XSTR</code>, used in the same
+fashion, would access it as a string.
+</p>
+<p>Any operand can be accessed as an integer, as an expression or as a string.
+You must choose the correct method of access for the kind of value actually
+stored in the operand. You would do this based on the expression code of
+the containing expression. That is also how you would know how many
+operands there are.
+</p>
+<p>For example, if <var>x</var> is an <code>int_list</code> expression, you know that it has
+two operands which can be correctly accessed as <code>XINT (<var>x</var>, 0)</code>
+and <code>XEXP (<var>x</var>, 1)</code>. Incorrect accesses like
+<code>XEXP (<var>x</var>, 0)</code> and <code>XINT (<var>x</var>, 1)</code> would compile,
+but would trigger an internal compiler error when rtl checking is enabled.
+Nothing stops you from writing <code>XEXP (<var>x</var>, 28)</code> either, but
+this will access memory past the end of the expression with
+unpredictable results.
+</p>
+<p>Access to operands which are vectors is more complicated. You can use the
+macro <code>XVEC</code> to get the vector-pointer itself, or the macros
+<code>XVECEXP</code> and <code>XVECLEN</code> to access the elements and length of a
+vector.
+</p>
+<dl compact="compact">
+<dd><a name="index-XVEC"></a>
+</dd>
+<dt><code>XVEC (<var>exp</var>, <var>idx</var>)</code></dt>
+<dd><p>Access the vector-pointer which is operand number <var>idx</var> in <var>exp</var>.
+</p>
+<a name="index-XVECLEN"></a>
+</dd>
+<dt><code>XVECLEN (<var>exp</var>, <var>idx</var>)</code></dt>
+<dd><p>Access the length (number of elements) in the vector which is
+in operand number <var>idx</var> in <var>exp</var>. This value is an <code>int</code>.
+</p>
+<a name="index-XVECEXP"></a>
+</dd>
+<dt><code>XVECEXP (<var>exp</var>, <var>idx</var>, <var>eltnum</var>)</code></dt>
+<dd><p>Access element number <var>eltnum</var> in the vector which is
+in operand number <var>idx</var> in <var>exp</var>. This value is an RTX.
+</p>
+<p>It is up to you to make sure that <var>eltnum</var> is not negative
+and is less than <code>XVECLEN (<var>exp</var>, <var>idx</var>)</code>.
+</p></dd>
+</dl>
+
+<p>All the macros defined in this section expand into lvalues and therefore
+can be used to assign the operands, lengths and vector elements as well as
+to access them.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Special-Accessors.html#Special-Accessors" accesskey="n" rel="next">Special Accessors</a>, Previous: <a href="RTL-Classes.html#RTL-Classes" accesskey="p" rel="previous">RTL Classes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Ada-Tests.html b/share/doc/gccint/Ada-Tests.html
new file mode 100644
index 0000000..0d340a4
--- /dev/null
+++ b/share/doc/gccint/Ada-Tests.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Ada Tests</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Ada Tests">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Ada Tests">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="C-Tests.html#C-Tests" rel="next" title="C Tests">
+<link href="Final-Actions.html#Final-Actions" rel="previous" title="Final Actions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Ada-Tests"></a>
+<div class="header">
+<p>
+Next: <a href="C-Tests.html#C-Tests" accesskey="n" rel="next">C Tests</a>, Previous: <a href="Test-Directives.html#Test-Directives" accesskey="p" rel="previous">Test Directives</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Ada-Language-Testsuites"></a>
+<h3 class="section">7.3 Ada Language Testsuites</h3>
+
+<p>The Ada testsuite includes executable tests from the ACATS
+testsuite, publicly available at
+<a href="http://www.ada-auth.org/acats.html">http://www.ada-auth.org/acats.html</a>.
+</p>
+<p>These tests are integrated in the GCC testsuite in the
+<samp>ada/acats</samp> directory, and
+enabled automatically when running <code>make check</code>, assuming
+the Ada language has been enabled when configuring GCC.
+</p>
+<p>You can also run the Ada testsuite independently, using
+<code>make check-ada</code>, or run a subset of the tests by specifying which
+chapter to run, e.g.:
+</p>
+<div class="smallexample">
+<pre class="smallexample">$ make check-ada CHAPTERS=&quot;c3 c9&quot;
+</pre></div>
+
+<p>The tests are organized by directory, each directory corresponding to
+a chapter of the Ada Reference Manual. So for example, <samp>c9</samp> corresponds
+to chapter 9, which deals with tasking features of the language.
+</p>
+<p>The tests are run using two <code>sh</code> scripts: <samp>run_acats</samp> and
+<samp>run_all.sh</samp>. To run the tests using a simulator or a cross
+target, see the small
+customization section at the top of <samp>run_all.sh</samp>.
+</p>
+<p>These tests are run using the build tree: they can be run without doing
+a <code>make install</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Add-Options.html b/share/doc/gccint/Add-Options.html
new file mode 100644
index 0000000..d0afcfb
--- /dev/null
+++ b/share/doc/gccint/Add-Options.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Add Options</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Add Options">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Add Options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Require-Support.html#Require-Support" rel="next" title="Require Support">
+<link href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" rel="previous" title="Effective-Target Keywords">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Add-Options"></a>
+<div class="header">
+<p>
+Next: <a href="Require-Support.html#Require-Support" accesskey="n" rel="next">Require Support</a>, Previous: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="p" rel="previous">Effective-Target Keywords</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Features-for-dg_002dadd_002doptions"></a>
+<h4 class="subsection">7.2.4 Features for <code>dg-add-options</code></h4>
+
+<p>The supported values of <var>feature</var> for directive <code>dg-add-options</code>
+are:
+</p>
+<dl compact="compact">
+<dt><code>arm_fp</code></dt>
+<dd><p><code>__ARM_FP</code> definition. Only ARM targets support this feature, and only then
+in certain modes; see the <a href="Effective_002dTarget-Keywords.html#arm_005ffp_005fok">arm_fp_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>arm_fp_dp</code></dt>
+<dd><p><code>__ARM_FP</code> definition with double-precision support. Only ARM
+targets support this feature, and only then in certain modes; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005ffp_005fdp_005fok">arm_fp_dp_ok effective target keyword</a>.
+</p>
+</dd>
+<dt><code>arm_neon</code></dt>
+<dd><p>NEON support. Only ARM targets support this feature, and only then
+in certain modes; see the <a href="Effective_002dTarget-Keywords.html#arm_005fneon_005fok">arm_neon_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>arm_fp16</code></dt>
+<dd><p>VFP half-precision floating point support. This does not select the
+FP16 format; for that, use <a href="#arm_005ffp16_005fieee">arm_fp16_ieee</a> or
+<a href="#arm_005ffp16_005falternative">arm_fp16_alternative</a> instead. This
+feature is only supported by ARM targets and then only in certain
+modes; see the <a href="Effective_002dTarget-Keywords.html#arm_005ffp16_005fok">arm_fp16_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>arm_fp16_ieee</code></dt>
+<dd><a name="arm_005ffp16_005fieee"></a><p>ARM IEEE 754-2008 format VFP half-precision floating point support.
+This feature is only supported by ARM targets and then only in certain
+modes; see the <a href="Effective_002dTarget-Keywords.html#arm_005ffp16_005fok">arm_fp16_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>arm_fp16_alternative</code></dt>
+<dd><a name="arm_005ffp16_005falternative"></a><p>ARM Alternative format VFP half-precision floating point support.
+This feature is only supported by ARM targets and then only in certain
+modes; see the <a href="Effective_002dTarget-Keywords.html#arm_005ffp16_005fok">arm_fp16_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>arm_neon_fp16</code></dt>
+<dd><p>NEON and half-precision floating point support. Only ARM targets
+support this feature, and only then in certain modes; see
+the <a href="Effective_002dTarget-Keywords.html#arm_005fneon_005ffp16_005fok">arm_neon_fp16_ok effective target keyword</a>.
+</p>
+</dd>
+<dt><code>arm_vfp3</code></dt>
+<dd><p>arm vfp3 floating point support; see
+the <a href="Effective_002dTarget-Keywords.html#arm_005fvfp3_005fok">arm_vfp3_ok effective target keyword</a>.
+</p>
+</dd>
+<dt><code>arm_arch_v8a_hard</code></dt>
+<dd><p>Add options for ARMv8-A and the hard-float variant of the AAPCS,
+if this is supported by the compiler; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005farch_005fv8a_005fhard_005fok">arm_arch_v8a_hard_ok</a> effective target keyword.
+</p>
+</dd>
+<dt><code>arm_v8_1a_neon</code></dt>
+<dd><p>Add options for ARMv8.1-A with Adv.SIMD support, if this is supported
+by the target; see the <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f1a_005fneon_005fok">arm_v8_1a_neon_ok</a>
+effective target keyword.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_scalar</code></dt>
+<dd><p>Add options for ARMv8.2-A with scalar FP16 support, if this is
+supported by the target; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fscalar_005fok">arm_v8_2a_fp16_scalar_ok</a> effective
+target keyword.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_neon</code></dt>
+<dd><p>Add options for ARMv8.2-A with Adv.SIMD FP16 support, if this is
+supported by the target; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fneon_005fok">arm_v8_2a_fp16_neon_ok</a> effective target
+keyword.
+</p>
+</dd>
+<dt><code>arm_v8_2a_dotprod_neon</code></dt>
+<dd><p>Add options for ARMv8.2-A with Adv.SIMD Dot Product support, if this is
+supported by the target; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005fdotprod_005fneon_005fok">arm_v8_2a_dotprod_neon_ok</a> effective target keyword.
+</p>
+</dd>
+<dt><code>arm_fp16fml_neon</code></dt>
+<dd><p>Add options to enable generation of the <code>VFMAL</code> and <code>VFMSL</code>
+instructions, if this is supported by the target; see the
+<a href="Effective_002dTarget-Keywords.html#arm_005ffp16fml_005fneon_005fok">arm_fp16fml_neon_ok</a> effective target keyword.
+</p>
+</dd>
+<dt><code>arm_dsp</code></dt>
+<dd><p>Add options for ARM DSP intrinsics support, if this is supported by
+the target; see the <a href="Effective_002dTarget-Keywords.html#arm_005fdsp_005fok">arm_dsp_ok effective target
+keyword</a>.
+</p>
+</dd>
+<dt><code>bind_pic_locally</code></dt>
+<dd><p>Add the target-specific flags needed to enable functions to bind
+locally when using pic/PIC passes in the testsuite.
+</p>
+</dd>
+<dt><code>float<var>n</var></code></dt>
+<dd><p>Add the target-specific flags needed to use the <code>_Float<var>n</var></code> type.
+</p>
+</dd>
+<dt><code>float<var>n</var>x</code></dt>
+<dd><p>Add the target-specific flags needed to use the <code>_Float<var>n</var>x</code> type.
+</p>
+</dd>
+<dt><code>ieee</code></dt>
+<dd><p>Add the target-specific flags needed to enable full IEEE
+compliance mode.
+</p>
+</dd>
+<dt><code>mips16_attribute</code></dt>
+<dd><p><code>mips16</code> function attributes.
+Only MIPS targets support this feature, and only then in certain modes.
+</p>
+</dd>
+<dt><code>stack_size</code></dt>
+<dd><a name="stack_005fsize_005fao"></a><p>Add the flags needed to define macro STACK_SIZE and set it to the stack size
+limit associated with the <a href="Effective_002dTarget-Keywords.html#stack_005fsize_005fet"><code>stack_size</code> effective
+target</a>.
+</p>
+</dd>
+<dt><code>sqrt_insn</code></dt>
+<dd><p>Add the target-specific flags needed to enable hardware square root
+instructions, if any.
+</p>
+</dd>
+<dt><code>tls</code></dt>
+<dd><p>Add the target-specific flags needed to use thread-local storage.
+</p>
+</dd>
+<dt><code>weak_undefined</code></dt>
+<dd><p>Add the flags needed to enable support for weak undefined symbols.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Require-Support.html#Require-Support" accesskey="n" rel="next">Require Support</a>, Previous: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="p" rel="previous">Effective-Target Keywords</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Adding-a-new-GIMPLE-statement-code.html b/share/doc/gccint/Adding-a-new-GIMPLE-statement-code.html
new file mode 100644
index 0000000..efac41c
--- /dev/null
+++ b/share/doc/gccint/Adding-a-new-GIMPLE-statement-code.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Adding a new GIMPLE statement code</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Adding a new GIMPLE statement code">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Adding a new GIMPLE statement code">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Statement-and-operand-traversals.html#Statement-and-operand-traversals" rel="next" title="Statement and operand traversals">
+<link href="Sequence-iterators.html#Sequence-iterators" rel="previous" title="Sequence iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Adding-a-new-GIMPLE-statement-code"></a>
+<div class="header">
+<p>
+Next: <a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals" accesskey="n" rel="next">Statement and operand traversals</a>, Previous: <a href="Sequence-iterators.html#Sequence-iterators" accesskey="p" rel="previous">Sequence iterators</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adding-a-new-GIMPLE-statement-code-1"></a>
+<h3 class="section">12.11 Adding a new GIMPLE statement code</h3>
+<a name="index-Adding-a-new-GIMPLE-statement-code"></a>
+
+<p>The first step in adding a new GIMPLE statement code, is
+modifying the file <code>gimple.def</code>, which contains all the GIMPLE
+codes. Then you must add a corresponding gimple subclass
+located in <code>gimple.h</code>. This in turn, will require you to add a
+corresponding <code>GTY</code> tag in <code>gsstruct.def</code>, and code to handle
+this tag in <code>gss_for_code</code> which is located in <code>gimple.cc</code>.
+</p>
+<p>In order for the garbage collector to know the size of the
+structure you created in <code>gimple.h</code>, you need to add a case to
+handle your new GIMPLE statement in <code>gimple_size</code> which is located
+in <code>gimple.cc</code>.
+</p>
+<p>You will probably want to create a function to build the new
+gimple statement in <code>gimple.cc</code>. The function should be called
+<code>gimple_build_<var>new-tuple-name</var></code>, and should return the new tuple
+as a pointer to the appropriate gimple subclass.
+</p>
+<p>If your new statement requires accessors for any members or
+operands it may have, put simple inline accessors in
+<code>gimple.h</code> and any non-trivial accessors in <code>gimple.cc</code> with a
+corresponding prototype in <code>gimple.h</code>.
+</p>
+<p>You should add the new statement subclass to the class hierarchy diagram
+in <code>gimple.texi</code>.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Adding-new-DECL-node-types.html b/share/doc/gccint/Adding-new-DECL-node-types.html
new file mode 100644
index 0000000..4714c63
--- /dev/null
+++ b/share/doc/gccint/Adding-new-DECL-node-types.html
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Adding new DECL node types</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Adding new DECL node types">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Adding new DECL node types">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Internal-structure.html#Internal-structure" rel="up" title="Internal structure">
+<link href="Attributes.html#Attributes" rel="next" title="Attributes">
+<link href="Current-structure-hierarchy.html#Current-structure-hierarchy" rel="previous" title="Current structure hierarchy">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Adding-new-DECL-node-types"></a>
+<div class="header">
+<p>
+Previous: <a href="Current-structure-hierarchy.html#Current-structure-hierarchy" accesskey="p" rel="previous">Current structure hierarchy</a>, Up: <a href="Internal-structure.html#Internal-structure" accesskey="u" rel="up">Internal structure</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adding-new-DECL-node-types-1"></a>
+<h4 class="subsubsection">11.4.2.2 Adding new DECL node types</h4>
+
+<p>Adding a new <code>DECL</code> tree consists of the following steps
+</p>
+<dl compact="compact">
+<dt>Add a new tree code for the <code>DECL</code> node</dt>
+<dd><p>For language specific <code>DECL</code> nodes, there is a <samp>.def</samp> file
+in each frontend directory where the tree code should be added.
+For <code>DECL</code> nodes that are part of the middle-end, the code should
+be added to <samp>tree.def</samp>.
+</p>
+</dd>
+<dt>Create a new structure type for the <code>DECL</code> node</dt>
+<dd><p>These structures should inherit from one of the existing structures in
+the language hierarchy by using that structure as the first member.
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct tree_foo_decl
+{
+ struct tree_decl_with_vis common;
+}
+</pre></div>
+
+<p>Would create a structure name <code>tree_foo_decl</code> that inherits from
+<code>struct tree_decl_with_vis</code>.
+</p>
+<p>For language specific <code>DECL</code> nodes, this new structure type
+should go in the appropriate <samp>.h</samp> file.
+For <code>DECL</code> nodes that are part of the middle-end, the structure
+type should go in <samp>tree.h</samp>.
+</p>
+</dd>
+<dt>Add a member to the tree structure enumerator for the node</dt>
+<dd><p>For garbage collection and dynamic checking purposes, each <code>DECL</code>
+node structure type is required to have a unique enumerator value
+specified with it.
+For language specific <code>DECL</code> nodes, this new enumerator value
+should go in the appropriate <samp>.def</samp> file.
+For <code>DECL</code> nodes that are part of the middle-end, the enumerator
+values are specified in <samp>treestruct.def</samp>.
+</p>
+</dd>
+<dt>Update <code>union tree_node</code></dt>
+<dd><p>In order to make your new structure type usable, it must be added to
+<code>union tree_node</code>.
+For language specific <code>DECL</code> nodes, a new entry should be added
+to the appropriate <samp>.h</samp> file of the form
+</p><div class="smallexample">
+<pre class="smallexample"> struct tree_foo_decl GTY ((tag (&quot;TS_VAR_DECL&quot;))) foo_decl;
+</pre></div>
+<p>For <code>DECL</code> nodes that are part of the middle-end, the additional
+member goes directly into <code>union tree_node</code> in <samp>tree.h</samp>.
+</p>
+</dd>
+<dt>Update dynamic checking info</dt>
+<dd><p>In order to be able to check whether accessing a named portion of
+<code>union tree_node</code> is legal, and whether a certain <code>DECL</code> node
+contains one of the enumerated <code>DECL</code> node structures in the
+hierarchy, a simple lookup table is used.
+This lookup table needs to be kept up to date with the tree structure
+hierarchy, or else checking and containment macros will fail
+inappropriately.
+</p>
+<p>For language specific <code>DECL</code> nodes, there is an <code>init_ts</code>
+function in an appropriate <samp>.c</samp> file, which initializes the lookup
+table.
+Code setting up the table for new <code>DECL</code> nodes should be added
+there.
+For each <code>DECL</code> tree code and enumerator value representing a
+member of the inheritance hierarchy, the table should contain 1 if
+that tree code inherits (directly or indirectly) from that member.
+Thus, a <code>FOO_DECL</code> node derived from <code>struct decl_with_rtl</code>,
+and enumerator value <code>TS_FOO_DECL</code>, would be set up as follows
+</p><div class="smallexample">
+<pre class="smallexample">tree_contains_struct[FOO_DECL][TS_FOO_DECL] = 1;
+tree_contains_struct[FOO_DECL][TS_DECL_WRTL] = 1;
+tree_contains_struct[FOO_DECL][TS_DECL_COMMON] = 1;
+tree_contains_struct[FOO_DECL][TS_DECL_MINIMAL] = 1;
+</pre></div>
+
+<p>For <code>DECL</code> nodes that are part of the middle-end, the setup code
+goes into <samp>tree.cc</samp>.
+</p>
+</dd>
+<dt>Add macros to access any new fields and flags</dt>
+<dd>
+<p>Each added field or flag should have a macro that is used to access
+it, that performs appropriate checking to ensure only the right type of
+<code>DECL</code> nodes access the field.
+</p>
+<p>These macros generally take the following form
+</p><div class="smallexample">
+<pre class="smallexample">#define FOO_DECL_FIELDNAME(NODE) FOO_DECL_CHECK(NODE)-&gt;foo_decl.fieldname
+</pre></div>
+<p>However, if the structure is simply a base class for further
+structures, something like the following should be used
+</p><div class="smallexample">
+<pre class="smallexample">#define BASE_STRUCT_CHECK(T) CONTAINS_STRUCT_CHECK(T, TS_BASE_STRUCT)
+#define BASE_STRUCT_FIELDNAME(NODE) \
+ (BASE_STRUCT_CHECK(NODE)-&gt;base_struct.fieldname
+</pre></div>
+
+<p>Reading them from the generated <samp>all-tree.def</samp> file (which in
+turn includes all the <samp>tree.def</samp> files), <samp>gencheck.cc</samp> is
+used during GCC&rsquo;s build to generate the <code>*_CHECK</code> macros for all
+tree codes.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Current-structure-hierarchy.html#Current-structure-hierarchy" accesskey="p" rel="previous">Current structure hierarchy</a>, Up: <a href="Internal-structure.html#Internal-structure" accesskey="u" rel="up">Internal structure</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Addressing-Modes.html b/share/doc/gccint/Addressing-Modes.html
new file mode 100644
index 0000000..c3a9c21
--- /dev/null
+++ b/share/doc/gccint/Addressing-Modes.html
@@ -0,0 +1,783 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Addressing Modes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Addressing Modes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Addressing Modes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Anchored-Addresses.html#Anchored-Addresses" rel="next" title="Anchored Addresses">
+<link href="Library-Calls.html#Library-Calls" rel="previous" title="Library Calls">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Addressing-Modes"></a>
+<div class="header">
+<p>
+Next: <a href="Anchored-Addresses.html#Anchored-Addresses" accesskey="n" rel="next">Anchored Addresses</a>, Previous: <a href="Library-Calls.html#Library-Calls" accesskey="p" rel="previous">Library Calls</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Addressing-Modes-1"></a>
+<h3 class="section">18.13 Addressing Modes</h3>
+<a name="index-addressing-modes"></a>
+
+<p>This is about addressing modes.
+</p>
+<dl>
+<dt><a name="index-HAVE_005fPRE_005fINCREMENT"></a>Macro: <strong>HAVE_PRE_INCREMENT</strong></dt>
+<dt><a name="index-HAVE_005fPRE_005fDECREMENT"></a>Macro: <strong>HAVE_PRE_DECREMENT</strong></dt>
+<dt><a name="index-HAVE_005fPOST_005fINCREMENT"></a>Macro: <strong>HAVE_POST_INCREMENT</strong></dt>
+<dt><a name="index-HAVE_005fPOST_005fDECREMENT"></a>Macro: <strong>HAVE_POST_DECREMENT</strong></dt>
+<dd><p>A C expression that is nonzero if the machine supports pre-increment,
+pre-decrement, post-increment, or post-decrement addressing respectively.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HAVE_005fPRE_005fMODIFY_005fDISP"></a>Macro: <strong>HAVE_PRE_MODIFY_DISP</strong></dt>
+<dt><a name="index-HAVE_005fPOST_005fMODIFY_005fDISP"></a>Macro: <strong>HAVE_POST_MODIFY_DISP</strong></dt>
+<dd><p>A C expression that is nonzero if the machine supports pre- or
+post-address side-effect generation involving constants other than
+the size of the memory operand.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HAVE_005fPRE_005fMODIFY_005fREG"></a>Macro: <strong>HAVE_PRE_MODIFY_REG</strong></dt>
+<dt><a name="index-HAVE_005fPOST_005fMODIFY_005fREG"></a>Macro: <strong>HAVE_POST_MODIFY_REG</strong></dt>
+<dd><p>A C expression that is nonzero if the machine supports pre- or
+post-address side-effect generation involving a register displacement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CONSTANT_005fADDRESS_005fP"></a>Macro: <strong>CONSTANT_ADDRESS_P</strong> <em>(<var>x</var>)</em></dt>
+<dd><p>A C expression that is 1 if the RTX <var>x</var> is a constant which
+is a valid address. On most machines the default definition of
+<code>(CONSTANT_P (<var>x</var>) &amp;&amp; GET_CODE (<var>x</var>) != CONST_DOUBLE)</code>
+is acceptable, but a few machines are more restrictive as to which
+constant addresses are supported.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CONSTANT_005fP"></a>Macro: <strong>CONSTANT_P</strong> <em>(<var>x</var>)</em></dt>
+<dd><p><code>CONSTANT_P</code>, which is defined by target-independent code,
+accepts integer-values expressions whose values are not explicitly
+known, such as <code>symbol_ref</code>, <code>label_ref</code>, and <code>high</code>
+expressions and <code>const</code> arithmetic expressions, in addition to
+<code>const_int</code> and <code>const_double</code> expressions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fREGS_005fPER_005fADDRESS"></a>Macro: <strong>MAX_REGS_PER_ADDRESS</strong></dt>
+<dd><p>A number, the maximum number of registers that can appear in a valid
+memory address. Note that it is up to you to specify a value equal to
+the maximum number that <code>TARGET_LEGITIMATE_ADDRESS_P</code> would ever
+accept.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLEGITIMATE_005fADDRESS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_LEGITIMATE_ADDRESS_P</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>, bool <var>strict</var>)</em></dt>
+<dd><p>A function that returns whether <var>x</var> (an RTX) is a legitimate memory
+address on the target machine for a memory operand of mode <var>mode</var>.
+</p>
+<p>Legitimate addresses are defined in two variants: a strict variant and a
+non-strict one. The <var>strict</var> parameter chooses which variant is
+desired by the caller.
+</p>
+<p>The strict variant is used in the reload pass. It must be defined so
+that any pseudo-register that has not been allocated a hard register is
+considered a memory reference. This is because in contexts where some
+kind of register is required, a pseudo-register with no hard register
+must be rejected. For non-hard registers, the strict variant should look
+up the <code>reg_renumber</code> array; it should then proceed using the hard
+register number in the array, or treat the pseudo as a memory reference
+if the array holds <code>-1</code>.
+</p>
+<p>The non-strict variant is used in other passes. It must be defined to
+accept all pseudo-registers in every context where some kind of
+register is required.
+</p>
+<p>Normally, constant addresses which are the sum of a <code>symbol_ref</code>
+and an integer are stored inside a <code>const</code> RTX to mark them as
+constant. Therefore, there is no need to recognize such sums
+specifically as legitimate addresses. Normally you would simply
+recognize any <code>const</code> as legitimate.
+</p>
+<p>Usually <code>PRINT_OPERAND_ADDRESS</code> is not prepared to handle constant
+sums that are not marked with <code>const</code>. It assumes that a naked
+<code>plus</code> indicates indexing. If so, then you <em>must</em> reject such
+naked constant sums as illegitimate addresses, so that none of them will
+be given to <code>PRINT_OPERAND_ADDRESS</code>.
+</p>
+<a name="index-TARGET_005fENCODE_005fSECTION_005fINFO-and-address-validation"></a>
+<p>On some machines, whether a symbolic address is legitimate depends on
+the section that the address refers to. On these machines, define the
+target hook <code>TARGET_ENCODE_SECTION_INFO</code> to store the information
+into the <code>symbol_ref</code>, and then check for it here. When you see a
+<code>const</code>, you will have to look inside it to find the
+<code>symbol_ref</code> in order to determine the section. See <a href="Assembler-Format.html#Assembler-Format">Assembler Format</a>.
+</p>
+<a name="index-GO_005fIF_005fLEGITIMATE_005fADDRESS"></a>
+<p>Some ports are still using a deprecated legacy substitute for
+this hook, the <code>GO_IF_LEGITIMATE_ADDRESS</code> macro. This macro
+has this syntax:
+</p>
+<div class="example">
+<pre class="example">#define GO_IF_LEGITIMATE_ADDRESS (<var>mode</var>, <var>x</var>, <var>label</var>)
+</pre></div>
+
+<p>and should <code>goto <var>label</var></code> if the address <var>x</var> is a valid
+address on the target machine for a memory operand of mode <var>mode</var>.
+</p>
+<a name="index-REG_005fOK_005fSTRICT"></a>
+<p>Compiler source files that want to use the strict variant of this
+macro define the macro <code>REG_OK_STRICT</code>. You should use an
+<code>#ifdef REG_OK_STRICT</code> conditional to define the strict variant in
+that case and the non-strict variant otherwise.
+</p>
+<p>Using the hook is usually simpler because it limits the number of
+files that are recompiled when changes are made.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEM_005fCONSTRAINT"></a>Macro: <strong>TARGET_MEM_CONSTRAINT</strong></dt>
+<dd><p>A single character to be used instead of the default <code>'m'</code>
+character for general memory addresses. This defines the constraint
+letter which matches the memory addresses accepted by
+<code>TARGET_LEGITIMATE_ADDRESS_P</code>. Define this macro if you want to
+support new address formats in your back end without changing the
+semantics of the <code>'m'</code> constraint. This is necessary in order to
+preserve functionality of inline assembly constructs using the
+<code>'m'</code> constraint.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FIND_005fBASE_005fTERM"></a>Macro: <strong>FIND_BASE_TERM</strong> <em>(<var>x</var>)</em></dt>
+<dd><p>A C expression to determine the base term of address <var>x</var>,
+or to provide a simplified version of <var>x</var> from which <samp>alias.cc</samp>
+can easily find the base term. This macro is used in only two places:
+<code>find_base_value</code> and <code>find_base_term</code> in <samp>alias.cc</samp>.
+</p>
+<p>It is always safe for this macro to not be defined. It exists so
+that alias analysis can understand machine-dependent addresses.
+</p>
+<p>The typical use of this macro is to handle addresses containing
+a label_ref or symbol_ref within an UNSPEC.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLEGITIMIZE_005fADDRESS"></a>Target Hook: <em>rtx</em> <strong>TARGET_LEGITIMIZE_ADDRESS</strong> <em>(rtx <var>x</var>, rtx <var>oldx</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook is given an invalid memory address <var>x</var> for an
+operand of mode <var>mode</var> and should try to return a valid memory
+address.
+</p>
+<a name="index-break_005fout_005fmemory_005frefs"></a>
+<p><var>x</var> will always be the result of a call to <code>break_out_memory_refs</code>,
+and <var>oldx</var> will be the operand that was given to that function to produce
+<var>x</var>.
+</p>
+<p>The code of the hook should not alter the substructure of
+<var>x</var>. If it transforms <var>x</var> into a more legitimate form, it
+should return the new <var>x</var>.
+</p>
+<p>It is not necessary for this hook to come up with a legitimate address,
+with the exception of native TLS addresses (see <a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a>).
+The compiler has standard ways of doing so in all cases. In fact, if
+the target supports only emulated TLS, it
+is safe to omit this hook or make it return <var>x</var> if it cannot find
+a valid way to legitimize the address. But often a machine-dependent
+strategy can generate better code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LEGITIMIZE_005fRELOAD_005fADDRESS"></a>Macro: <strong>LEGITIMIZE_RELOAD_ADDRESS</strong> <em>(<var>x</var>, <var>mode</var>, <var>opnum</var>, <var>type</var>, <var>ind_levels</var>, <var>win</var>)</em></dt>
+<dd><p>A C compound statement that attempts to replace <var>x</var>, which is an address
+that needs reloading, with a valid memory address for an operand of mode
+<var>mode</var>. <var>win</var> will be a C statement label elsewhere in the code.
+It is not necessary to define this macro, but it might be useful for
+performance reasons.
+</p>
+<p>For example, on the i386, it is sometimes possible to use a single
+reload register instead of two by reloading a sum of two pseudo
+registers into a register. On the other hand, for number of RISC
+processors offsets are limited so that often an intermediate address
+needs to be generated in order to address a stack slot. By defining
+<code>LEGITIMIZE_RELOAD_ADDRESS</code> appropriately, the intermediate addresses
+generated for adjacent some stack slots can be made identical, and thus
+be shared.
+</p>
+<p><em>Note</em>: This macro should be used with caution. It is necessary
+to know something of how reload works in order to effectively use this,
+and it is quite easy to produce macros that build in too much knowledge
+of reload internals.
+</p>
+<p><em>Note</em>: This macro must be able to reload an address created by a
+previous invocation of this macro. If it fails to handle such addresses
+then the compiler may generate incorrect code or abort.
+</p>
+<a name="index-push_005freload"></a>
+<p>The macro definition should use <code>push_reload</code> to indicate parts that
+need reloading; <var>opnum</var>, <var>type</var> and <var>ind_levels</var> are usually
+suitable to be passed unaltered to <code>push_reload</code>.
+</p>
+<p>The code generated by this macro must not alter the substructure of
+<var>x</var>. If it transforms <var>x</var> into a more legitimate form, it
+should assign <var>x</var> (which will always be a C variable) a new value.
+This also applies to parts that you change indirectly by calling
+<code>push_reload</code>.
+</p>
+<a name="index-strict_005fmemory_005faddress_005fp"></a>
+<p>The macro definition may use <code>strict_memory_address_p</code> to test if
+the address has become legitimate.
+</p>
+<a name="index-copy_005frtx"></a>
+<p>If you want to change only a part of <var>x</var>, one standard way of doing
+this is to use <code>copy_rtx</code>. Note, however, that it unshares only a
+single level of rtl. Thus, if the part to be changed is not at the
+top level, you&rsquo;ll need to replace first the top level.
+It is not necessary for this macro to come up with a legitimate
+address; but often a machine-dependent strategy can generate better code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fDEPENDENT_005fADDRESS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_MODE_DEPENDENT_ADDRESS_P</strong> <em>(const_rtx <var>addr</var>, addr_space_t <var>addrspace</var>)</em></dt>
+<dd><p>This hook returns <code>true</code> if memory address <var>addr</var> in address
+space <var>addrspace</var> can have
+different meanings depending on the machine mode of the memory
+reference it is used for or if the address is valid for some modes
+but not others.
+</p>
+<p>Autoincrement and autodecrement addresses typically have mode-dependent
+effects because the amount of the increment or decrement is the size
+of the operand being addressed. Some machines have other mode-dependent
+addresses. Many RISC machines have no mode-dependent addresses.
+</p>
+<p>You may assume that <var>addr</var> is a valid address for the machine.
+</p>
+<p>The default version of this hook returns <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLEGITIMATE_005fCONSTANT_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_LEGITIMATE_CONSTANT_P</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>)</em></dt>
+<dd><p>This hook returns true if <var>x</var> is a legitimate constant for a
+<var>mode</var>-mode immediate operand on the target machine. You can assume that
+<var>x</var> satisfies <code>CONSTANT_P</code>, so you need not check this.
+</p>
+<p>The default definition returns true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPRECOMPUTE_005fTLS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_PRECOMPUTE_TLS_P</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>)</em></dt>
+<dd><p>This hook returns true if <var>x</var> is a TLS operand on the target
+machine that should be pre-computed when used as the argument in a call.
+You can assume that <var>x</var> satisfies <code>CONSTANT_P</code>, so you need not
+check this.
+</p>
+<p>The default definition returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDELEGITIMIZE_005fADDRESS"></a>Target Hook: <em>rtx</em> <strong>TARGET_DELEGITIMIZE_ADDRESS</strong> <em>(rtx <var>x</var>)</em></dt>
+<dd><p>This hook is used to undo the possibly obfuscating effects of the
+<code>LEGITIMIZE_ADDRESS</code> and <code>LEGITIMIZE_RELOAD_ADDRESS</code> target
+macros. Some backend implementations of these macros wrap symbol
+references inside an <code>UNSPEC</code> rtx to represent PIC or similar
+addressing modes. This target hook allows GCC&rsquo;s optimizers to understand
+the semantics of these opaque <code>UNSPEC</code>s by converting them back
+into their original form.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCONST_005fNOT_005fOK_005fFOR_005fDEBUG_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CONST_NOT_OK_FOR_DEBUG_P</strong> <em>(rtx <var>x</var>)</em></dt>
+<dd><p>This hook should return true if <var>x</var> should not be emitted into
+debug sections.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCANNOT_005fFORCE_005fCONST_005fMEM"></a>Target Hook: <em>bool</em> <strong>TARGET_CANNOT_FORCE_CONST_MEM</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>)</em></dt>
+<dd><p>This hook should return true if <var>x</var> is of a form that cannot (or
+should not) be spilled to the constant pool. <var>mode</var> is the mode
+of <var>x</var>.
+</p>
+<p>The default version of this hook returns false.
+</p>
+<p>The primary reason to define this hook is to prevent reload from
+deciding that a non-legitimate constant would be better reloaded
+from the constant pool instead of spilling and reloading a register
+holding the constant. This restriction is often true of addresses
+of TLS symbols for various targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSE_005fBLOCKS_005fFOR_005fCONSTANT_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_USE_BLOCKS_FOR_CONSTANT_P</strong> <em>(machine_mode <var>mode</var>, const_rtx <var>x</var>)</em></dt>
+<dd><p>This hook should return true if pool entries for constant <var>x</var> can
+be placed in an <code>object_block</code> structure. <var>mode</var> is the mode
+of <var>x</var>.
+</p>
+<p>The default version returns false for all constants.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSE_005fBLOCKS_005fFOR_005fDECL_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_USE_BLOCKS_FOR_DECL_P</strong> <em>(const_tree <var>decl</var>)</em></dt>
+<dd><p>This hook should return true if pool entries for <var>decl</var> should
+be placed in an <code>object_block</code> structure.
+</p>
+<p>The default version returns true for all decls.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fBUILTIN_005fRECIPROCAL"></a>Target Hook: <em>tree</em> <strong>TARGET_BUILTIN_RECIPROCAL</strong> <em>(tree <var>fndecl</var>)</em></dt>
+<dd><p>This hook should return the DECL of a function that implements the
+reciprocal of the machine-specific builtin function <var>fndecl</var>, or
+<code>NULL_TREE</code> if such a function is not available.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fMASK_005fFOR_005fLOAD"></a>Target Hook: <em>tree</em> <strong>TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD</strong> <em>(void)</em></dt>
+<dd><p>This hook should return the DECL of a function <var>f</var> that given an
+address <var>addr</var> as an argument returns a mask <var>m</var> that can be
+used to extract from two vectors the relevant data that resides in
+<var>addr</var> in case <var>addr</var> is not properly aligned.
+</p>
+<p>The autovectorizer, when vectorizing a load operation from an address
+<var>addr</var> that may be unaligned, will generate two vector loads from
+the two aligned addresses around <var>addr</var>. It then generates a
+<code>REALIGN_LOAD</code> operation to extract the relevant data from the
+two loaded vectors. The first two arguments to <code>REALIGN_LOAD</code>,
+<var>v1</var> and <var>v2</var>, are the two vectors, each of size <var>VS</var>, and
+the third argument, <var>OFF</var>, defines how the data will be extracted
+from these two vectors: if <var>OFF</var> is 0, then the returned vector is
+<var>v2</var>; otherwise, the returned vector is composed from the last
+<var>VS</var>-<var>OFF</var> elements of <var>v1</var> concatenated to the first
+<var>OFF</var> elements of <var>v2</var>.
+</p>
+<p>If this hook is defined, the autovectorizer will generate a call
+to <var>f</var> (using the DECL tree that this hook returns) and will
+use the return value of <var>f</var> as the argument <var>OFF</var> to
+<code>REALIGN_LOAD</code>. Therefore, the mask <var>m</var> returned by <var>f</var>
+should comply with the semantics expected by <code>REALIGN_LOAD</code>
+described above.
+If this hook is not defined, then <var>addr</var> will be used as
+the argument <var>OFF</var> to <code>REALIGN_LOAD</code>, in which case the low
+log2(<var>VS</var>) - 1 bits of <var>addr</var> will be considered.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fVECTORIZATION_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST</strong> <em>(enum vect_cost_for_stmt <var>type_of_cost</var>, tree <var>vectype</var>, int <var>misalign</var>)</em></dt>
+<dd><p>Returns cost of different scalar or vector statements for vectorization cost model.
+For vector memory operations the cost may depend on type (<var>vectype</var>) and
+misalignment value (<var>misalign</var>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fPREFERRED_005fVECTOR_005fALIGNMENT"></a>Target Hook: <em>poly_uint64</em> <strong>TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>This hook returns the preferred alignment in bits for accesses to
+vectors of type <var>type</var> in vectorized code. This might be less than
+or greater than the ABI-defined value returned by
+<code>TARGET_VECTOR_ALIGNMENT</code>. It can be equal to the alignment of
+a single element, in which case the vectorizer will not try to optimize
+for alignment.
+</p>
+<p>The default hook returns <code>TYPE_ALIGN (<var>type</var>)</code>, which is
+correct for most targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fVECTOR_005fALIGNMENT_005fREACHABLE"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE</strong> <em>(const_tree <var>type</var>, bool <var>is_packed</var>)</em></dt>
+<dd><p>Return true if vector alignment is reachable (by peeling N iterations)
+for the given scalar type <var>type</var>. <var>is_packed</var> is false if the scalar
+access using <var>type</var> is known to be naturally aligned.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fVEC_005fPERM_005fCONST"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTORIZE_VEC_PERM_CONST</strong> <em>(machine_mode <var>mode</var>, machine_mode <var>op_mode</var>, rtx <var>output</var>, rtx <var>in0</var>, rtx <var>in1</var>, const vec_perm_indices <var>&amp;sel</var>)</em></dt>
+<dd><p>This hook is used to test whether the target can permute up to two
+vectors of mode <var>op_mode</var> using the permutation vector <code>sel</code>,
+producing a vector of mode <var>mode</var>. The hook is also used to emit such
+a permutation.
+</p>
+<p>When the hook is being used to test whether the target supports a permutation,
+<var>in0</var>, <var>in1</var>, and <var>out</var> are all null. When the hook is being used
+to emit a permutation, <var>in0</var> and <var>in1</var> are the source vectors of mode
+<var>op_mode</var> and <var>out</var> is the destination vector of mode <var>mode</var>.
+<var>in1</var> is the same as <var>in0</var> if <var>sel</var> describes a permutation on one
+vector instead of two.
+</p>
+<p>Return true if the operation is possible, emitting instructions for it
+if rtxes are provided.
+</p>
+<a name="index-vec_005fpermm-instruction-pattern-1"></a>
+<p>If the hook returns false for a mode with multibyte elements, GCC will
+try the equivalent byte operation. If that also fails, it will try forcing
+the selector into a register and using the <var>vec_perm<var>mode</var></var>
+instruction pattern. There is no need for the hook to handle these two
+implementation approaches itself.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fPREFERRED_005fDIV_005fAS_005fSHIFTS_005fOVER_005fMULT"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>Sometimes it is possible to implement a vector division using a sequence
+of two addition-shift pairs, giving four instructions in total.
+Return true if taking this approach for <var>vectype</var> is likely
+to be better than using a sequence involving highpart multiplication.
+Default is false if <code>can_mult_highpart_p</code>, otherwise true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fVECTORIZED_005fFUNCTION"></a>Target Hook: <em>tree</em> <strong>TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION</strong> <em>(unsigned <var>code</var>, tree <var>vec_type_out</var>, tree <var>vec_type_in</var>)</em></dt>
+<dd><p>This hook should return the decl of a function that implements the
+vectorized variant of the function with the <code>combined_fn</code> code
+<var>code</var> or <code>NULL_TREE</code> if such a function is not available.
+The return type of the vectorized function shall be of vector type
+<var>vec_type_out</var> and the argument types should be <var>vec_type_in</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fMD_005fVECTORIZED_005fFUNCTION"></a>Target Hook: <em>tree</em> <strong>TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION</strong> <em>(tree <var>fndecl</var>, tree <var>vec_type_out</var>, tree <var>vec_type_in</var>)</em></dt>
+<dd><p>This hook should return the decl of a function that implements the
+vectorized variant of target built-in function <code>fndecl</code>. The
+return type of the vectorized function shall be of vector type
+<var>vec_type_out</var> and the argument types should be <var>vec_type_in</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fSUPPORT_005fVECTOR_005fMISALIGNMENT"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT</strong> <em>(machine_mode <var>mode</var>, const_tree <var>type</var>, int <var>misalignment</var>, bool <var>is_packed</var>)</em></dt>
+<dd><p>This hook should return true if the target supports misaligned vector
+store/load of a specific factor denoted in the <var>misalignment</var>
+parameter. The vector store/load should be of machine mode <var>mode</var> and
+the elements in the vectors should be of type <var>type</var>. <var>is_packed</var>
+parameter is true if the memory access is defined in a packed struct.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fPREFERRED_005fSIMD_005fMODE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_VECTORIZE_PREFERRED_SIMD_MODE</strong> <em>(scalar_mode <var>mode</var>)</em></dt>
+<dd><p>This hook should return the preferred mode for vectorizing scalar
+mode <var>mode</var>. The default is
+equal to <code>word_mode</code>, because the vectorizer can do some
+transformations even in absence of specialized <acronym>SIMD</acronym> hardware.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fSPLIT_005fREDUCTION"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_VECTORIZE_SPLIT_REDUCTION</strong> <em>(machine_mode)</em></dt>
+<dd><p>This hook should return the preferred mode to split the final reduction
+step on <var>mode</var> to. The reduction is then carried out reducing upper
+against lower halves of vectors recursively until the specified mode is
+reached. The default is <var>mode</var> which means no splitting.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fAUTOVECTORIZE_005fVECTOR_005fMODES"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES</strong> <em>(vector_modes *<var>modes</var>, bool <var>all</var>)</em></dt>
+<dd><p>If using the mode returned by <code>TARGET_VECTORIZE_PREFERRED_SIMD_MODE</code>
+is not the only approach worth considering, this hook should add one mode to
+<var>modes</var> for each useful alternative approach. These modes are then
+passed to <code>TARGET_VECTORIZE_RELATED_MODE</code> to obtain the vector mode
+for a given element mode.
+</p>
+<p>The modes returned in <var>modes</var> should use the smallest element mode
+possible for the vectorization approach that they represent, preferring
+integer modes over floating-poing modes in the event of a tie. The first
+mode should be the <code>TARGET_VECTORIZE_PREFERRED_SIMD_MODE</code> for its
+element mode.
+</p>
+<p>If <var>all</var> is true, add suitable vector modes even when they are generally
+not expected to be worthwhile.
+</p>
+<p>The hook returns a bitmask of flags that control how the modes in
+<var>modes</var> are used. The flags are:
+</p><dl compact="compact">
+<dt><code>VECT_COMPARE_COSTS</code></dt>
+<dd><p>Tells the loop vectorizer to try all the provided modes and pick the one
+with the lowest cost. By default the vectorizer will choose the first
+mode that works.
+</p></dd>
+</dl>
+
+<p>The hook does not need to do anything if the vector returned by
+<code>TARGET_VECTORIZE_PREFERRED_SIMD_MODE</code> is the only one relevant
+for autovectorization. The default implementation adds no modes and
+returns 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fRELATED_005fMODE"></a>Target Hook: <em>opt_machine_mode</em> <strong>TARGET_VECTORIZE_RELATED_MODE</strong> <em>(machine_mode <var>vector_mode</var>, scalar_mode <var>element_mode</var>, poly_uint64 <var>nunits</var>)</em></dt>
+<dd><p>If a piece of code is using vector mode <var>vector_mode</var> and also wants
+to operate on elements of mode <var>element_mode</var>, return the vector mode
+it should use for those elements. If <var>nunits</var> is nonzero, ensure that
+the mode has exactly <var>nunits</var> elements, otherwise pick whichever vector
+size pairs the most naturally with <var>vector_mode</var>. Return an empty
+<code>opt_machine_mode</code> if there is no supported vector mode with the
+required properties.
+</p>
+<p>There is no prescribed way of handling the case in which <var>nunits</var>
+is zero. One common choice is to pick a vector mode with the same size
+as <var>vector_mode</var>; this is the natural choice if the target has a
+fixed vector size. Another option is to choose a vector mode with the
+same number of elements as <var>vector_mode</var>; this is the natural choice
+if the target has a fixed number of elements. Alternatively, the hook
+might choose a middle ground, such as trying to keep the number of
+elements as similar as possible while applying maximum and minimum
+vector sizes.
+</p>
+<p>The default implementation uses <code>mode_for_vector</code> to find the
+requested mode, returning a mode with the same size as <var>vector_mode</var>
+when <var>nunits</var> is zero. This is the correct behavior for most targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fGET_005fMASK_005fMODE"></a>Target Hook: <em>opt_machine_mode</em> <strong>TARGET_VECTORIZE_GET_MASK_MODE</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>Return the mode to use for a vector mask that holds one boolean
+result for each element of vector mode <var>mode</var>. The returned mask mode
+can be a vector of integers (class <code>MODE_VECTOR_INT</code>), a vector of
+booleans (class <code>MODE_VECTOR_BOOL</code>) or a scalar integer (class
+<code>MODE_INT</code>). Return an empty <code>opt_machine_mode</code> if no such
+mask mode exists.
+</p>
+<p>The default implementation returns a <code>MODE_VECTOR_INT</code> with the
+same size and number of elements as <var>mode</var>, if such a mode exists.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fEMPTY_005fMASK_005fIS_005fEXPENSIVE"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE</strong> <em>(unsigned <var>ifn</var>)</em></dt>
+<dd><p>This hook returns true if masked internal function <var>ifn</var> (really of
+type <code>internal_fn</code>) should be considered expensive when the mask is
+all zeros. GCC can then try to branch around the instruction instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fCREATE_005fCOSTS"></a>Target Hook: <em>class vector_costs *</em> <strong>TARGET_VECTORIZE_CREATE_COSTS</strong> <em>(vec_info *<var>vinfo</var>, bool <var>costing_for_scalar</var>)</em></dt>
+<dd><p>This hook should initialize target-specific data structures in preparation
+for modeling the costs of vectorizing a loop or basic block. The default
+allocates three unsigned integers for accumulating costs for the prologue,
+body, and epilogue of the loop or basic block. If <var>loop_info</var> is
+non-NULL, it identifies the loop being vectorized; otherwise a single block
+is being vectorized. If <var>costing_for_scalar</var> is true, it indicates the
+current cost model is for the scalar version of a loop or block; otherwise
+it is for the vector version.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fGATHER"></a>Target Hook: <em>tree</em> <strong>TARGET_VECTORIZE_BUILTIN_GATHER</strong> <em>(const_tree <var>mem_vectype</var>, const_tree <var>index_type</var>, int <var>scale</var>)</em></dt>
+<dd><p>Target builtin that implements vector gather operation. <var>mem_vectype</var>
+is the vector type of the load and <var>index_type</var> is scalar type of
+the index, scaled by <var>scale</var>.
+The default is <code>NULL_TREE</code> which means to not vectorize gather
+loads.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTORIZE_005fBUILTIN_005fSCATTER"></a>Target Hook: <em>tree</em> <strong>TARGET_VECTORIZE_BUILTIN_SCATTER</strong> <em>(const_tree <var>vectype</var>, const_tree <var>index_type</var>, int <var>scale</var>)</em></dt>
+<dd><p>Target builtin that implements vector scatter operation. <var>vectype</var>
+is the vector type of the store and <var>index_type</var> is scalar type of
+the index, scaled by <var>scale</var>.
+The default is <code>NULL_TREE</code> which means to not vectorize scatter
+stores.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSIMD_005fCLONE_005fCOMPUTE_005fVECSIZE_005fAND_005fSIMDLEN"></a>Target Hook: <em>int</em> <strong>TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN</strong> <em>(struct cgraph_node *<var></var>, struct cgraph_simd_clone *<var></var>, <var>tree</var>, <var>int</var>, <var>bool</var>)</em></dt>
+<dd><p>This hook should set <var>vecsize_mangle</var>, <var>vecsize_int</var>, <var>vecsize_float</var>
+fields in <var>simd_clone</var> structure pointed by <var>clone_info</var> argument and also
+<var>simdlen</var> field if it was previously 0.
+<var>vecsize_mangle</var> is a marker for the backend only. <var>vecsize_int</var> and
+<var>vecsize_float</var> should be left zero on targets where the number of lanes is
+not determined by the bitsize (in which case <var>simdlen</var> is always used).
+The hook should return 0 if SIMD clones shouldn&rsquo;t be emitted,
+or number of <var>vecsize_mangle</var> variants that should be emitted.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSIMD_005fCLONE_005fADJUST"></a>Target Hook: <em>void</em> <strong>TARGET_SIMD_CLONE_ADJUST</strong> <em>(struct cgraph_node *<var></var>)</em></dt>
+<dd><p>This hook should add implicit <code>attribute(target(&quot;...&quot;))</code> attribute
+to SIMD clone <var>node</var> if needed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSIMD_005fCLONE_005fUSABLE"></a>Target Hook: <em>int</em> <strong>TARGET_SIMD_CLONE_USABLE</strong> <em>(struct cgraph_node *<var></var>)</em></dt>
+<dd><p>This hook should return -1 if SIMD clone <var>node</var> shouldn&rsquo;t be used
+in vectorized loops in current function, or non-negative number if it is
+usable. In that case, the smaller the number is, the more desirable it is
+to use it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSIMT_005fVF"></a>Target Hook: <em>int</em> <strong>TARGET_SIMT_VF</strong> <em>(void)</em></dt>
+<dd><p>Return number of threads in SIMT thread group on the target.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOMP_005fDEVICE_005fKIND_005fARCH_005fISA"></a>Target Hook: <em>int</em> <strong>TARGET_OMP_DEVICE_KIND_ARCH_ISA</strong> <em>(enum omp_device_kind_arch_isa <var>trait</var>, const char *<var>name</var>)</em></dt>
+<dd><p>Return 1 if <var>trait</var> <var>name</var> is present in the OpenMP context&rsquo;s
+device trait set, return 0 if not present in any OpenMP context in the
+whole translation unit, or -1 if not present in the current OpenMP context
+but might be present in another OpenMP context in the same TU.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fVALIDATE_005fDIMS"></a>Target Hook: <em>bool</em> <strong>TARGET_GOACC_VALIDATE_DIMS</strong> <em>(tree <var>decl</var>, int *<var>dims</var>, int <var>fn_level</var>, unsigned <var>used</var>)</em></dt>
+<dd><p>This hook should check the launch dimensions provided for an OpenACC
+compute region, or routine. Defaulted values are represented as -1
+and non-constant values as 0. The <var>fn_level</var> is negative for the
+function corresponding to the compute region. For a routine it is the
+outermost level at which partitioned execution may be spawned. The hook
+should verify non-default values. If DECL is NULL, global defaults
+are being validated and unspecified defaults should be filled in.
+Diagnostics should be issued as appropriate. Return
+true, if changes have been made. You must override this hook to
+provide dimensions larger than 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fDIM_005fLIMIT"></a>Target Hook: <em>int</em> <strong>TARGET_GOACC_DIM_LIMIT</strong> <em>(int <var>axis</var>)</em></dt>
+<dd><p>This hook should return the maximum size of a particular dimension,
+or zero if unbounded.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fFORK_005fJOIN"></a>Target Hook: <em>bool</em> <strong>TARGET_GOACC_FORK_JOIN</strong> <em>(gcall *<var>call</var>, const int *<var>dims</var>, bool <var>is_fork</var>)</em></dt>
+<dd><p>This hook can be used to convert IFN_GOACC_FORK and IFN_GOACC_JOIN
+function calls to target-specific gimple, or indicate whether they
+should be retained. It is executed during the oacc_device_lower pass.
+It should return true, if the call should be retained. It should
+return false, if it is to be deleted (either because target-specific
+gimple has been inserted before it, or there is no need for it).
+The default hook returns false, if there are no RTL expanders for them.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fREDUCTION"></a>Target Hook: <em>void</em> <strong>TARGET_GOACC_REDUCTION</strong> <em>(gcall *<var>call</var>)</em></dt>
+<dd><p>This hook is used by the oacc_transform pass to expand calls to the
+<var>GOACC_REDUCTION</var> internal function, into a sequence of gimple
+instructions. <var>call</var> is gimple statement containing the call to
+the function. This hook removes statement <var>call</var> after the
+expanded sequence has been inserted. This hook is also responsible
+for allocating any storage for reductions when necessary.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREFERRED_005fELSE_005fVALUE"></a>Target Hook: <em>tree</em> <strong>TARGET_PREFERRED_ELSE_VALUE</strong> <em>(unsigned <var>ifn</var>, tree <var>type</var>, unsigned <var>nops</var>, tree *<var>ops</var>)</em></dt>
+<dd><p>This hook returns the target&rsquo;s preferred final argument for a call
+to conditional internal function <var>ifn</var> (really of type
+<code>internal_fn</code>). <var>type</var> specifies the return type of the
+function and <var>ops</var> are the operands to the conditional operation,
+of which there are <var>nops</var>.
+</p>
+<p>For example, if <var>ifn</var> is <code>IFN_COND_ADD</code>, the hook returns
+a value of type <var>type</var> that should be used when &lsquo;<samp><var>ops</var>[0]</samp>&rsquo;
+and &lsquo;<samp><var>ops</var>[1]</samp>&rsquo; are conditionally added together.
+</p>
+<p>This hook is only relevant if the target supports conditional patterns
+like <code>cond_add<var>m</var></code>. The default implementation returns a zero
+constant of type <var>type</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fADJUST_005fPRIVATE_005fDECL"></a>Target Hook: <em>tree</em> <strong>TARGET_GOACC_ADJUST_PRIVATE_DECL</strong> <em>(location_t <var>loc</var>, tree <var>var</var>, int <var>level</var>)</em></dt>
+<dd><p>This hook, if defined, is used by accelerator target back-ends to adjust
+OpenACC variable declarations that should be made private to the given
+parallelism level (i.e. <code>GOMP_DIM_GANG</code>, <code>GOMP_DIM_WORKER</code> or
+<code>GOMP_DIM_VECTOR</code>). A typical use for this hook is to force variable
+declarations at the <code>gang</code> level to reside in GPU shared memory.
+<var>loc</var> may be used for diagnostic purposes.
+</p>
+<p>You may also use the <code>TARGET_GOACC_EXPAND_VAR_DECL</code> hook if the
+adjusted variable declaration needs to be expanded to RTL in a non-standard
+way.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fEXPAND_005fVAR_005fDECL"></a>Target Hook: <em>rtx</em> <strong>TARGET_GOACC_EXPAND_VAR_DECL</strong> <em>(tree <var>var</var>)</em></dt>
+<dd><p>This hook, if defined, is used by accelerator target back-ends to expand
+specially handled kinds of <code>VAR_DECL</code> expressions. A particular use is
+to place variables with specific attributes inside special accelarator
+memories. A return value of <code>NULL</code> indicates that the target does not
+handle this <code>VAR_DECL</code>, and normal RTL expanding is resumed.
+</p>
+<p>Only define this hook if your accelerator target needs to expand certain
+<code>VAR_DECL</code> nodes in a way that differs from the default. You can also adjust
+private variables at OpenACC device-lowering time using the
+<code>TARGET_GOACC_ADJUST_PRIVATE_DECL</code> target hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fCREATE_005fWORKER_005fBROADCAST_005fRECORD"></a>Target Hook: <em>tree</em> <strong>TARGET_GOACC_CREATE_WORKER_BROADCAST_RECORD</strong> <em>(tree <var>rec</var>, bool <var>sender</var>, const char *<var>name</var>, unsigned HOST_WIDE_INT <var>offset</var>)</em></dt>
+<dd><p>Create a record used to propagate local-variable state from an active
+worker to other workers. A possible implementation might adjust the type
+of REC to place the new variable in shared GPU memory.
+</p>
+<p>Presence of this target hook indicates that middle end neutering/broadcasting
+be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGOACC_005fSHARED_005fMEM_005fLAYOUT"></a>Target Hook: <em>void</em> <strong>TARGET_GOACC_SHARED_MEM_LAYOUT</strong> <em>(unsigned HOST_WIDE_INT *<var></var>, unsigned HOST_WIDE_INT *<var></var>, <var>int[]</var>, unsigned <var>HOST_WIDE_INT[]</var>, unsigned <var>HOST_WIDE_INT[]</var>)</em></dt>
+<dd><p>Lay out a fixed shared-memory region on the target. The LO and HI
+arguments should be set to a range of addresses that can be used for worker
+broadcasting. The dimensions, reduction size and gang-private size
+arguments are for the current offload region.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Anchored-Addresses.html#Anchored-Addresses" accesskey="n" rel="next">Anchored Addresses</a>, Previous: <a href="Library-Calls.html#Library-Calls" accesskey="p" rel="previous">Library Calls</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Aggregate-Return.html b/share/doc/gccint/Aggregate-Return.html
new file mode 100644
index 0000000..35dcee3
--- /dev/null
+++ b/share/doc/gccint/Aggregate-Return.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Aggregate Return</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Aggregate Return">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Aggregate Return">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Caller-Saves.html#Caller-Saves" rel="next" title="Caller Saves">
+<link href="Scalar-Return.html#Scalar-Return" rel="previous" title="Scalar Return">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Aggregate-Return"></a>
+<div class="header">
+<p>
+Next: <a href="Caller-Saves.html#Caller-Saves" accesskey="n" rel="next">Caller Saves</a>, Previous: <a href="Scalar-Return.html#Scalar-Return" accesskey="p" rel="previous">Scalar Return</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-Large-Values-Are-Returned"></a>
+<h4 class="subsection">18.9.9 How Large Values Are Returned</h4>
+<a name="index-aggregates-as-return-values"></a>
+<a name="index-large-return-values"></a>
+<a name="index-returning-aggregate-values"></a>
+<a name="index-structure-value-address"></a>
+
+<p>When a function value&rsquo;s mode is <code>BLKmode</code> (and in some other
+cases), the value is not returned according to
+<code>TARGET_FUNCTION_VALUE</code> (see <a href="Scalar-Return.html#Scalar-Return">Scalar Return</a>). Instead, the
+caller passes the address of a block of memory in which the value
+should be stored. This address is called the <em>structure value
+address</em>.
+</p>
+<p>This section describes how to control returning structure values in
+memory.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fRETURN_005fIN_005fMEMORY"></a>Target Hook: <em>bool</em> <strong>TARGET_RETURN_IN_MEMORY</strong> <em>(const_tree <var>type</var>, const_tree <var>fntype</var>)</em></dt>
+<dd><p>This target hook should return a nonzero value to say to return the
+function value in memory, just as large structures are always returned.
+Here <var>type</var> will be the data type of the value, and <var>fntype</var>
+will be the type of the function doing the returning, or <code>NULL</code> for
+libcalls.
+</p>
+<p>Note that values of mode <code>BLKmode</code> must be explicitly handled
+by this function. Also, the option <samp>-fpcc-struct-return</samp>
+takes effect regardless of this macro. On most systems, it is
+possible to leave the hook undefined; this causes a default
+definition to be used, whose value is the constant 1 for <code>BLKmode</code>
+values, and 0 otherwise.
+</p>
+<p>Do not use this hook to indicate that structures and unions should always
+be returned in memory. You should instead use <code>DEFAULT_PCC_STRUCT_RETURN</code>
+to indicate this.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEFAULT_005fPCC_005fSTRUCT_005fRETURN"></a>Macro: <strong>DEFAULT_PCC_STRUCT_RETURN</strong></dt>
+<dd><p>Define this macro to be 1 if all structure and union return values must be
+in memory. Since this results in slower code, this should be defined
+only if needed for compatibility with other compilers or with an ABI.
+If you define this macro to be 0, then the conventions used for structure
+and union return values are decided by the <code>TARGET_RETURN_IN_MEMORY</code>
+target hook.
+</p>
+<p>If not defined, this defaults to the value 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTRUCT_005fVALUE_005fRTX"></a>Target Hook: <em>rtx</em> <strong>TARGET_STRUCT_VALUE_RTX</strong> <em>(tree <var>fndecl</var>, int <var>incoming</var>)</em></dt>
+<dd><p>This target hook should return the location of the structure value
+address (normally a <code>mem</code> or <code>reg</code>), or 0 if the address is
+passed as an &ldquo;invisible&rdquo; first argument. Note that <var>fndecl</var> may
+be <code>NULL</code>, for libcalls. You do not need to define this target
+hook if the address is always passed as an &ldquo;invisible&rdquo; first
+argument.
+</p>
+<p>On some architectures the place where the structure value address
+is found by the called function is not the same place that the
+caller put it. This can be due to register windows, or it could
+be because the function prologue moves it to a different place.
+<var>incoming</var> is <code>1</code> or <code>2</code> when the location is needed in
+the context of the called function, and <code>0</code> in the context of
+the caller.
+</p>
+<p>If <var>incoming</var> is nonzero and the address is to be found on the
+stack, return a <code>mem</code> which refers to the frame pointer. If
+<var>incoming</var> is <code>2</code>, the result is being used to fetch the
+structure value address at the beginning of a function. If you need
+to emit adjusting code, you should do it at this point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PCC_005fSTATIC_005fSTRUCT_005fRETURN"></a>Macro: <strong>PCC_STATIC_STRUCT_RETURN</strong></dt>
+<dd><p>Define this macro if the usual system convention on the target machine
+for returning structures and unions is for the called function to return
+the address of a static variable containing the value.
+</p>
+<p>Do not define this if the usual system convention is for the caller to
+pass an address to the subroutine.
+</p>
+<p>This macro has effect in <samp>-fpcc-struct-return</samp> mode, but it does
+nothing when you use <samp>-freg-struct-return</samp> mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fRAW_005fRESULT_005fMODE"></a>Target Hook: <em>fixed_size_mode</em> <strong>TARGET_GET_RAW_RESULT_MODE</strong> <em>(int <var>regno</var>)</em></dt>
+<dd><p>This target hook returns the mode to be used when accessing raw return
+registers in <code>__builtin_return</code>. Define this macro if the value
+in <var>reg_raw_mode</var> is not correct. Use <code>VOIDmode</code> if a register
+should be ignored for <code>__builtin_return</code> purposes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fRAW_005fARG_005fMODE"></a>Target Hook: <em>fixed_size_mode</em> <strong>TARGET_GET_RAW_ARG_MODE</strong> <em>(int <var>regno</var>)</em></dt>
+<dd><p>This target hook returns the mode to be used when accessing raw argument
+registers in <code>__builtin_apply_args</code>. Define this macro if the value
+in <var>reg_raw_mode</var> is not correct. Use <code>VOIDmode</code> if a register
+should be ignored for <code>__builtin_apply_args</code> purposes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMPTY_005fRECORD_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_EMPTY_RECORD_P</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>This target hook returns true if the type is an empty record. The default
+is to return <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fWARN_005fPARAMETER_005fPASSING_005fABI"></a>Target Hook: <em>void</em> <strong>TARGET_WARN_PARAMETER_PASSING_ABI</strong> <em>(cumulative_args_t <var>ca</var>, tree <var>type</var>)</em></dt>
+<dd><p>This target hook warns about the change in empty class parameter passing
+ABI.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Caller-Saves.html#Caller-Saves" accesskey="n" rel="next">Caller Saves</a>, Previous: <a href="Scalar-Return.html#Scalar-Return" accesskey="p" rel="previous">Scalar Return</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Alias-analysis.html b/share/doc/gccint/Alias-analysis.html
new file mode 100644
index 0000000..86929b7
--- /dev/null
+++ b/share/doc/gccint/Alias-analysis.html
@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Alias analysis</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Alias analysis">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Alias analysis">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-SSA.html#Tree-SSA" rel="up" title="Tree SSA">
+<link href="Memory-model.html#Memory-model" rel="next" title="Memory model">
+<link href="SSA.html#SSA" rel="previous" title="SSA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Alias-analysis"></a>
+<div class="header">
+<p>
+Next: <a href="Memory-model.html#Memory-model" accesskey="n" rel="next">Memory model</a>, Previous: <a href="SSA.html#SSA" accesskey="p" rel="previous">SSA</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Alias-analysis-1"></a>
+<h3 class="section">13.4 Alias analysis</h3>
+<a name="index-alias"></a>
+<a name="index-flow_002dsensitive-alias-analysis"></a>
+<a name="index-flow_002dinsensitive-alias-analysis"></a>
+
+<p>Alias analysis in GIMPLE SSA form consists of two pieces. First
+the virtual SSA web ties conflicting memory accesses and provides
+a SSA use-def chain and SSA immediate-use chains for walking
+possibly dependent memory accesses. Second an alias-oracle can
+be queried to disambiguate explicit and implicit memory references.
+</p>
+<ol>
+<li> Memory SSA form.
+
+<p>All statements that may use memory have exactly one accompanied use of
+a virtual SSA name that represents the state of memory at the
+given point in the IL.
+</p>
+<p>All statements that may define memory have exactly one accompanied
+definition of a virtual SSA name using the previous state of memory
+and defining the new state of memory after the given point in the IL.
+</p>
+<div class="smallexample">
+<pre class="smallexample">int i;
+int foo (void)
+{
+ # .MEM_3 = VDEF &lt;.MEM_2(D)&gt;
+ i = 1;
+ # VUSE &lt;.MEM_3&gt;
+ return i;
+}
+</pre></div>
+
+<p>The virtual SSA names in this case are <code>.MEM_2(D)</code> and
+<code>.MEM_3</code>. The store to the global variable <code>i</code>
+defines <code>.MEM_3</code> invalidating <code>.MEM_2(D)</code>. The
+load from <code>i</code> uses that new state <code>.MEM_3</code>.
+</p>
+<p>The virtual SSA web serves as constraints to SSA optimizers
+preventing illegitimate code-motion and optimization. It
+also provides a way to walk related memory statements.
+</p>
+</li><li> Points-to and escape analysis.
+
+<p>Points-to analysis builds a set of constraints from the GIMPLE
+SSA IL representing all pointer operations and facts we do
+or do not know about pointers. Solving this set of constraints
+yields a conservatively correct solution for each pointer
+variable in the program (though we are only interested in
+SSA name pointers) as to what it may possibly point to.
+</p>
+<p>This points-to solution for a given SSA name pointer is stored
+in the <code>pt_solution</code> sub-structure of the
+<code>SSA_NAME_PTR_INFO</code> record. The following accessor
+functions are available:
+</p>
+<ul>
+<li> <code>pt_solution_includes</code>
+</li><li> <code>pt_solutions_intersect</code>
+</li></ul>
+
+<p>Points-to analysis also computes the solution for two special
+set of pointers, <code>ESCAPED</code> and <code>CALLUSED</code>. Those
+represent all memory that has escaped the scope of analysis
+or that is used by pure or nested const calls.
+</p>
+</li><li> Type-based alias analysis
+
+<p>Type-based alias analysis is frontend dependent though generic
+support is provided by the middle-end in <code>alias.cc</code>. TBAA
+code is used by both tree optimizers and RTL optimizers.
+</p>
+<p>Every language that wishes to perform language-specific alias analysis
+should define a function that computes, given a <code>tree</code>
+node, an alias set for the node. Nodes in different alias sets are not
+allowed to alias. For an example, see the C front-end function
+<code>c_get_alias_set</code>.
+</p>
+</li><li> Tree alias-oracle
+
+<p>The tree alias-oracle provides means to disambiguate two memory
+references and memory references against statements. The following
+queries are available:
+</p>
+<ul>
+<li> <code>refs_may_alias_p</code>
+</li><li> <code>ref_maybe_used_by_stmt_p</code>
+</li><li> <code>stmt_may_clobber_ref_p</code>
+</li></ul>
+
+<p>In addition to those two kind of statement walkers are available
+walking statements related to a reference ref.
+<code>walk_non_aliased_vuses</code> walks over dominating memory defining
+statements and calls back if the statement does not clobber ref
+providing the non-aliased VUSE. The walk stops at
+the first clobbering statement or if asked to.
+<code>walk_aliased_vdefs</code> walks over dominating memory defining
+statements and calls back on each statement clobbering ref
+providing its aliasing VDEF. The walk stops if asked to.
+</p>
+</li></ol>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Memory-model.html#Memory-model" accesskey="n" rel="next">Memory model</a>, Previous: <a href="SSA.html#SSA" accesskey="p" rel="previous">SSA</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Alignment-Output.html b/share/doc/gccint/Alignment-Output.html
new file mode 100644
index 0000000..c1c527c
--- /dev/null
+++ b/share/doc/gccint/Alignment-Output.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Alignment Output</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Alignment Output">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Alignment Output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Debugging-Info.html#Debugging-Info" rel="next" title="Debugging Info">
+<link href="Exception-Region-Output.html#Exception-Region-Output" rel="previous" title="Exception Region Output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Alignment-Output"></a>
+<div class="header">
+<p>
+Previous: <a href="Exception-Region-Output.html#Exception-Region-Output" accesskey="p" rel="previous">Exception Region Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Assembler-Commands-for-Alignment"></a>
+<h4 class="subsection">18.20.10 Assembler Commands for Alignment</h4>
+
+<p>This describes commands for alignment.
+</p>
+<dl>
+<dt><a name="index-JUMP_005fALIGN"></a>Macro: <strong>JUMP_ALIGN</strong> <em>(<var>label</var>)</em></dt>
+<dd><p>The alignment (log base 2) to put in front of <var>label</var>, which is
+a common destination of jumps and has no fallthru incoming edge.
+</p>
+<p>This macro need not be defined if you don&rsquo;t want any special alignment
+to be done at such a time. Most machine descriptions do not currently
+define the macro.
+</p>
+<p>Unless it&rsquo;s necessary to inspect the <var>label</var> parameter, it is better
+to set the variable <var>align_jumps</var> in the target&rsquo;s
+<code>TARGET_OPTION_OVERRIDE</code>. Otherwise, you should try to honor the user&rsquo;s
+selection in <var>align_jumps</var> in a <code>JUMP_ALIGN</code> implementation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LABEL_005fALIGN_005fAFTER_005fBARRIER"></a>Macro: <strong>LABEL_ALIGN_AFTER_BARRIER</strong> <em>(<var>label</var>)</em></dt>
+<dd><p>The alignment (log base 2) to put in front of <var>label</var>, which follows
+a <code>BARRIER</code>.
+</p>
+<p>This macro need not be defined if you don&rsquo;t want any special alignment
+to be done at such a time. Most machine descriptions do not currently
+define the macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOOP_005fALIGN"></a>Macro: <strong>LOOP_ALIGN</strong> <em>(<var>label</var>)</em></dt>
+<dd><p>The alignment (log base 2) to put in front of <var>label</var> that heads
+a frequently executed basic block (usually the header of a loop).
+</p>
+<p>This macro need not be defined if you don&rsquo;t want any special alignment
+to be done at such a time. Most machine descriptions do not currently
+define the macro.
+</p>
+<p>Unless it&rsquo;s necessary to inspect the <var>label</var> parameter, it is better
+to set the variable <code>align_loops</code> in the target&rsquo;s
+<code>TARGET_OPTION_OVERRIDE</code>. Otherwise, you should try to honor the user&rsquo;s
+selection in <code>align_loops</code> in a <code>LOOP_ALIGN</code> implementation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LABEL_005fALIGN"></a>Macro: <strong>LABEL_ALIGN</strong> <em>(<var>label</var>)</em></dt>
+<dd><p>The alignment (log base 2) to put in front of <var>label</var>.
+If <code>LABEL_ALIGN_AFTER_BARRIER</code> / <code>LOOP_ALIGN</code> specify a different alignment,
+the maximum of the specified values is used.
+</p>
+<p>Unless it&rsquo;s necessary to inspect the <var>label</var> parameter, it is better
+to set the variable <code>align_labels</code> in the target&rsquo;s
+<code>TARGET_OPTION_OVERRIDE</code>. Otherwise, you should try to honor the user&rsquo;s
+selection in <code>align_labels</code> in a <code>LABEL_ALIGN</code> implementation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fSKIP"></a>Macro: <strong>ASM_OUTPUT_SKIP</strong> <em>(<var>stream</var>, <var>nbytes</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> an assembler
+instruction to advance the location counter by <var>nbytes</var> bytes.
+Those bytes should be zero when loaded. <var>nbytes</var> will be a C
+expression of type <code>unsigned HOST_WIDE_INT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fNO_005fSKIP_005fIN_005fTEXT"></a>Macro: <strong>ASM_NO_SKIP_IN_TEXT</strong></dt>
+<dd><p>Define this macro if <code>ASM_OUTPUT_SKIP</code> should not be used in the
+text section because it fails to put zeros in the bytes that are skipped.
+This is true on many Unix systems, where the pseudo&ndash;op to skip bytes
+produces no-op instructions rather than zeros when used in the text
+section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGN"></a>Macro: <strong>ASM_OUTPUT_ALIGN</strong> <em>(<var>stream</var>, <var>power</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> an assembler
+command to advance the location counter to a multiple of 2 to the
+<var>power</var> bytes. <var>power</var> will be a C expression of type <code>int</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGN_005fWITH_005fNOP"></a>Macro: <strong>ASM_OUTPUT_ALIGN_WITH_NOP</strong> <em>(<var>stream</var>, <var>power</var>)</em></dt>
+<dd><p>Like <code>ASM_OUTPUT_ALIGN</code>, except that the &ldquo;nop&rdquo; instruction is used
+for padding, if necessary.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fMAX_005fSKIP_005fALIGN"></a>Macro: <strong>ASM_OUTPUT_MAX_SKIP_ALIGN</strong> <em>(<var>stream</var>, <var>power</var>, <var>max_skip</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> an assembler
+command to advance the location counter to a multiple of 2 to the
+<var>power</var> bytes, but only if <var>max_skip</var> or fewer bytes are needed to
+satisfy the alignment request. <var>power</var> and <var>max_skip</var> will be
+a C expression of type <code>int</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Exception-Region-Output.html#Exception-Region-Output" accesskey="p" rel="previous">Exception Region Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Alignment-of-poly_005fints.html b/share/doc/gccint/Alignment-of-poly_005fints.html
new file mode 100644
index 0000000..c3ad140
--- /dev/null
+++ b/share/doc/gccint/Alignment-of-poly_005fints.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Alignment of poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Alignment of poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Alignment of poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" rel="next" title="Computing bounds on poly_ints">
+<link href="Other-poly_005fint-arithmetic.html#Other-poly_005fint-arithmetic" rel="previous" title="Other poly_int arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Alignment-of-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" accesskey="n" rel="next">Computing bounds on <code>poly_int</code>s</a>, Previous: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="p" rel="previous">Arithmetic on <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Alignment-of-poly_005fints-1"></a>
+<h3 class="section">10.5 Alignment of <code>poly_int</code>s</h3>
+
+<p><code>poly_int</code> provides various routines for aligning values and for querying
+misalignments. In each case the alignment must be a power of 2.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>can_align_p (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can align <var>value</var> up or down to the nearest multiple
+of <var>align</var> at compile time. The answer is the same for both directions.
+</p>
+</dd>
+<dt>&lsquo;<samp>can_align_down (<var>value</var>, <var>align</var>, &amp;<var>aligned</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <code>can_align_p</code>; if so, set <var>aligned</var> to the greatest
+aligned value that is less than or equal to <var>value</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>can_align_up (<var>value</var>, <var>align</var>, &amp;<var>aligned</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <code>can_align_p</code>; if so, set <var>aligned</var> to the lowest
+aligned value that is greater than or equal to <var>value</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>known_equal_after_align_down (<var>a</var>, <var>b</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can align <var>a</var> and <var>b</var> down to the nearest
+<var>align</var> boundary at compile time and if the two results are equal.
+</p>
+</dd>
+<dt>&lsquo;<samp>known_equal_after_align_up (<var>a</var>, <var>b</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can align <var>a</var> and <var>b</var> up to the nearest
+<var>align</var> boundary at compile time and if the two results are equal.
+</p>
+</dd>
+<dt>&lsquo;<samp>aligned_lower_bound (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Return a result that is no greater than <var>value</var> and that is aligned
+to <var>align</var>. The result will the closest aligned value for some
+indeterminate values but not necessarily for all.
+</p>
+<p>For example, suppose we are allocating an object of <var>size</var> bytes
+in a downward-growing stack whose current limit is given by <var>limit</var>.
+If the object requires <var>align</var> bytes of alignment, the new stack
+limit is given by:
+</p>
+<div class="smallexample">
+<pre class="smallexample">aligned_lower_bound (<var>limit</var> - <var>size</var>, <var>align</var>)
+</pre></div>
+
+</dd>
+<dt>&lsquo;<samp>aligned_upper_bound (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Likewise return a result that is no less than <var>value</var> and that is
+aligned to <var>align</var>. This is the routine that would be used for
+upward-growing stacks in the scenario just described.
+</p>
+</dd>
+<dt>&lsquo;<samp>known_misalignment (<var>value</var>, <var>align</var>, &amp;<var>misalign</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can calculate the misalignment of <var>value</var>
+with respect to <var>align</var> at compile time, storing the result in
+<var>misalign</var> if so.
+</p>
+</dd>
+<dt>&lsquo;<samp>known_alignment (<var>value</var>)</samp>&rsquo;</dt>
+<dd><p>Return the minimum alignment that <var>value</var> is known to have
+(in other words, the largest alignment that can be guaranteed
+whatever the values of the indeterminates turn out to be).
+Return 0 if <var>value</var> is known to be 0.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_align_down (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>value</var> can be aligned down to <var>align</var> at compile
+time and return the result. When using this routine, please add a
+comment explaining why the assertion is known to hold.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_align_up (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Likewise, but aligning up.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_align_down_and_div (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Divide the result of <code>force_align_down</code> by <var>align</var>. Again,
+please add a comment explaining why the assertion in <code>force_align_down</code>
+is known to hold.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_align_up_and_div (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Likewise for <code>force_align_up</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_get_misalignment (<var>value</var>, <var>align</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that we can calculate the misalignment of <var>value</var> with
+respect to <var>align</var> at compile time and return the misalignment.
+When using this function, please add a comment explaining why
+the assertion is known to hold.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" accesskey="n" rel="next">Computing bounds on <code>poly_int</code>s</a>, Previous: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="p" rel="previous">Arithmetic on <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/All-Debuggers.html b/share/doc/gccint/All-Debuggers.html
new file mode 100644
index 0000000..32da12b
--- /dev/null
+++ b/share/doc/gccint/All-Debuggers.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: All Debuggers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: All Debuggers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: All Debuggers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging-Info.html#Debugging-Info" rel="up" title="Debugging Info">
+<link href="DWARF.html#DWARF" rel="next" title="DWARF">
+<link href="Debugging-Info.html#Debugging-Info" rel="previous" title="Debugging Info">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="All-Debuggers"></a>
+<div class="header">
+<p>
+Next: <a href="DWARF.html#DWARF" accesskey="n" rel="next">DWARF</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-Affecting-All-Debugging-Formats"></a>
+<h4 class="subsection">18.21.1 Macros Affecting All Debugging Formats</h4>
+
+<p>These macros affect all debugging formats.
+</p>
+<dl>
+<dt><a name="index-DEBUGGER_005fREGNO"></a>Macro: <strong>DEBUGGER_REGNO</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>A C expression that returns the debugger register number for the compiler
+register number <var>regno</var>. In the default macro provided, the value
+of this expression will be <var>regno</var> itself. But sometimes there are
+some registers that the compiler knows about and debugger does not, or vice
+versa. In such cases, some register may need to have one number in the
+compiler and another for debugger.
+</p>
+<p>If two registers have consecutive numbers inside GCC, and they can be
+used as a pair to hold a multiword value, then they <em>must</em> have
+consecutive numbers after renumbering with <code>DEBUGGER_REGNO</code>.
+Otherwise, debuggers will be unable to access such a pair, because they
+expect register pairs to be consecutive in their own numbering scheme.
+</p>
+<p>If you find yourself defining <code>DEBUGGER_REGNO</code> in way that
+does not preserve register pairs, then what you must do instead is
+redefine the actual register numbering scheme.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEBUGGER_005fAUTO_005fOFFSET"></a>Macro: <strong>DEBUGGER_AUTO_OFFSET</strong> <em>(<var>x</var>)</em></dt>
+<dd><p>A C expression that returns the integer offset value for an automatic
+variable having address <var>x</var> (an RTL expression). The default
+computation assumes that <var>x</var> is based on the frame-pointer and
+gives the offset from the frame-pointer. This is required for targets
+that produce debugging output for debugger and allow the frame-pointer to be
+eliminated when the <samp>-g</samp> option is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEBUGGER_005fARG_005fOFFSET"></a>Macro: <strong>DEBUGGER_ARG_OFFSET</strong> <em>(<var>offset</var>, <var>x</var>)</em></dt>
+<dd><p>A C expression that returns the integer offset value for an argument
+having address <var>x</var> (an RTL expression). The nominal offset is
+<var>offset</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PREFERRED_005fDEBUGGING_005fTYPE"></a>Macro: <strong>PREFERRED_DEBUGGING_TYPE</strong></dt>
+<dd><p>A C expression that returns the type of debugging output GCC should
+produce when the user specifies just <samp>-g</samp>. Define
+this if you have arranged for GCC to support more than one format of
+debugging output. Currently, the allowable values are
+<code>DWARF2_DEBUG</code>, <code>VMS_DEBUG</code>,
+and <code>VMS_AND_DWARF2_DEBUG</code>.
+</p>
+<p>When the user specifies <samp>-ggdb</samp>, GCC normally also uses the
+value of this macro to select the debugging output format, but with two
+exceptions. If <code>DWARF2_DEBUGGING_INFO</code> is defined, GCC uses the
+value <code>DWARF2_DEBUG</code>.
+</p>
+<p>The value of this macro only affects the default debugging output; the
+user can always get a specific type of output by using <samp>-gdwarf-2</samp>,
+or <samp>-gvms</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEFAULT_005fGDB_005fEXTENSIONS"></a>Macro: <strong>DEFAULT_GDB_EXTENSIONS</strong></dt>
+<dd><p>Define this macro to control whether GCC should by default generate
+GDB&rsquo;s extended version of debugging information. If you don&rsquo;t define the
+macro, the default is 1: always generate the extended information
+if there is any occasion to.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="DWARF.html#DWARF" accesskey="n" rel="next">DWARF</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Allocation-Order.html b/share/doc/gccint/Allocation-Order.html
new file mode 100644
index 0000000..8c770eb
--- /dev/null
+++ b/share/doc/gccint/Allocation-Order.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Allocation Order</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Allocation Order">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Allocation Order">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html#Registers" rel="up" title="Registers">
+<link href="Values-in-Registers.html#Values-in-Registers" rel="next" title="Values in Registers">
+<link href="Register-Basics.html#Register-Basics" rel="previous" title="Register Basics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Allocation-Order"></a>
+<div class="header">
+<p>
+Next: <a href="Values-in-Registers.html#Values-in-Registers" accesskey="n" rel="next">Values in Registers</a>, Previous: <a href="Register-Basics.html#Register-Basics" accesskey="p" rel="previous">Register Basics</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Order-of-Allocation-of-Registers"></a>
+<h4 class="subsection">18.7.2 Order of Allocation of Registers</h4>
+<a name="index-order-of-register-allocation"></a>
+<a name="index-register-allocation-order"></a>
+
+<p>Registers are allocated in order.
+</p>
+<dl>
+<dt><a name="index-REG_005fALLOC_005fORDER"></a>Macro: <strong>REG_ALLOC_ORDER</strong></dt>
+<dd><p>If defined, an initializer for a vector of integers, containing the
+numbers of hard registers in the order in which GCC should prefer
+to use them (from most preferred to least).
+</p>
+<p>If this macro is not defined, registers are used lowest numbered first
+(all else being equal).
+</p>
+<p>One use of this macro is on machines where the highest numbered
+registers must always be saved and the save-multiple-registers
+instruction supports only sequences of consecutive registers. On such
+machines, define <code>REG_ALLOC_ORDER</code> to be an initializer that lists
+the highest numbered allocable register first.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ADJUST_005fREG_005fALLOC_005fORDER"></a>Macro: <strong>ADJUST_REG_ALLOC_ORDER</strong></dt>
+<dd><p>A C statement (sans semicolon) to choose the order in which to allocate
+hard registers for pseudo-registers local to a basic block.
+</p>
+<p>Store the desired register order in the array <code>reg_alloc_order</code>.
+Element 0 should be the register to allocate first; element 1, the next
+register; and so on.
+</p>
+<p>The macro body should not assume anything about the contents of
+<code>reg_alloc_order</code> before execution of the macro.
+</p>
+<p>On most machines, it is not necessary to define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HONOR_005fREG_005fALLOC_005fORDER"></a>Macro: <strong>HONOR_REG_ALLOC_ORDER</strong></dt>
+<dd><p>Normally, IRA tries to estimate the costs for saving a register in the
+prologue and restoring it in the epilogue. This discourages it from
+using call-saved registers. If a machine wants to ensure that IRA
+allocates registers in the order given by REG_ALLOC_ORDER even if some
+call-saved registers appear earlier than call-used ones, then define this
+macro as a C expression to nonzero. Default is 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IRA_005fHARD_005fREGNO_005fADD_005fCOST_005fMULTIPLIER"></a>Macro: <strong>IRA_HARD_REGNO_ADD_COST_MULTIPLIER</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>In some case register allocation order is not enough for the
+Integrated Register Allocator (<acronym>IRA</acronym>) to generate a good code.
+If this macro is defined, it should return a floating point value
+based on <var>regno</var>. The cost of using <var>regno</var> for a pseudo will
+be increased by approximately the pseudo&rsquo;s usage frequency times the
+value returned by this macro. Not defining this macro is equivalent
+to having it always return <code>0.0</code>.
+</p>
+<p>On most machines, it is not necessary to define this macro.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Values-in-Registers.html#Values-in-Registers" accesskey="n" rel="next">Values in Registers</a>, Previous: <a href="Register-Basics.html#Register-Basics" accesskey="p" rel="previous">Register Basics</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Analyzer-Internals.html b/share/doc/gccint/Analyzer-Internals.html
new file mode 100644
index 0000000..3991711
--- /dev/null
+++ b/share/doc/gccint/Analyzer-Internals.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Analyzer Internals</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Analyzer Internals">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Analyzer Internals">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Static-Analyzer.html#Static-Analyzer" rel="up" title="Static Analyzer">
+<link href="Debugging-the-Analyzer.html#Debugging-the-Analyzer" rel="next" title="Debugging the Analyzer">
+<link href="Static-Analyzer.html#Static-Analyzer" rel="previous" title="Static Analyzer">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Analyzer-Internals"></a>
+<div class="header">
+<p>
+Next: <a href="Debugging-the-Analyzer.html#Debugging-the-Analyzer" accesskey="n" rel="next">Debugging the Analyzer</a>, Up: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="u" rel="up">Static Analyzer</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Analyzer-Internals-1"></a>
+<h3 class="section">27.1 Analyzer Internals</h3>
+<a name="index-analyzer_002c-internals"></a>
+<a name="index-static-analyzer_002c-internals"></a>
+
+<a name="Overview-2"></a>
+<h4 class="subsection">27.1.1 Overview</h4>
+
+<p>The analyzer implementation works on the gimple-SSA representation.
+(I chose this in the hopes of making it easy to work with LTO to
+do whole-program analysis).
+</p>
+<p>The implementation is read-only: it doesn&rsquo;t attempt to change anything,
+just emit warnings.
+</p>
+<p>The gimple representation can be seen using <samp>-fdump-ipa-analyzer</samp>.
+</p><blockquote>
+<p><b>Tip:</b> If the analyzer ICEs before this is written out, one workaround is to use
+<samp>--param=analyzer-bb-explosion-factor=0</samp> to force the analyzer
+to bail out after analyzing the first basic block.
+</p></blockquote>
+
+<p>First, we build a <code>supergraph</code> which combines the callgraph and all
+of the CFGs into a single directed graph, with both interprocedural and
+intraprocedural edges. The nodes and edges in the supergraph are called
+&ldquo;supernodes&rdquo; and &ldquo;superedges&rdquo;, and often referred to in code as
+<code>snodes</code> and <code>sedges</code>. Basic blocks in the CFGs are split at
+interprocedural calls, so there can be more than one supernode per
+basic block. Most statements will be in just one supernode, but a call
+statement can appear in two supernodes: at the end of one for the call,
+and again at the start of another for the return.
+</p>
+<p>The supergraph can be seen using <samp>-fdump-analyzer-supergraph</samp>.
+</p>
+<p>We then build an <code>analysis_plan</code> which walks the callgraph to
+determine which calls might be suitable for being summarized (rather
+than fully explored) and thus in what order to explore the functions.
+</p>
+<p>Next is the heart of the analyzer: we use a worklist to explore state
+within the supergraph, building an &quot;exploded graph&quot;.
+Nodes in the exploded graph correspond to &lt;point,&nbsp;<!-- /@w -->state&gt; pairs, as in
+ &quot;Precise Interprocedural Dataflow Analysis via Graph Reachability&quot;
+ (Thomas Reps, Susan Horwitz and Mooly Sagiv).
+</p>
+<p>We reuse nodes for &lt;point, state&gt; pairs we&rsquo;ve already seen, and avoid
+tracking state too closely, so that (hopefully) we rapidly converge
+on a final exploded graph, and terminate the analysis. We also bail
+out if the number of exploded &lt;end-of-basic-block, state&gt; nodes gets
+larger than a particular multiple of the total number of basic blocks
+(to ensure termination in the face of pathological state-explosion
+cases, or bugs). We also stop exploring a point once we hit a limit
+of states for that point.
+</p>
+<p>We can identify problems directly when processing a &lt;point,&nbsp;<!-- /@w -->state&gt;
+instance. For example, if we&rsquo;re finding the successors of
+</p>
+<div class="smallexample">
+<pre class="smallexample"> &lt;point: before-stmt: &quot;free (ptr);&quot;,
+ state: {&quot;ptr&quot;: freed}&gt;
+</pre></div>
+
+<p>then we can detect a double-free of &quot;ptr&quot;. We can then emit a path
+to reach the problem by finding the simplest route through the graph.
+</p>
+<p>Program points in the analysis are much more fine-grained than in the
+CFG and supergraph, with points (and thus potentially exploded nodes)
+for various events, including before individual statements.
+By default the exploded graph merges multiple consecutive statements
+in a supernode into one exploded edge to minimize the size of the
+exploded graph. This can be suppressed via
+<samp>-fanalyzer-fine-grained</samp>.
+The fine-grained approach seems to make things simpler and more debuggable
+that other approaches I tried, in that each point is responsible for one
+thing.
+</p>
+<p>Program points in the analysis also have a &quot;call string&quot; identifying the
+stack of callsites below them, so that paths in the exploded graph
+correspond to interprocedurally valid paths: we always return to the
+correct call site, propagating state information accordingly.
+We avoid infinite recursion by stopping the analysis if a callsite
+appears more than <code>analyzer-max-recursion-depth</code> in a callstring
+(defaulting to 2).
+</p>
+<a name="Graphs"></a>
+<h4 class="subsection">27.1.2 Graphs</h4>
+
+<p>Nodes and edges in the exploded graph are called &ldquo;exploded nodes&rdquo; and
+&ldquo;exploded edges&rdquo; and often referred to in the code as
+<code>enodes</code> and <code>eedges</code> (especially when distinguishing them
+from the <code>snodes</code> and <code>sedges</code> in the supergraph).
+</p>
+<p>Each graph numbers its nodes, giving unique identifiers - supernodes
+are referred to throughout dumps in the form &lsquo;<samp>SN': <var>index</var></samp>&rsquo; and
+exploded nodes in the form &lsquo;<samp>EN: <var>index</var></samp>&rsquo; (e.g. &lsquo;<samp>SN: 2</samp>&rsquo; and
+&lsquo;<samp>EN:29</samp>&rsquo;).
+</p>
+<p>The supergraph can be seen using <samp>-fdump-analyzer-supergraph-graph</samp>.
+</p>
+<p>The exploded graph can be seen using <samp>-fdump-analyzer-exploded-graph</samp>
+and other dump options. Exploded nodes are color-coded in the .dot output
+based on state-machine states to make it easier to see state changes at
+a glance.
+</p>
+<a name="State-Tracking"></a>
+<h4 class="subsection">27.1.3 State Tracking</h4>
+
+<p>There&rsquo;s a tension between:
+</p><ul>
+<li> precision of analysis in the straight-line case, vs
+</li><li> exponential blow-up in the face of control flow.
+</li></ul>
+
+<p>For example, in general, given this CFG:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> A
+ / \
+ B C
+ \ /
+ D
+ / \
+ E F
+ \ /
+ G
+</pre></div>
+
+<p>we want to avoid differences in state-tracking in B and C from
+leading to blow-up. If we don&rsquo;t prevent state blowup, we end up
+with exponential growth of the exploded graph like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+ 1:A
+ / \
+ / \
+ / \
+ 2:B 3:C
+ | |
+ 4:D 5:D (2 exploded nodes for D)
+ / \ / \
+ 6:E 7:F 8:E 9:F
+ | | | |
+ 10:G 11:G 12:G 13:G (4 exploded nodes for G)
+
+</pre></div>
+
+<p>Similar issues arise with loops.
+</p>
+<p>To prevent this, we follow various approaches:
+</p>
+<ol>
+<li> state pruning: which tries to discard state that won&rsquo;t be relevant
+later on withing the function.
+This can be disabled via <samp>-fno-analyzer-state-purge</samp>.
+
+</li><li> state merging. We can try to find the commonality between two
+program_state instances to make a third, simpler program_state.
+We have two strategies here:
+
+<ol>
+<li> the worklist keeps new nodes for the same program_point together,
+ and tries to merge them before processing, and thus before they have
+ successors. Hence, in the above, the two nodes for D (4 and 5) reach
+ the front of the worklist together, and we create a node for D with
+ the merger of the incoming states.
+
+</li><li> try merging with the state of existing enodes for the program_point
+ (which may have already been explored). There will be duplication,
+ but only one set of duplication; subsequent duplicates are more likely
+ to hit the cache. In particular, (hopefully) all merger chains are
+ finite, and so we guarantee termination.
+ This is intended to help with loops: we ought to explore the first
+ iteration, and then have a &quot;subsequent iterations&quot; exploration,
+ which uses a state merged from that of the first, to be more abstract.
+ </li></ol>
+
+<p>We avoid merging pairs of states that have state-machine differences,
+as these are the kinds of differences that are likely to be most
+interesting. So, for example, given:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> if (condition)
+ ptr = malloc (size);
+ else
+ ptr = local_buf;
+
+ .... do things with 'ptr'
+
+ if (condition)
+ free (ptr);
+
+ ...etc
+</pre></div>
+
+<p>then we end up with an exploded graph that looks like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+ if (condition)
+ / T \ F
+ --------- ----------
+ / \
+ ptr = malloc (size) ptr = local_buf
+ | |
+ copy of copy of
+ &quot;do things with 'ptr'&quot; &quot;do things with 'ptr'&quot;
+ with ptr: heap-allocated with ptr: stack-allocated
+ | |
+ if (condition) if (condition)
+ | known to be T | known to be F
+ free (ptr); |
+ \ /
+ -----------------------------
+ | ('ptr' is pruned, so states can be merged)
+ etc
+
+</pre></div>
+
+<p>where some duplication has occurred, but only for the places where the
+the different paths are worth exploringly separately.
+</p>
+<p>Merging can be disabled via <samp>-fno-analyzer-state-merge</samp>.
+</p></li></ol>
+
+<a name="Region-Model"></a>
+<h4 class="subsection">27.1.4 Region Model</h4>
+
+<p>Part of the state stored at a <code>exploded_node</code> is a <code>region_model</code>.
+This is an implementation of the region-based ternary model described in
+<a href="https://www.researchgate.net/publication/221430855_A_Memory_Model_for_Static_Analysis_of_C_Programs">&quot;A Memory Model for Static Analysis of C Programs&quot;</a>
+(Zhongxing Xu, Ted Kremenek, and Jian Zhang).
+</p>
+<p>A <code>region_model</code> encapsulates a representation of the state of
+memory, with a <code>store</code> recording a binding between <code>region</code>
+instances, to <code>svalue</code> instances. The bindings are organized into
+clusters, where regions accessible via well-defined pointer arithmetic
+are in the same cluster. The representation is graph-like because values
+can be pointers to regions. It also stores a constraint_manager,
+capturing relationships between the values.
+</p>
+<p>Because each node in the <code>exploded_graph</code> has a <code>region_model</code>,
+and each of the latter is graph-like, the <code>exploded_graph</code> is in some
+ways a graph of graphs.
+</p>
+<p>Here&rsquo;s an example of printing a <code>program_state</code>, showing the
+<code>region_model</code> within it, along with state for the <code>malloc</code>
+state machine.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(gdb) call debug (*this)
+rmodel:
+stack depth: 1
+ frame (index 0): frame: ‘test’@1
+clusters within frame: ‘test’@1
+ cluster for: ptr_3: &amp;HEAP_ALLOCATED_REGION(12)
+m_called_unknown_fn: FALSE
+constraint_manager:
+ equiv classes:
+ constraints:
+malloc:
+ 0x2e89590: &amp;HEAP_ALLOCATED_REGION(12): unchecked ('ptr_3')
+</pre></div>
+
+<p>This is the state at the point of returning from <code>calls_malloc</code> back
+to <code>test</code> in the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">void *
+calls_malloc (void)
+{
+ void *result = malloc (1024);
+ return result;
+}
+
+void test (void)
+{
+ void *ptr = calls_malloc ();
+ /* etc. */
+}
+</pre></div>
+
+<p>Within the store, there is the cluster for <code>ptr_3</code> within the frame
+for <code>test</code>, where the whole cluster is bound to a pointer value,
+pointing at <code>HEAP_ALLOCATED_REGION(12)</code>. Additionally, this pointer
+has the <code>unchecked</code> state for the <code>malloc</code> state machine
+indicating it hasn&rsquo;t yet been checked against NULL since the allocation
+call.
+</p>
+<a name="Analyzer-Paths"></a>
+<h4 class="subsection">27.1.5 Analyzer Paths</h4>
+
+<p>We need to explain to the user what the problem is, and to persuade them
+that there really is a problem. Hence having a <code>diagnostic_path</code>
+isn&rsquo;t just an incidental detail of the analyzer; it&rsquo;s required.
+</p>
+<p>Paths ought to be:
+</p><ul>
+<li> interprocedurally-valid
+</li><li> feasible
+</li></ul>
+
+<p>Without state-merging, all paths in the exploded graph are feasible
+(in terms of constraints being satisfied).
+With state-merging, paths in the exploded graph can be infeasible.
+</p>
+<p>We collate warnings and only emit them for the simplest path
+e.g. for a bug in a utility function, with lots of routes to calling it,
+we only emit the simplest path (which could be intraprocedural, if
+it can be reproduced without a caller).
+</p>
+<p>We thus want to find the shortest feasible path through the exploded
+graph from the origin to the exploded node at which the diagnostic was
+saved. Unfortunately, if we simply find the shortest such path and
+check if it&rsquo;s feasible we might falsely reject the diagnostic, as there
+might be a longer path that is feasible. Examples include the cases
+where the diagnostic requires us to go at least once around a loop for a
+later condition to be satisfied, or where for a later condition to be
+satisfied we need to enter a suite of code that the simpler path skips.
+</p>
+<p>We attempt to find the shortest feasible path to each diagnostic by
+first constructing a &ldquo;trimmed graph&rdquo; from the exploded graph,
+containing only those nodes and edges from which there are paths to
+the target node, and using Dijkstra&rsquo;s algorithm to order the trimmed
+nodes by minimal distance to the target.
+</p>
+<p>We then use a worklist to iteratively build a &ldquo;feasible graph&rdquo;
+(actually a tree), capturing the pertinent state along each path, in
+which every path to a &ldquo;feasible node&rdquo; is feasible by construction,
+restricting ourselves to the trimmed graph to ensure we stay on target,
+and ordering the worklist so that the first feasible path we find to the
+target node is the shortest possible path. Hence we start by trying the
+shortest possible path, but if that fails, we explore progressively
+longer paths, eventually trying iterations through loops. The
+exploration is captured in the feasible_graph, which can be dumped as a
+.dot file via <samp>-fdump-analyzer-feasibility</samp> to visualize the
+exploration. The indices of the feasible nodes show the order in which
+they were created. We effectively explore the tree of feasible paths in
+order of shortest path until we either find a feasible path to the
+target node, or hit a limit and give up.
+</p>
+<p>This is something of a brute-force approach, but the trimmed graph
+hopefully keeps the complexity manageable.
+</p>
+<p>This algorithm can be disabled (for debugging purposes) via
+<samp>-fno-analyzer-feasibility</samp>, which simply uses the shortest path,
+and notes if it is infeasible.
+</p>
+<p>The above gives us a shortest feasible <code>exploded_path</code> through the
+<code>exploded_graph</code> (a list of <code>exploded_edge *</code>). We use this
+<code>exploded_path</code> to build a <code>diagnostic_path</code> (a list of
+<strong>events</strong> for the diagnostic subsystem) - specifically a
+<code>checker_path</code>.
+</p>
+<p>Having built the <code>checker_path</code>, we prune it to try to eliminate
+events that aren&rsquo;t relevant, to minimize how much the user has to read.
+</p>
+<p>After pruning, we notify each event in the path of its ID and record the
+IDs of interesting events, allowing for events to refer to other events
+in their descriptions. The <code>pending_diagnostic</code> class has various
+vfuncs to support emitting more precise descriptions, so that e.g.
+</p>
+<ul>
+<li> a deref-of-unchecked-malloc diagnostic might use:
+<div class="smallexample">
+<pre class="smallexample"> returning possibly-NULL pointer to 'make_obj' from 'allocator'
+</pre></div>
+<p>for a <code>return_event</code> to make it clearer how the unchecked value moves
+from callee back to caller
+</p></li><li> a double-free diagnostic might use:
+<div class="smallexample">
+<pre class="smallexample"> second 'free' here; first 'free' was at (3)
+</pre></div>
+<p>and a use-after-free might use
+</p><div class="smallexample">
+<pre class="smallexample"> use after 'free' here; memory was freed at (2)
+</pre></div>
+</li></ul>
+
+<p>At this point we can emit the diagnostic.
+</p>
+<a name="Limitations"></a>
+<h4 class="subsection">27.1.6 Limitations</h4>
+
+<ul>
+<li> Only for C so far
+</li><li> The implementation of call summaries is currently very simplistic.
+</li><li> Lack of function pointer analysis
+</li><li> The constraint-handling code assumes reflexivity in some places
+(that values are equal to themselves), which is not the case for NaN.
+As a simple workaround, constraints on floating-point values are
+currently ignored.
+</li><li> There are various other limitations in the region model (grep for TODO/xfail
+in the testsuite).
+</li><li> The constraint_manager&rsquo;s implementation of transitivity is currently too
+expensive to enable by default and so must be manually enabled via
+<samp>-fanalyzer-transitivity</samp>).
+</li><li> The checkers are currently hardcoded and don&rsquo;t allow for user extensibility
+(e.g. adding allocate/release pairs).
+</li><li> Although the analyzer&rsquo;s test suite has a proof-of-concept test case for
+LTO, LTO support hasn&rsquo;t had extensive testing. There are various
+lang-specific things in the analyzer that assume C rather than LTO.
+For example, SSA names are printed to the user in &ldquo;raw&rdquo; form, rather
+than printing the underlying variable name.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Debugging-the-Analyzer.html#Debugging-the-Analyzer" accesskey="n" rel="next">Debugging the Analyzer</a>, Up: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="u" rel="up">Static Analyzer</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Anchored-Addresses.html b/share/doc/gccint/Anchored-Addresses.html
new file mode 100644
index 0000000..8ec4058
--- /dev/null
+++ b/share/doc/gccint/Anchored-Addresses.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Anchored Addresses</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Anchored Addresses">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Anchored Addresses">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Condition-Code.html#Condition-Code" rel="next" title="Condition Code">
+<link href="Addressing-Modes.html#Addressing-Modes" rel="previous" title="Addressing Modes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Anchored-Addresses"></a>
+<div class="header">
+<p>
+Next: <a href="Condition-Code.html#Condition-Code" accesskey="n" rel="next">Condition Code</a>, Previous: <a href="Addressing-Modes.html#Addressing-Modes" accesskey="p" rel="previous">Addressing Modes</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Anchored-Addresses-1"></a>
+<h3 class="section">18.14 Anchored Addresses</h3>
+<a name="index-anchored-addresses"></a>
+<a name="index-_002dfsection_002danchors-1"></a>
+
+<p>GCC usually addresses every static object as a separate entity.
+For example, if we have:
+</p>
+<div class="smallexample">
+<pre class="smallexample">static int a, b, c;
+int foo (void) { return a + b + c; }
+</pre></div>
+
+<p>the code for <code>foo</code> will usually calculate three separate symbolic
+addresses: those of <code>a</code>, <code>b</code> and <code>c</code>. On some targets,
+it would be better to calculate just one symbolic address and access
+the three variables relative to it. The equivalent pseudocode would
+be something like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int foo (void)
+{
+ register int *xr = &amp;x;
+ return xr[&amp;a - &amp;x] + xr[&amp;b - &amp;x] + xr[&amp;c - &amp;x];
+}
+</pre></div>
+
+<p>(which isn&rsquo;t valid C). We refer to shared addresses like <code>x</code> as
+&ldquo;section anchors&rdquo;. Their use is controlled by <samp>-fsection-anchors</samp>.
+</p>
+<p>The hooks below describe the target properties that GCC needs to know
+in order to make effective use of section anchors. It won&rsquo;t use
+section anchors at all unless either <code>TARGET_MIN_ANCHOR_OFFSET</code>
+or <code>TARGET_MAX_ANCHOR_OFFSET</code> is set to a nonzero value.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fMIN_005fANCHOR_005fOFFSET"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_MIN_ANCHOR_OFFSET</strong></dt>
+<dd><p>The minimum offset that should be applied to a section anchor.
+On most targets, it should be the smallest offset that can be
+applied to a base register while still giving a legitimate address
+for every mode. The default value is 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMAX_005fANCHOR_005fOFFSET"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_MAX_ANCHOR_OFFSET</strong></dt>
+<dd><p>Like <code>TARGET_MIN_ANCHOR_OFFSET</code>, but the maximum (inclusive)
+offset that should be applied to section anchors. The default
+value is 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fANCHOR"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_OUTPUT_ANCHOR</strong> <em>(rtx <var>x</var>)</em></dt>
+<dd><p>Write the assembly code to define section anchor <var>x</var>, which is a
+<code>SYMBOL_REF</code> for which &lsquo;<samp>SYMBOL_REF_ANCHOR_P (<var>x</var>)</samp>&rsquo; is true.
+The hook is called with the assembly output position set to the beginning
+of <code>SYMBOL_REF_BLOCK (<var>x</var>)</code>.
+</p>
+<p>If <code>ASM_OUTPUT_DEF</code> is available, the hook&rsquo;s default definition uses
+it to define the symbol as &lsquo;<samp>. + SYMBOL_REF_BLOCK_OFFSET (<var>x</var>)</samp>&rsquo;.
+If <code>ASM_OUTPUT_DEF</code> is not available, the hook&rsquo;s default definition
+is <code>NULL</code>, which disables the use of section anchors altogether.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSE_005fANCHORS_005fFOR_005fSYMBOL_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_USE_ANCHORS_FOR_SYMBOL_P</strong> <em>(const_rtx <var>x</var>)</em></dt>
+<dd><p>Return true if GCC should attempt to use anchors to access <code>SYMBOL_REF</code>
+<var>x</var>. You can assume &lsquo;<samp>SYMBOL_REF_HAS_BLOCK_INFO_P (<var>x</var>)</samp>&rsquo; and
+&lsquo;<samp>!SYMBOL_REF_ANCHOR_P (<var>x</var>)</samp>&rsquo;.
+</p>
+<p>The default version is correct for most targets, but you might need to
+intercept this hook to handle things like target-specific attributes
+or target-specific sections.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Condition-Code.html#Condition-Code" accesskey="n" rel="next">Condition Code</a>, Previous: <a href="Addressing-Modes.html#Addressing-Modes" accesskey="p" rel="previous">Addressing Modes</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Annotations.html b/share/doc/gccint/Annotations.html
new file mode 100644
index 0000000..0372b1c
--- /dev/null
+++ b/share/doc/gccint/Annotations.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Annotations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Annotations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Annotations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-SSA.html#Tree-SSA" rel="up" title="Tree SSA">
+<link href="SSA-Operands.html#SSA-Operands" rel="next" title="SSA Operands">
+<link href="Tree-SSA.html#Tree-SSA" rel="previous" title="Tree SSA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Annotations"></a>
+<div class="header">
+<p>
+Next: <a href="SSA-Operands.html#SSA-Operands" accesskey="n" rel="next">SSA Operands</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Annotations-1"></a>
+<h3 class="section">13.1 Annotations</h3>
+<a name="index-annotations"></a>
+
+<p>The optimizers need to associate attributes with variables during the
+optimization process. For instance, we need to know whether a
+variable has aliases. All these attributes are stored in data
+structures called annotations which are then linked to the field
+<code>ann</code> in <code>struct tree_common</code>.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Arithmetic-on-poly_005fints.html b/share/doc/gccint/Arithmetic-on-poly_005fints.html
new file mode 100644
index 0000000..c11c9fb
--- /dev/null
+++ b/share/doc/gccint/Arithmetic-on-poly_005fints.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Arithmetic on poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Arithmetic on poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Arithmetic on poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html#Using-poly_005fint-with-C_002b_002b-arithmetic-operators" rel="next" title="Using poly_int with C++ arithmetic operators">
+<link href="Sorting-poly_005fints.html#Sorting-poly_005fints" rel="previous" title="Sorting poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Arithmetic-on-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints" accesskey="n" rel="next">Alignment of <code>poly_int</code>s</a>, Previous: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="p" rel="previous">Comparisons involving <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Arithmetic-on-poly_005fints-1"></a>
+<h3 class="section">10.4 Arithmetic on <code>poly_int</code>s</h3>
+
+<p>Addition, subtraction, negation and bit inversion all work normally for
+<code>poly_int</code>s. Multiplication by a constant multiplier and left
+shifting by a constant shift amount also work normally. General
+multiplication of two <code>poly_int</code>s is not supported and is not
+useful in practice.
+</p>
+<p>Other operations are only conditionally supported: the operation
+might succeed or might fail, depending on the inputs.
+</p>
+<p>This section describes both types of operation.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html#Using-poly_005fint-with-C_002b_002b-arithmetic-operators" accesskey="1">Using <code>poly_int</code> with C++ arithmetic operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints" accesskey="2"><code>wi</code> arithmetic on <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Division-of-poly_005fints.html#Division-of-poly_005fints" accesskey="3">Division of <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Other-poly_005fint-arithmetic.html#Other-poly_005fint-arithmetic" accesskey="4">Other <code>poly_int</code> arithmetic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Arithmetic.html b/share/doc/gccint/Arithmetic.html
new file mode 100644
index 0000000..3249d1d
--- /dev/null
+++ b/share/doc/gccint/Arithmetic.html
@@ -0,0 +1,483 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Arithmetic</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Arithmetic">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Arithmetic">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Comparisons.html#Comparisons" rel="next" title="Comparisons">
+<link href="Regs-and-Memory.html#Regs-and-Memory" rel="previous" title="Regs and Memory">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Arithmetic"></a>
+<div class="header">
+<p>
+Next: <a href="Comparisons.html#Comparisons" accesskey="n" rel="next">Comparisons</a>, Previous: <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="p" rel="previous">Regs and Memory</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Expressions-for-Arithmetic"></a>
+<h3 class="section">14.9 RTL Expressions for Arithmetic</h3>
+<a name="index-arithmetic_002c-in-RTL"></a>
+<a name="index-math_002c-in-RTL"></a>
+<a name="index-RTL-expressions-for-arithmetic"></a>
+
+<p>Unless otherwise specified, all the operands of arithmetic expressions
+must be valid for mode <var>m</var>. An operand is valid for mode <var>m</var>
+if it has mode <var>m</var>, or if it is a <code>const_int</code> or
+<code>const_double</code> and <var>m</var> is a mode of class <code>MODE_INT</code>.
+</p>
+<p>For commutative binary operations, constants should be placed in the
+second operand.
+</p>
+<dl compact="compact">
+<dd><a name="index-plus"></a>
+<a name="index-ss_005fplus"></a>
+<a name="index-us_005fplus"></a>
+<a name="index-RTL-sum"></a>
+<a name="index-RTL-addition"></a>
+<a name="index-RTL-addition-with-signed-saturation"></a>
+<a name="index-RTL-addition-with-unsigned-saturation"></a>
+</dd>
+<dt><code>(plus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(ss_plus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(us_plus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd>
+<p>These three expressions all represent the sum of the values
+represented by <var>x</var> and <var>y</var> carried out in machine mode
+<var>m</var>. They differ in their behavior on overflow of integer modes.
+<code>plus</code> wraps round modulo the width of <var>m</var>; <code>ss_plus</code>
+saturates at the maximum signed value representable in <var>m</var>;
+<code>us_plus</code> saturates at the maximum unsigned value.
+</p>
+
+<a name="index-lo_005fsum"></a>
+</dd>
+<dt><code>(lo_sum:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd>
+<p>This expression represents the sum of <var>x</var> and the low-order bits
+of <var>y</var>. It is used with <code>high</code> (see <a href="Constants.html#Constants">Constants</a>) to
+represent the typical two-instruction sequence used in RISC machines to
+reference large immediate values and/or link-time constants such
+as global memory addresses. In the latter case, <var>m</var> is <code>Pmode</code>
+and <var>y</var> is usually a constant expression involving <code>symbol_ref</code>.
+</p>
+<p>The number of low order bits is machine-dependent but is
+normally the number of bits in mode <var>m</var> minus the number of
+bits set by <code>high</code>.
+</p>
+<a name="index-minus"></a>
+<a name="index-ss_005fminus"></a>
+<a name="index-us_005fminus"></a>
+<a name="index-RTL-difference"></a>
+<a name="index-RTL-subtraction"></a>
+<a name="index-RTL-subtraction-with-signed-saturation"></a>
+<a name="index-RTL-subtraction-with-unsigned-saturation"></a>
+</dd>
+<dt><code>(minus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(ss_minus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(us_minus:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd>
+<p>These three expressions represent the result of subtracting <var>y</var>
+from <var>x</var>, carried out in mode <var>M</var>. Behavior on overflow is
+the same as for the three variants of <code>plus</code> (see above).
+</p>
+<a name="index-compare"></a>
+<a name="index-RTL-comparison"></a>
+</dd>
+<dt><code>(compare:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the result of subtracting <var>y</var> from <var>x</var> for purposes
+of comparison. The result is computed without overflow, as if with
+infinite precision.
+</p>
+<p>Of course, machines cannot really subtract with infinite precision.
+However, they can pretend to do so when only the sign of the result will
+be used, which is the case when the result is stored in the condition
+code. And that is the <em>only</em> way this kind of expression may
+validly be used: as a value to be stored in the condition codes, in a
+register. See <a href="Comparisons.html#Comparisons">Comparisons</a>.
+</p>
+<p>The mode <var>m</var> is not related to the modes of <var>x</var> and <var>y</var>, but
+instead is the mode of the condition code value. It is some mode in class
+<code>MODE_CC</code>, often <code>CCmode</code>. See <a href="Condition-Code.html#Condition-Code">Condition Code</a>. If <var>m</var>
+is <code>CCmode</code>, the operation returns sufficient
+information (in an unspecified format) so that any comparison operator
+can be applied to the result of the <code>COMPARE</code> operation. For other
+modes in class <code>MODE_CC</code>, the operation only returns a subset of
+this information.
+</p>
+<p>Normally, <var>x</var> and <var>y</var> must have the same mode. Otherwise,
+<code>compare</code> is valid only if the mode of <var>x</var> is in class
+<code>MODE_INT</code> and <var>y</var> is a <code>const_int</code> or
+<code>const_double</code> with mode <code>VOIDmode</code>. The mode of <var>x</var>
+determines what mode the comparison is to be done in; thus it must not
+be <code>VOIDmode</code>.
+</p>
+<p>If one of the operands is a constant, it should be placed in the
+second operand and the comparison code adjusted as appropriate.
+</p>
+<p>A <code>compare</code> specifying two <code>VOIDmode</code> constants is not valid
+since there is no way to know in what mode the comparison is to be
+performed; the comparison must either be folded during the compilation
+or the first operand must be loaded into a register while its mode is
+still known.
+</p>
+<a name="index-neg"></a>
+<a name="index-ss_005fneg"></a>
+<a name="index-us_005fneg"></a>
+<a name="index-negation"></a>
+<a name="index-negation-with-signed-saturation"></a>
+<a name="index-negation-with-unsigned-saturation"></a>
+</dd>
+<dt><code>(neg:<var>m</var> <var>x</var>)</code></dt>
+<dt><code>(ss_neg:<var>m</var> <var>x</var>)</code></dt>
+<dt><code>(us_neg:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>These two expressions represent the negation (subtraction from zero) of
+the value represented by <var>x</var>, carried out in mode <var>m</var>. They
+differ in the behavior on overflow of integer modes. In the case of
+<code>neg</code>, the negation of the operand may be a number not representable
+in mode <var>m</var>, in which case it is truncated to <var>m</var>. <code>ss_neg</code>
+and <code>us_neg</code> ensure that an out-of-bounds result saturates to the
+maximum or minimum signed or unsigned value.
+</p>
+<a name="index-mult"></a>
+<a name="index-ss_005fmult"></a>
+<a name="index-us_005fmult"></a>
+<a name="index-multiplication"></a>
+<a name="index-product"></a>
+<a name="index-multiplication-with-signed-saturation"></a>
+<a name="index-multiplication-with-unsigned-saturation"></a>
+</dd>
+<dt><code>(mult:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(ss_mult:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(us_mult:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the signed product of the values represented by <var>x</var> and
+<var>y</var> carried out in machine mode <var>m</var>.
+<code>ss_mult</code> and <code>us_mult</code> ensure that an out-of-bounds result
+saturates to the maximum or minimum signed or unsigned value.
+</p>
+<p>Some machines support a multiplication that generates a product wider
+than the operands. Write the pattern for this as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(mult:<var>m</var> (sign_extend:<var>m</var> <var>x</var>) (sign_extend:<var>m</var> <var>y</var>))
+</pre></div>
+
+<p>where <var>m</var> is wider than the modes of <var>x</var> and <var>y</var>, which need
+not be the same.
+</p>
+<p>For unsigned widening multiplication, use the same idiom, but with
+<code>zero_extend</code> instead of <code>sign_extend</code>.
+</p>
+<a name="index-smul_005fhighpart"></a>
+<a name="index-umul_005fhighpart"></a>
+<a name="index-high_002dpart-multiplication"></a>
+<a name="index-multiplication-high-part"></a>
+</dd>
+<dt><code>(smul_highpart:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(umul_highpart:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the high-part multiplication of <var>x</var> and <var>y</var> carried
+out in machine mode <var>m</var>. <code>smul_highpart</code> returns the high part
+of a signed multiplication, <code>umul_highpart</code> returns the high part
+of an unsigned multiplication.
+</p>
+<a name="index-fma"></a>
+<a name="index-fused-multiply_002dadd"></a>
+</dd>
+<dt><code>(fma:<var>m</var> <var>x</var> <var>y</var> <var>z</var>)</code></dt>
+<dd><p>Represents the <code>fma</code>, <code>fmaf</code>, and <code>fmal</code> builtin
+functions, which compute &lsquo;<samp><var>x</var> * <var>y</var> + <var>z</var></samp>&rsquo;
+without doing an intermediate rounding step.
+</p>
+<a name="index-div"></a>
+<a name="index-ss_005fdiv"></a>
+<a name="index-division"></a>
+<a name="index-signed-division"></a>
+<a name="index-signed-division-with-signed-saturation"></a>
+<a name="index-quotient"></a>
+</dd>
+<dt><code>(div:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(ss_div:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the quotient in signed division of <var>x</var> by <var>y</var>,
+carried out in machine mode <var>m</var>. If <var>m</var> is a floating point
+mode, it represents the exact quotient; otherwise, the integerized
+quotient.
+<code>ss_div</code> ensures that an out-of-bounds result saturates to the maximum
+or minimum signed value.
+</p>
+<p>Some machines have division instructions in which the operands and
+quotient widths are not all the same; you should represent
+such instructions using <code>truncate</code> and <code>sign_extend</code> as in,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(truncate:<var>m1</var> (div:<var>m2</var> <var>x</var> (sign_extend:<var>m2</var> <var>y</var>)))
+</pre></div>
+
+<a name="index-udiv"></a>
+<a name="index-unsigned-division"></a>
+<a name="index-unsigned-division-with-unsigned-saturation"></a>
+<a name="index-division-1"></a>
+</dd>
+<dt><code>(udiv:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(us_div:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>div</code> but represents unsigned division.
+<code>us_div</code> ensures that an out-of-bounds result saturates to the maximum
+or minimum unsigned value.
+</p>
+<a name="index-mod"></a>
+<a name="index-umod"></a>
+<a name="index-remainder"></a>
+<a name="index-division-2"></a>
+</dd>
+<dt><code>(mod:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(umod:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>div</code> and <code>udiv</code> but represent the remainder instead of
+the quotient.
+</p>
+<a name="index-smin"></a>
+<a name="index-smax"></a>
+<a name="index-signed-minimum"></a>
+<a name="index-signed-maximum"></a>
+</dd>
+<dt><code>(smin:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(smax:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the smaller (for <code>smin</code>) or larger (for <code>smax</code>) of
+<var>x</var> and <var>y</var>, interpreted as signed values in mode <var>m</var>.
+When used with floating point, if both operands are zeros, or if either
+operand is <code>NaN</code>, then it is unspecified which of the two operands
+is returned as the result.
+</p>
+<a name="index-umin"></a>
+<a name="index-umax"></a>
+<a name="index-unsigned-minimum-and-maximum"></a>
+</dd>
+<dt><code>(umin:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(umax:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>smin</code> and <code>smax</code>, but the values are interpreted as unsigned
+integers.
+</p>
+<a name="index-not"></a>
+<a name="index-complement_002c-bitwise"></a>
+<a name="index-bitwise-complement"></a>
+</dd>
+<dt><code>(not:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the bitwise complement of the value represented by <var>x</var>,
+carried out in mode <var>m</var>, which must be a fixed-point machine mode.
+</p>
+<a name="index-and"></a>
+<a name="index-logical_002dand_002c-bitwise"></a>
+<a name="index-bitwise-logical_002dand"></a>
+</dd>
+<dt><code>(and:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the bitwise logical-and of the values represented by
+<var>x</var> and <var>y</var>, carried out in machine mode <var>m</var>, which must be
+a fixed-point machine mode.
+</p>
+<a name="index-ior"></a>
+<a name="index-inclusive_002dor_002c-bitwise"></a>
+<a name="index-bitwise-inclusive_002dor"></a>
+</dd>
+<dt><code>(ior:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the bitwise inclusive-or of the values represented by <var>x</var>
+and <var>y</var>, carried out in machine mode <var>m</var>, which must be a
+fixed-point mode.
+</p>
+<a name="index-xor"></a>
+<a name="index-exclusive_002dor_002c-bitwise"></a>
+<a name="index-bitwise-exclusive_002dor"></a>
+</dd>
+<dt><code>(xor:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Represents the bitwise exclusive-or of the values represented by <var>x</var>
+and <var>y</var>, carried out in machine mode <var>m</var>, which must be a
+fixed-point mode.
+</p>
+<a name="index-ashift"></a>
+<a name="index-ss_005fashift"></a>
+<a name="index-us_005fashift"></a>
+<a name="index-left-shift"></a>
+<a name="index-shift"></a>
+<a name="index-arithmetic-shift"></a>
+<a name="index-arithmetic-shift-with-signed-saturation"></a>
+<a name="index-arithmetic-shift-with-unsigned-saturation"></a>
+</dd>
+<dt><code>(ashift:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dt><code>(ss_ashift:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dt><code>(us_ashift:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dd><p>These three expressions represent the result of arithmetically shifting <var>x</var>
+left by <var>c</var> places. They differ in their behavior on overflow of integer
+modes. An <code>ashift</code> operation is a plain shift with no special behavior
+in case of a change in the sign bit; <code>ss_ashift</code> and <code>us_ashift</code>
+saturates to the minimum or maximum representable value if any of the bits
+shifted out differs from the final sign bit.
+</p>
+<p><var>x</var> have mode <var>m</var>, a fixed-point machine mode. <var>c</var>
+be a fixed-point mode or be a constant with mode <code>VOIDmode</code>; which
+mode is determined by the mode called for in the machine description
+entry for the left-shift instruction. For example, on the VAX, the mode
+of <var>c</var> is <code>QImode</code> regardless of <var>m</var>.
+</p>
+<a name="index-lshiftrt"></a>
+<a name="index-right-shift"></a>
+<a name="index-ashiftrt"></a>
+</dd>
+<dt><code>(lshiftrt:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dt><code>(ashiftrt:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dd><p>Like <code>ashift</code> but for right shift. Unlike the case for left shift,
+these two operations are distinct.
+</p>
+<a name="index-rotate-1"></a>
+<a name="index-rotate"></a>
+<a name="index-left-rotate"></a>
+<a name="index-rotatert"></a>
+<a name="index-right-rotate"></a>
+</dd>
+<dt><code>(rotate:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dt><code>(rotatert:<var>m</var> <var>x</var> <var>c</var>)</code></dt>
+<dd><p>Similar but represent left and right rotate. If <var>c</var> is a constant,
+use <code>rotate</code>.
+</p>
+<a name="index-abs"></a>
+<a name="index-ss_005fabs"></a>
+<a name="index-absolute-value"></a>
+</dd>
+<dt><code>(abs:<var>m</var> <var>x</var>)</code></dt>
+<dt><code>(ss_abs:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the absolute value of <var>x</var>, computed in mode <var>m</var>.
+<code>ss_abs</code> ensures that an out-of-bounds result saturates to the
+maximum signed value.
+</p>
+
+<a name="index-sqrt"></a>
+<a name="index-square-root"></a>
+</dd>
+<dt><code>(sqrt:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the square root of <var>x</var>, computed in mode <var>m</var>.
+Most often <var>m</var> will be a floating point mode.
+</p>
+<a name="index-ffs"></a>
+</dd>
+<dt><code>(ffs:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents one plus the index of the least significant 1-bit in
+<var>x</var>, represented as an integer of mode <var>m</var>. (The value is
+zero if <var>x</var> is zero.) The mode of <var>x</var> must be <var>m</var>
+or <code>VOIDmode</code>.
+</p>
+<a name="index-clrsb"></a>
+</dd>
+<dt><code>(clrsb:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the number of redundant leading sign bits in <var>x</var>,
+represented as an integer of mode <var>m</var>, starting at the most
+significant bit position. This is one less than the number of leading
+sign bits (either 0 or 1), with no special cases. The mode of <var>x</var>
+must be <var>m</var> or <code>VOIDmode</code>.
+</p>
+<a name="index-clz"></a>
+</dd>
+<dt><code>(clz:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the number of leading 0-bits in <var>x</var>, represented as an
+integer of mode <var>m</var>, starting at the most significant bit position.
+If <var>x</var> is zero, the value is determined by
+<code>CLZ_DEFINED_VALUE_AT_ZERO</code> (see <a href="Misc.html#Misc">Misc</a>). Note that this is one of
+the few expressions that is not invariant under widening. The mode of
+<var>x</var> must be <var>m</var> or <code>VOIDmode</code>.
+</p>
+<a name="index-ctz"></a>
+</dd>
+<dt><code>(ctz:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the number of trailing 0-bits in <var>x</var>, represented as an
+integer of mode <var>m</var>, starting at the least significant bit position.
+If <var>x</var> is zero, the value is determined by
+<code>CTZ_DEFINED_VALUE_AT_ZERO</code> (see <a href="Misc.html#Misc">Misc</a>). Except for this case,
+<code>ctz(x)</code> is equivalent to <code>ffs(<var>x</var>) - 1</code>. The mode of
+<var>x</var> must be <var>m</var> or <code>VOIDmode</code>.
+</p>
+<a name="index-popcount"></a>
+</dd>
+<dt><code>(popcount:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the number of 1-bits in <var>x</var>, represented as an integer of
+mode <var>m</var>. The mode of <var>x</var> must be <var>m</var> or <code>VOIDmode</code>.
+</p>
+<a name="index-parity"></a>
+</dd>
+<dt><code>(parity:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the number of 1-bits modulo 2 in <var>x</var>, represented as an
+integer of mode <var>m</var>. The mode of <var>x</var> must be <var>m</var> or
+<code>VOIDmode</code>.
+</p>
+<a name="index-bswap"></a>
+</dd>
+<dt><code>(bswap:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the value <var>x</var> with the order of bytes reversed, carried out
+in mode <var>m</var>, which must be a fixed-point machine mode.
+The mode of <var>x</var> must be <var>m</var> or <code>VOIDmode</code>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Comparisons.html#Comparisons" accesskey="n" rel="next">Comparisons</a>, Previous: <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="p" rel="previous">Regs and Memory</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Assembler-Format.html b/share/doc/gccint/Assembler-Format.html
new file mode 100644
index 0000000..a1a1a32
--- /dev/null
+++ b/share/doc/gccint/Assembler-Format.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Assembler Format</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Assembler Format">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Assembler Format">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="File-Framework.html#File-Framework" rel="next" title="File Framework">
+<link href="PIC.html#PIC" rel="previous" title="PIC">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Assembler-Format"></a>
+<div class="header">
+<p>
+Next: <a href="Debugging-Info.html#Debugging-Info" accesskey="n" rel="next">Debugging Info</a>, Previous: <a href="PIC.html#PIC" accesskey="p" rel="previous">PIC</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-the-Output-Assembler-Language"></a>
+<h3 class="section">18.20 Defining the Output Assembler Language</h3>
+
+<p>This section describes macros whose principal purpose is to describe how
+to write instructions in assembler language&mdash;rather than what the
+instructions do.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="File-Framework.html#File-Framework" accesskey="1">File Framework</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Structural information for the assembler file.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Data-Output.html#Data-Output" accesskey="2">Data Output</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output of constants (numbers, strings, addresses).
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Uninitialized-Data.html#Uninitialized-Data" accesskey="3">Uninitialized Data</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output of uninitialized variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Label-Output.html#Label-Output" accesskey="4">Label Output</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output and generation of labels.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Initialization.html#Initialization" accesskey="5">Initialization</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">General principles of initialization
+ and termination routines.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Macros-for-Initialization.html#Macros-for-Initialization" accesskey="6">Macros for Initialization</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+ Specific macros that control the handling of
+ initialization and termination routines.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Instruction-Output.html#Instruction-Output" accesskey="7">Instruction Output</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output of actual instructions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dispatch-Tables.html#Dispatch-Tables" accesskey="8">Dispatch Tables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output of jump tables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exception-Region-Output.html#Exception-Region-Output" accesskey="9">Exception Region Output</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output of exception region code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Alignment-Output.html#Alignment-Output">Alignment Output</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pseudo ops for alignment and skipping data.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Assembler.html b/share/doc/gccint/Assembler.html
new file mode 100644
index 0000000..2e8a188
--- /dev/null
+++ b/share/doc/gccint/Assembler.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Assembler</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Assembler">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Assembler">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Debug-Information.html#Debug-Information" rel="next" title="Debug Information">
+<link href="Incdec.html#Incdec" rel="previous" title="Incdec">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Assembler"></a>
+<div class="header">
+<p>
+Next: <a href="Debug-Information.html#Debug-Information" accesskey="n" rel="next">Debug Information</a>, Previous: <a href="Incdec.html#Incdec" accesskey="p" rel="previous">Incdec</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Assembler-Instructions-as-Expressions"></a>
+<h3 class="section">14.17 Assembler Instructions as Expressions</h3>
+<a name="index-assembler-instructions-in-RTL"></a>
+
+<a name="index-asm_005foperands_002c-usage"></a>
+<p>The RTX code <code>asm_operands</code> represents a value produced by a
+user-specified assembler instruction. It is used to represent
+an <code>asm</code> statement with arguments. An <code>asm</code> statement with
+a single output operand, like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">asm (&quot;foo %1,%2,%0&quot; : &quot;=a&quot; (outputvar) : &quot;g&quot; (x + y), &quot;di&quot; (*z));
+</pre></div>
+
+<p>is represented using a single <code>asm_operands</code> RTX which represents
+the value that is stored in <code>outputvar</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set <var>rtx-for-outputvar</var>
+ (asm_operands &quot;foo %1,%2,%0&quot; &quot;a&quot; 0
+ [<var>rtx-for-addition-result</var> <var>rtx-for-*z</var>]
+ [(asm_input:<var>m1</var> &quot;g&quot;)
+ (asm_input:<var>m2</var> &quot;di&quot;)]))
+</pre></div>
+
+<p>Here the operands of the <code>asm_operands</code> RTX are the assembler
+template string, the output-operand&rsquo;s constraint, the index-number of the
+output operand among the output operands specified, a vector of input
+operand RTX&rsquo;s, and a vector of input-operand modes and constraints. The
+mode <var>m1</var> is the mode of the sum <code>x+y</code>; <var>m2</var> is that of
+<code>*z</code>.
+</p>
+<p>When an <code>asm</code> statement has multiple output values, its insn has
+several such <code>set</code> RTX&rsquo;s inside of a <code>parallel</code>. Each <code>set</code>
+contains an <code>asm_operands</code>; all of these share the same assembler
+template and vectors, but each contains the constraint for the respective
+output operand. They are also distinguished by the output-operand index
+number, which is 0, 1, &hellip; for successive output operands.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Attr-Example.html b/share/doc/gccint/Attr-Example.html
new file mode 100644
index 0000000..517ad31
--- /dev/null
+++ b/share/doc/gccint/Attr-Example.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Attr Example</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Attr Example">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Attr Example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Insn-Lengths.html#Insn-Lengths" rel="next" title="Insn Lengths">
+<link href="Tagging-Insns.html#Tagging-Insns" rel="previous" title="Tagging Insns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Attr-Example"></a>
+<div class="header">
+<p>
+Next: <a href="Insn-Lengths.html#Insn-Lengths" accesskey="n" rel="next">Insn Lengths</a>, Previous: <a href="Tagging-Insns.html#Tagging-Insns" accesskey="p" rel="previous">Tagging Insns</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Example-of-Attribute-Specifications"></a>
+<h4 class="subsection">17.19.4 Example of Attribute Specifications</h4>
+<a name="index-attribute-specifications-example"></a>
+<a name="index-attribute-specifications"></a>
+
+<p>The judicious use of defaulting is important in the efficient use of
+insn attributes. Typically, insns are divided into <em>types</em> and an
+attribute, customarily called <code>type</code>, is used to represent this
+value. This attribute is normally used only to define the default value
+for other attributes. An example will clarify this usage.
+</p>
+<p>Assume we have a RISC machine with a condition code and in which only
+full-word operations are performed in registers. Let us assume that we
+can divide all insns into loads, stores, (integer) arithmetic
+operations, floating point operations, and branches.
+</p>
+<p>Here we will concern ourselves with determining the effect of an insn on
+the condition code and will limit ourselves to the following possible
+effects: The condition code can be set unpredictably (clobbered), not
+be changed, be set to agree with the results of the operation, or only
+changed if the item previously set into the condition code has been
+modified.
+</p>
+<p>Here is part of a sample <samp>md</samp> file for such a machine:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;type&quot; &quot;load,store,arith,fp,branch&quot; (const_string &quot;arith&quot;))
+
+(define_attr &quot;cc&quot; &quot;clobber,unchanged,set,change0&quot;
+ (cond [(eq_attr &quot;type&quot; &quot;load&quot;)
+ (const_string &quot;change0&quot;)
+ (eq_attr &quot;type&quot; &quot;store,branch&quot;)
+ (const_string &quot;unchanged&quot;)
+ (eq_attr &quot;type&quot; &quot;arith&quot;)
+ (if_then_else (match_operand:SI 0 &quot;&quot; &quot;&quot;)
+ (const_string &quot;set&quot;)
+ (const_string &quot;clobber&quot;))]
+ (const_string &quot;clobber&quot;)))
+
+(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r,r,m&quot;)
+ (match_operand:SI 1 &quot;general_operand&quot; &quot;r,m,r&quot;))]
+ &quot;&quot;
+ &quot;@
+ move %0,%1
+ load %0,%1
+ store %0,%1&quot;
+ [(set_attr &quot;type&quot; &quot;arith,load,store&quot;)])
+</pre></div>
+
+<p>Note that we assume in the above example that arithmetic operations
+performed on quantities smaller than a machine word clobber the condition
+code since they will set the condition code to a value corresponding to the
+full-word result.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Insn-Lengths.html#Insn-Lengths" accesskey="n" rel="next">Insn Lengths</a>, Previous: <a href="Tagging-Insns.html#Tagging-Insns" accesskey="p" rel="previous">Tagging Insns</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Attributes.html b/share/doc/gccint/Attributes.html
new file mode 100644
index 0000000..eff2832
--- /dev/null
+++ b/share/doc/gccint/Attributes.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Attributes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Attributes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Attributes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Expression-trees.html#Expression-trees" rel="next" title="Expression trees">
+<link href="Adding-new-DECL-node-types.html#Adding-new-DECL-node-types" rel="previous" title="Adding new DECL node types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Attributes"></a>
+<div class="header">
+<p>
+Next: <a href="Expression-trees.html#Expression-trees" accesskey="n" rel="next">Expression trees</a>, Previous: <a href="Declarations.html#Declarations" accesskey="p" rel="previous">Declarations</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Attributes-in-trees"></a>
+<h3 class="section">11.5 Attributes in trees</h3>
+<a name="index-attributes"></a>
+
+<p>Attributes, as specified using the <code>__attribute__</code> keyword, are
+represented internally as a <code>TREE_LIST</code>. The <code>TREE_PURPOSE</code>
+is the name of the attribute, as an <code>IDENTIFIER_NODE</code>. The
+<code>TREE_VALUE</code> is a <code>TREE_LIST</code> of the arguments of the
+attribute, if any, or <code>NULL_TREE</code> if there are no arguments; the
+arguments are stored as the <code>TREE_VALUE</code> of successive entries in
+the list, and may be identifiers or expressions. The <code>TREE_CHAIN</code>
+of the attribute is the next attribute in a list of attributes applying
+to the same declaration or type, or <code>NULL_TREE</code> if there are no
+further attributes in the list.
+</p>
+<p>Attributes may be attached to declarations and to types; these
+attributes may be accessed with the following macros. All attributes
+are stored in this way, and many also cause other changes to the
+declaration or type or to other internal compiler data structures.
+</p>
+<dl>
+<dt><a name="index-DECL_005fATTRIBUTES"></a>Tree Macro: <em>tree</em> <strong>DECL_ATTRIBUTES</strong> <em>(tree <var>decl</var>)</em></dt>
+<dd><p>This macro returns the attributes on the declaration <var>decl</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TYPE_005fATTRIBUTES"></a>Tree Macro: <em>tree</em> <strong>TYPE_ATTRIBUTES</strong> <em>(tree <var>type</var>)</em></dt>
+<dd><p>This macro returns the attributes on the type <var>type</var>.
+</p></dd></dl>
+
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/BTF-Debug.html b/share/doc/gccint/BTF-Debug.html
new file mode 100644
index 0000000..0a0f403
--- /dev/null
+++ b/share/doc/gccint/BTF-Debug.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: BTF Debug</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: BTF Debug">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: BTF Debug">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging-Info.html#Debugging-Info" rel="up" title="Debugging Info">
+<link href="Floating-Point.html#Floating-Point" rel="next" title="Floating Point">
+<link href="CTF-Debug.html#CTF-Debug" rel="previous" title="CTF Debug">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="BTF-Debug"></a>
+<div class="header">
+<p>
+Previous: <a href="CTF-Debug.html#CTF-Debug" accesskey="p" rel="previous">CTF Debug</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-for-BTF-Debug-Format"></a>
+<h4 class="subsection">18.21.5 Macros for BTF Debug Format</h4>
+
+<p>Here are macros for BTF debug format.
+</p>
+<dl>
+<dt><a name="index-BTF_005fDEBUGGING_005fINFO"></a>Macro: <strong>BTF_DEBUGGING_INFO</strong></dt>
+<dd><p>Define this macro if GCC should produce debugging output in BTF debug
+format in response to the <samp>-gbtf</samp> option.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Back-End.html b/share/doc/gccint/Back-End.html
new file mode 100644
index 0000000..281014a
--- /dev/null
+++ b/share/doc/gccint/Back-End.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Back End</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Back End">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Back End">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Testsuites.html#Testsuites" rel="next" title="Testsuites">
+<link href="Front-End-Makefile.html#Front-End-Makefile" rel="previous" title="Front End Makefile">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Back-End"></a>
+<div class="header">
+<p>
+Previous: <a href="Front-End.html#Front-End" accesskey="p" rel="previous">Front End</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Anatomy-of-a-Target-Back-End"></a>
+<h4 class="subsection">6.3.9 Anatomy of a Target Back End</h4>
+
+<p>A back end for a target architecture in GCC has the following parts:
+</p>
+<ul>
+<li> A directory <samp><var>machine</var></samp> under <samp>gcc/config</samp>, containing a
+machine description <samp><var>machine</var>.md</samp> file (see <a href="Machine-Desc.html#Machine-Desc">Machine Descriptions</a>), header files <samp><var>machine</var>.h</samp> and
+<samp><var>machine</var>-protos.h</samp> and a source file <samp><var>machine</var>.c</samp>
+(see <a href="Target-Macros.html#Target-Macros">Target Description Macros and Functions</a>),
+possibly a target Makefile fragment <samp>t-<var>machine</var></samp>
+(see <a href="Target-Fragment.html#Target-Fragment">The Target Makefile Fragment</a>), and maybe
+some other files. The names of these files may be changed from the
+defaults given by explicit specifications in <samp>config.gcc</samp>.
+</li><li> If necessary, a file <samp><var>machine</var>-modes.def</samp> in the
+<samp><var>machine</var></samp> directory, containing additional machine modes to
+represent condition codes. See <a href="Condition-Code.html#Condition-Code">Condition Code</a>, for further details.
+</li><li> An optional <samp><var>machine</var>.opt</samp> file in the <samp><var>machine</var></samp>
+directory, containing a list of target-specific options. You can also
+add other option files using the <code>extra_options</code> variable in
+<samp>config.gcc</samp>. See <a href="Options.html#Options">Options</a>.
+</li><li> Entries in <samp>config.gcc</samp> (see <a href="System-Config.html#System-Config">The
+<samp>config.gcc</samp> File</a>) for the systems with this target
+architecture.
+</li><li> Documentation in <samp>gcc/doc/invoke.texi</samp> for any command-line
+options supported by this target (see <a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time
+Target Specification</a>). This means both entries in the summary table
+of options and details of the individual options.
+</li><li> Documentation in <samp>gcc/doc/extend.texi</samp> for any target-specific
+attributes supported (see <a href="Target-Attributes.html#Target-Attributes">Defining
+target-specific uses of <code>__attribute__</code></a>), including where the
+same attribute is already supported on some targets, which are
+enumerated in the manual.
+</li><li> Documentation in <samp>gcc/doc/extend.texi</samp> for any target-specific
+pragmas supported.
+</li><li> Documentation in <samp>gcc/doc/extend.texi</samp> of any target-specific
+built-in functions supported.
+</li><li> Documentation in <samp>gcc/doc/extend.texi</samp> of any target-specific
+format checking styles supported.
+</li><li> Documentation in <samp>gcc/doc/md.texi</samp> of any target-specific
+constraint letters (see <a href="Machine-Constraints.html#Machine-Constraints">Constraints for
+Particular Machines</a>).
+</li><li> A note in <samp>gcc/doc/contrib.texi</samp> under the person or people who
+contributed the target support.
+</li><li> Entries in <samp>gcc/doc/install.texi</samp> for all target triplets
+supported with this target architecture, giving details of any special
+notes about installation for this target, or saying that there are no
+special notes if there are none.
+</li><li> Possibly other support outside the <samp>gcc</samp> directory for runtime
+libraries. FIXME: reference docs for this. The <code>libstdc++</code> porting
+manual needs to be installed as info for this to work, or to be a
+chapter of this manual.
+</li></ul>
+
+<p>The <samp><var>machine</var>.h</samp> header is included very early in GCC&rsquo;s
+standard sequence of header files, while <samp><var>machine</var>-protos.h</samp>
+is included late in the sequence. Thus <samp><var>machine</var>-protos.h</samp>
+can include declarations referencing types that are not defined when
+<samp><var>machine</var>.h</samp> is included, specifically including those from
+<samp>rtl.h</samp> and <samp>tree.h</samp>. Since both RTL and tree types may not
+be available in every context where <samp><var>machine</var>-protos.h</samp> is
+included, in this file you should guard declarations using these types
+inside appropriate <code>#ifdef RTX_CODE</code> or <code>#ifdef TREE_CODE</code>
+conditional code segments.
+</p>
+<p>If the backend uses shared data structures that require <code>GTY</code> markers
+for garbage collection (see <a href="Type-Information.html#Type-Information">Type Information</a>), you must declare those
+in <samp><var>machine</var>.h</samp> rather than <samp><var>machine</var>-protos.h</samp>.
+Any definitions required for building libgcc must also go in
+<samp><var>machine</var>.h</samp>.
+</p>
+<p>GCC uses the macro <code>IN_TARGET_CODE</code> to distinguish between
+machine-specific <samp>.c</samp> and <samp>.cc</samp> files and
+machine-independent <samp>.c</samp> and <samp>.cc</samp> files. Machine-specific
+files should use the directive:
+</p>
+<div class="example">
+<pre class="example">#define IN_TARGET_CODE 1
+</pre></div>
+
+<p>before including <code>config.h</code>.
+</p>
+<p>If the back end is added to the official GCC source repository, the
+following are also necessary:
+</p>
+<ul>
+<li> An entry for the target architecture in <samp>readings.html</samp> on the
+GCC web site, with any relevant links.
+</li><li> Details of the properties of the back end and target architecture in
+<samp>backends.html</samp> on the GCC web site.
+</li><li> A news item about the contribution of support for that target
+architecture, in <samp>index.html</samp> on the GCC web site.
+</li><li> Normally, one or more maintainers of that target listed in
+<samp>MAINTAINERS</samp>. Some existing architectures may be unmaintained,
+but it would be unusual to add support for a target that does not have
+a maintainer when support is added.
+</li><li> Target triplets covering all <samp>config.gcc</samp> stanzas for the target,
+in the list in <samp>contrib/config-list.mk</samp>.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Front-End.html#Front-End" accesskey="p" rel="previous">Front End</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Basic-Blocks.html b/share/doc/gccint/Basic-Blocks.html
new file mode 100644
index 0000000..a816119
--- /dev/null
+++ b/share/doc/gccint/Basic-Blocks.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Basic Blocks</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Basic Blocks">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Basic Blocks">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Control-Flow.html#Control-Flow" rel="up" title="Control Flow">
+<link href="Edges.html#Edges" rel="next" title="Edges">
+<link href="Control-Flow.html#Control-Flow" rel="previous" title="Control Flow">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Basic-Blocks"></a>
+<div class="header">
+<p>
+Next: <a href="Edges.html#Edges" accesskey="n" rel="next">Edges</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Basic-Blocks-1"></a>
+<h3 class="section">15.1 Basic Blocks</h3>
+
+<a name="index-basic-block"></a>
+<a name="index-basic_005fblock-1"></a>
+<p>A basic block is a straight-line sequence of code with only one entry
+point and only one exit. In GCC, basic blocks are represented using
+the <code>basic_block</code> data type.
+</p>
+<a name="index-ENTRY_005fBLOCK_005fPTR_002c-EXIT_005fBLOCK_005fPTR"></a>
+<p>Special basic blocks represent possible entry and exit points of a
+function. These blocks are called <code>ENTRY_BLOCK_PTR</code> and
+<code>EXIT_BLOCK_PTR</code>. These blocks do not contain any code.
+</p>
+<a name="index-BASIC_005fBLOCK"></a>
+<p>The <code>BASIC_BLOCK</code> array contains all basic blocks in an
+unspecified order. Each <code>basic_block</code> structure has a field
+that holds a unique integer identifier <code>index</code> that is the
+index of the block in the <code>BASIC_BLOCK</code> array.
+The total number of basic blocks in the function is
+<code>n_basic_blocks</code>. Both the basic block indices and
+the total number of basic blocks may vary during the compilation
+process, as passes reorder, create, duplicate, and destroy basic
+blocks. The index for any block should never be greater than
+<code>last_basic_block</code>. The indices 0 and 1 are special codes
+reserved for <code>ENTRY_BLOCK</code> and <code>EXIT_BLOCK</code>, the
+indices of <code>ENTRY_BLOCK_PTR</code> and <code>EXIT_BLOCK_PTR</code>.
+</p>
+<a name="index-next_005fbb_002c-prev_005fbb_002c-FOR_005fEACH_005fBB_002c-FOR_005fALL_005fBB"></a>
+<p>Two pointer members of the <code>basic_block</code> structure are the
+pointers <code>next_bb</code> and <code>prev_bb</code>. These are used to keep
+doubly linked chain of basic blocks in the same order as the
+underlying instruction stream. The chain of basic blocks is updated
+transparently by the provided API for manipulating the CFG. The macro
+<code>FOR_EACH_BB</code> can be used to visit all the basic blocks in
+lexicographical order, except <code>ENTRY_BLOCK</code> and <code>EXIT_BLOCK</code>.
+The macro <code>FOR_ALL_BB</code> also visits all basic blocks in
+lexicographical order, including <code>ENTRY_BLOCK</code> and <code>EXIT_BLOCK</code>.
+</p>
+<a name="index-post_005forder_005fcompute_002c-inverted_005fpost_005forder_005fcompute_002c-walk_005fdominator_005ftree"></a>
+<p>The functions <code>post_order_compute</code> and <code>inverted_post_order_compute</code>
+can be used to compute topological orders of the CFG. The orders are
+stored as vectors of basic block indices. The <code>BASIC_BLOCK</code> array
+can be used to iterate each basic block by index.
+Dominator traversals are also possible using
+<code>walk_dominator_tree</code>. Given two basic blocks A and B, block A
+dominates block B if A is <em>always</em> executed before B.
+</p>
+<p>Each <code>basic_block</code> also contains pointers to the first
+instruction (the <em>head</em>) and the last instruction (the <em>tail</em>)
+or <em>end</em> of the instruction stream contained in a basic block. In
+fact, since the <code>basic_block</code> data type is used to represent
+blocks in both major intermediate representations of GCC (<code>GIMPLE</code>
+and RTL), there are pointers to the head and end of a basic block for
+both representations, stored in intermediate representation specific
+data in the <code>il</code> field of <code>struct basic_block_def</code>.
+</p>
+<a name="index-CODE_005fLABEL"></a>
+<a name="index-NOTE_005fINSN_005fBASIC_005fBLOCK"></a>
+<p>For RTL, these pointers are <code>BB_HEAD</code> and <code>BB_END</code>.
+</p>
+<a name="index-insn-notes_002c-notes"></a>
+<a name="index-NOTE_005fINSN_005fBASIC_005fBLOCK-1"></a>
+<p>In the RTL representation of a function, the instruction stream
+contains not only the &ldquo;real&rdquo; instructions, but also <em>notes</em>
+or <em>insn notes</em> (to distinguish them from <em>reg notes</em>).
+Any function that moves or duplicates the basic blocks needs
+to take care of updating of these notes. Many of these notes expect
+that the instruction stream consists of linear regions, so updating
+can sometimes be tedious. All types of insn notes are defined
+in <samp>insn-notes.def</samp>.
+</p>
+<p>In the RTL function representation, the instructions contained in a
+basic block always follow a <code>NOTE_INSN_BASIC_BLOCK</code>, but zero
+or more <code>CODE_LABEL</code> nodes can precede the block note.
+A basic block ends with a control flow instruction or with the last
+instruction before the next <code>CODE_LABEL</code> or
+<code>NOTE_INSN_BASIC_BLOCK</code>.
+By definition, a <code>CODE_LABEL</code> cannot appear in the middle of
+the instruction stream of a basic block.
+</p>
+<a name="index-can_005ffallthru"></a>
+<a name="index-table-jump"></a>
+<p>In addition to notes, the jump table vectors are also represented as
+&ldquo;pseudo-instructions&rdquo; inside the insn stream. These vectors never
+appear in the basic block and should always be placed just after the
+table jump instructions referencing them. After removing the
+table-jump it is often difficult to eliminate the code computing the
+address and referencing the vector, so cleaning up these vectors is
+postponed until after liveness analysis. Thus the jump table vectors
+may appear in the insn stream unreferenced and without any purpose.
+Before any edge is made <em>fall-thru</em>, the existence of such
+construct in the way needs to be checked by calling
+<code>can_fallthru</code> function.
+</p>
+<a name="index-GIMPLE-statement-iterators"></a>
+<p>For the <code>GIMPLE</code> representation, the PHI nodes and statements
+contained in a basic block are in a <code>gimple_seq</code> pointed to by
+the basic block intermediate language specific pointers.
+Abstract containers and iterators are used to access the PHI nodes
+and statements in a basic blocks. These iterators are called
+<em>GIMPLE statement iterators</em> (GSIs). Grep for <code>^gsi</code>
+in the various <samp>gimple-*</samp> and <samp>tree-*</samp> files.
+There is a <code>gimple_stmt_iterator</code> type for iterating over
+all kinds of statement, and a <code>gphi_iterator</code> subclass for
+iterating over PHI nodes.
+The following snippet will pretty-print all PHI nodes the statements
+of the current function in the GIMPLE representation.
+</p>
+<div class="smallexample">
+<pre class="smallexample">basic_block bb;
+
+FOR_EACH_BB (bb)
+ {
+ gphi_iterator pi;
+ gimple_stmt_iterator si;
+
+ for (pi = gsi_start_phis (bb); !gsi_end_p (pi); gsi_next (&amp;pi))
+ {
+ gphi *phi = pi.phi ();
+ print_gimple_stmt (dump_file, phi, 0, TDF_SLIM);
+ }
+ for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&amp;si))
+ {
+ gimple stmt = gsi_stmt (si);
+ print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
+ }
+ }
+</pre></div>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Edges.html#Edges" accesskey="n" rel="next">Edges</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Basic-Statements.html b/share/doc/gccint/Basic-Statements.html
new file mode 100644
index 0000000..904c8da
--- /dev/null
+++ b/share/doc/gccint/Basic-Statements.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Basic Statements</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Basic Statements">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Basic Statements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Blocks.html#Blocks" rel="next" title="Blocks">
+<link href="Statements.html#Statements" rel="previous" title="Statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Basic-Statements"></a>
+<div class="header">
+<p>
+Next: <a href="Blocks.html#Blocks" accesskey="n" rel="next">Blocks</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Basic-Statements-1"></a>
+<h4 class="subsection">11.7.1 Basic Statements</h4>
+<a name="index-Basic-Statements"></a>
+
+<dl compact="compact">
+<dt><code>ASM_EXPR</code></dt>
+<dd>
+<p>Used to represent an inline assembly statement. For an inline assembly
+statement like:
+</p><div class="smallexample">
+<pre class="smallexample">asm (&quot;mov x, y&quot;);
+</pre></div>
+<p>The <code>ASM_STRING</code> macro will return a <code>STRING_CST</code> node for
+<code>&quot;mov x, y&quot;</code>. If the original statement made use of the
+extended-assembly syntax, then <code>ASM_OUTPUTS</code>,
+<code>ASM_INPUTS</code>, and <code>ASM_CLOBBERS</code> will be the outputs, inputs,
+and clobbers for the statement, represented as <code>STRING_CST</code> nodes.
+The extended-assembly syntax looks like:
+</p><div class="smallexample">
+<pre class="smallexample">asm (&quot;fsinx %1,%0&quot; : &quot;=f&quot; (result) : &quot;f&quot; (angle));
+</pre></div>
+<p>The first string is the <code>ASM_STRING</code>, containing the instruction
+template. The next two strings are the output and inputs, respectively;
+this statement has no clobbers. As this example indicates, &ldquo;plain&rdquo;
+assembly statements are merely a special case of extended assembly
+statements; they have no cv-qualifiers, outputs, inputs, or clobbers.
+All of the strings will be <code>NUL</code>-terminated, and will contain no
+embedded <code>NUL</code>-characters.
+</p>
+<p>If the assembly statement is declared <code>volatile</code>, or if the
+statement was not an extended assembly statement, and is therefore
+implicitly volatile, then the predicate <code>ASM_VOLATILE_P</code> will hold
+of the <code>ASM_EXPR</code>.
+</p>
+</dd>
+<dt><code>DECL_EXPR</code></dt>
+<dd>
+<p>Used to represent a local declaration. The <code>DECL_EXPR_DECL</code> macro
+can be used to obtain the entity declared. This declaration may be a
+<code>LABEL_DECL</code>, indicating that the label declared is a local label.
+(As an extension, GCC allows the declaration of labels with scope.) In
+C, this declaration may be a <code>FUNCTION_DECL</code>, indicating the
+use of the GCC nested function extension. For more information,
+see <a href="Functions.html#Functions">Functions</a>.
+</p>
+</dd>
+<dt><code>LABEL_EXPR</code></dt>
+<dd>
+<p>Used to represent a label. The <code>LABEL_DECL</code> declared by this
+statement can be obtained with the <code>LABEL_EXPR_LABEL</code> macro. The
+<code>IDENTIFIER_NODE</code> giving the name of the label can be obtained from
+the <code>LABEL_DECL</code> with <code>DECL_NAME</code>.
+</p>
+</dd>
+<dt><code>GOTO_EXPR</code></dt>
+<dd>
+<p>Used to represent a <code>goto</code> statement. The <code>GOTO_DESTINATION</code> will
+usually be a <code>LABEL_DECL</code>. However, if the &ldquo;computed goto&rdquo; extension
+has been used, the <code>GOTO_DESTINATION</code> will be an arbitrary expression
+indicating the destination. This expression will always have pointer type.
+</p>
+</dd>
+<dt><code>RETURN_EXPR</code></dt>
+<dd>
+<p>Used to represent a <code>return</code> statement. Operand 0 represents the
+value to return. It should either be the <code>RESULT_DECL</code> for the
+containing function, or a <code>MODIFY_EXPR</code> or <code>INIT_EXPR</code>
+setting the function&rsquo;s <code>RESULT_DECL</code>. It will be
+<code>NULL_TREE</code> if the statement was just
+</p><div class="smallexample">
+<pre class="smallexample">return;
+</pre></div>
+
+</dd>
+<dt><code>LOOP_EXPR</code></dt>
+<dd><p>These nodes represent &ldquo;infinite&rdquo; loops. The <code>LOOP_EXPR_BODY</code>
+represents the body of the loop. It should be executed forever, unless
+an <code>EXIT_EXPR</code> is encountered.
+</p>
+</dd>
+<dt><code>EXIT_EXPR</code></dt>
+<dd><p>These nodes represent conditional exits from the nearest enclosing
+<code>LOOP_EXPR</code>. The single operand is the condition; if it is
+nonzero, then the loop should be exited. An <code>EXIT_EXPR</code> will only
+appear within a <code>LOOP_EXPR</code>.
+</p>
+</dd>
+<dt><code>SWITCH_EXPR</code></dt>
+<dd>
+<p>Used to represent a <code>switch</code> statement. The <code>SWITCH_COND</code>
+is the expression on which the switch is occurring. The
+<code>SWITCH_BODY</code> is the body of the switch statement.
+<code>SWITCH_ALL_CASES_P</code> is true if the switch includes a default
+label or the case label ranges cover all possible values of the
+condition expression.
+</p>
+<p>Note that <code>TREE_TYPE</code> for a <code>SWITCH_EXPR</code> represents the
+original type of switch expression as given in the source, before any
+compiler conversions, instead of the type of the switch expression
+itself (which is not meaningful).
+</p>
+</dd>
+<dt><code>CASE_LABEL_EXPR</code></dt>
+<dd>
+<p>Use to represent a <code>case</code> label, range of <code>case</code> labels, or a
+<code>default</code> label. If <code>CASE_LOW</code> is <code>NULL_TREE</code>, then this is a
+<code>default</code> label. Otherwise, if <code>CASE_HIGH</code> is <code>NULL_TREE</code>, then
+this is an ordinary <code>case</code> label. In this case, <code>CASE_LOW</code> is
+an expression giving the value of the label. Both <code>CASE_LOW</code> and
+<code>CASE_HIGH</code> are <code>INTEGER_CST</code> nodes. These values will have
+the same type as the condition expression in the switch statement.
+</p>
+<p>Otherwise, if both <code>CASE_LOW</code> and <code>CASE_HIGH</code> are defined, the
+statement is a range of case labels. Such statements originate with the
+extension that allows users to write things of the form:
+</p><div class="smallexample">
+<pre class="smallexample">case 2 ... 5:
+</pre></div>
+<p>The first value will be <code>CASE_LOW</code>, while the second will be
+<code>CASE_HIGH</code>.
+</p>
+</dd>
+<dt><code>DEBUG_BEGIN_STMT</code></dt>
+<dd>
+<p>Marks the beginning of a source statement, for purposes of debug
+information generation.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Blocks.html#Blocks" accesskey="n" rel="next">Blocks</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Bit_002dFields.html b/share/doc/gccint/Bit_002dFields.html
new file mode 100644
index 0000000..7e6783e
--- /dev/null
+++ b/share/doc/gccint/Bit_002dFields.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Bit-Fields</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Bit-Fields">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Bit-Fields">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Vector-Operations.html#Vector-Operations" rel="next" title="Vector Operations">
+<link href="Comparisons.html#Comparisons" rel="previous" title="Comparisons">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Bit_002dFields"></a>
+<div class="header">
+<p>
+Next: <a href="Vector-Operations.html#Vector-Operations" accesskey="n" rel="next">Vector Operations</a>, Previous: <a href="Comparisons.html#Comparisons" accesskey="p" rel="previous">Comparisons</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Bit_002dFields-1"></a>
+<h3 class="section">14.11 Bit-Fields</h3>
+<a name="index-bit_002dfields"></a>
+
+<p>Special expression codes exist to represent bit-field instructions.
+</p>
+<dl compact="compact">
+<dd><a name="index-sign_005fextract"></a>
+<a name="index-BITS_005fBIG_005fENDIAN_002c-effect-on-sign_005fextract"></a>
+</dd>
+<dt><code>(sign_extract:<var>m</var> <var>loc</var> <var>size</var> <var>pos</var>)</code></dt>
+<dd><p>This represents a reference to a sign-extended bit-field contained or
+starting in <var>loc</var> (a memory or register reference). The bit-field
+is <var>size</var> bits wide and starts at bit <var>pos</var>. The compilation
+option <code>BITS_BIG_ENDIAN</code> says which end of the memory unit
+<var>pos</var> counts from.
+</p>
+<p>If <var>loc</var> is in memory, its mode must be a single-byte integer mode.
+If <var>loc</var> is in a register, the mode to use is specified by the
+operand of the <code>insv</code> or <code>extv</code> pattern
+(see <a href="Standard-Names.html#Standard-Names">Standard Names</a>) and is usually a full-word integer mode,
+which is the default if none is specified.
+</p>
+<p>The mode of <var>pos</var> is machine-specific and is also specified
+in the <code>insv</code> or <code>extv</code> pattern.
+</p>
+<p>The mode <var>m</var> is the same as the mode that would be used for
+<var>loc</var> if it were a register.
+</p>
+<p>A <code>sign_extract</code> cannot appear as an lvalue, or part thereof,
+in RTL.
+</p>
+<a name="index-zero_005fextract"></a>
+</dd>
+<dt><code>(zero_extract:<var>m</var> <var>loc</var> <var>size</var> <var>pos</var>)</code></dt>
+<dd><p>Like <code>sign_extract</code> but refers to an unsigned or zero-extended
+bit-field. The same sequence of bits are extracted, but they
+are filled to an entire word with zeros instead of by sign-extension.
+</p>
+<p>Unlike <code>sign_extract</code>, this type of expressions can be lvalues
+in RTL; they may appear on the left side of an assignment, indicating
+insertion of a value into the specified bit-field.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Blocks.html b/share/doc/gccint/Blocks.html
new file mode 100644
index 0000000..7995058
--- /dev/null
+++ b/share/doc/gccint/Blocks.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Blocks</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Blocks">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Blocks">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Statement-Sequences.html#Statement-Sequences" rel="next" title="Statement Sequences">
+<link href="Basic-Statements.html#Basic-Statements" rel="previous" title="Basic Statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Blocks"></a>
+<div class="header">
+<p>
+Next: <a href="Statement-Sequences.html#Statement-Sequences" accesskey="n" rel="next">Statement Sequences</a>, Previous: <a href="Basic-Statements.html#Basic-Statements" accesskey="p" rel="previous">Basic Statements</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Blocks-1"></a>
+<h4 class="subsection">11.7.2 Blocks</h4>
+<a name="index-Blocks"></a>
+
+<p>Block scopes and the variables they declare in GENERIC are
+expressed using the <code>BIND_EXPR</code> code, which in previous
+versions of GCC was primarily used for the C statement-expression
+extension.
+</p>
+<p>Variables in a block are collected into <code>BIND_EXPR_VARS</code> in
+declaration order through their <code>TREE_CHAIN</code> field. Any runtime
+initialization is moved out of <code>DECL_INITIAL</code> and into a
+statement in the controlled block. When gimplifying from C or C++,
+this initialization replaces the <code>DECL_STMT</code>. These variables
+will never require cleanups. The scope of these variables is just the
+body
+</p>
+<p>Variable-length arrays (VLAs) complicate this process, as their size
+often refers to variables initialized earlier in the block and their
+initialization involves an explicit stack allocation. To handle this,
+we add an indirection and replace them with a pointer to stack space
+allocated by means of <code>alloca</code>. In most cases, we also arrange
+for this space to be reclaimed when the enclosing <code>BIND_EXPR</code> is
+exited, the exception to this being when there is an explicit call to
+<code>alloca</code> in the source code, in which case the stack is left
+depressed on exit of the <code>BIND_EXPR</code>.
+</p>
+<p>A C++ program will usually contain more <code>BIND_EXPR</code>s than
+there are syntactic blocks in the source code, since several C++
+constructs have implicit scopes associated with them. On the
+other hand, although the C++ front end uses pseudo-scopes to
+handle cleanups for objects with destructors, these don&rsquo;t
+translate into the GIMPLE form; multiple declarations at the same
+level use the same <code>BIND_EXPR</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Build.html b/share/doc/gccint/Build.html
new file mode 100644
index 0000000..b090336
--- /dev/null
+++ b/share/doc/gccint/Build.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Build</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Build">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Build">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Makefile.html#Makefile" rel="next" title="Makefile">
+<link href="Configuration-Files.html#Configuration-Files" rel="previous" title="Configuration Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Build"></a>
+<div class="header">
+<p>
+Next: <a href="Makefile.html#Makefile" accesskey="n" rel="next">Makefile</a>, Previous: <a href="Configuration.html#Configuration" accesskey="p" rel="previous">Configuration</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Build-System-in-the-gcc-Directory"></a>
+<h4 class="subsection">6.3.3 Build System in the <samp>gcc</samp> Directory</h4>
+
+<p>FIXME: describe the build system, including what is built in what
+stages. Also list the various source files that are used in the build
+process but aren&rsquo;t source files of GCC itself and so aren&rsquo;t documented
+below (see <a href="Passes.html#Passes">Passes</a>).
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/C-Constraint-Interface.html b/share/doc/gccint/C-Constraint-Interface.html
new file mode 100644
index 0000000..aec653a
--- /dev/null
+++ b/share/doc/gccint/C-Constraint-Interface.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: C Constraint Interface</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: C Constraint Interface">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: C Constraint Interface">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Standard-Names.html#Standard-Names" rel="next" title="Standard Names">
+<link href="Define-Constraints.html#Define-Constraints" rel="previous" title="Define Constraints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="C-Constraint-Interface"></a>
+<div class="header">
+<p>
+Previous: <a href="Define-Constraints.html#Define-Constraints" accesskey="p" rel="previous">Define Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Testing-constraints-from-C"></a>
+<h4 class="subsection">17.8.8 Testing constraints from C</h4>
+<a name="index-testing-constraints"></a>
+<a name="index-constraints_002c-testing"></a>
+
+<p>It is occasionally useful to test a constraint from C code rather than
+implicitly via the constraint string in a <code>match_operand</code>. The
+generated file <samp>tm_p.h</samp> declares a few interfaces for working
+with constraints. At present these are defined for all constraints
+except <code>g</code> (which is equivalent to <code>general_operand</code>).
+</p>
+<p>Some valid constraint names are not valid C identifiers, so there is a
+mangling scheme for referring to them from C. Constraint names that
+do not contain angle brackets or underscores are left unchanged.
+Underscores are doubled, each &lsquo;<samp>&lt;</samp>&rsquo; is replaced with &lsquo;<samp>_l</samp>&rsquo;, and
+each &lsquo;<samp>&gt;</samp>&rsquo; with &lsquo;<samp>_g</samp>&rsquo;. Here are some examples:
+</p>
+<div class="example">
+<table>
+<tr><td><pre class="example"><strong>Original</strong></pre></td><td><pre class="example"><strong>Mangled</strong></pre></td></tr>
+<tr><td><pre class="example"><code>x</code></pre></td><td><pre class="example"><code>x</code></pre></td></tr>
+<tr><td><pre class="example"><code>P42x</code></pre></td><td><pre class="example"><code>P42x</code></pre></td></tr>
+<tr><td><pre class="example"><code>P4_x</code></pre></td><td><pre class="example"><code>P4__x</code></pre></td></tr>
+<tr><td><pre class="example"><code>P4&gt;x</code></pre></td><td><pre class="example"><code>P4_gx</code></pre></td></tr>
+<tr><td><pre class="example"><code>P4&gt;&gt;</code></pre></td><td><pre class="example"><code>P4_g_g</code></pre></td></tr>
+<tr><td><pre class="example"><code>P4_g&gt;</code></pre></td><td><pre class="example"><code>P4__g_g</code></pre></td></tr>
+</table>
+</div>
+
+<p>Throughout this section, the variable <var>c</var> is either a constraint
+in the abstract sense, or a constant from <code>enum constraint_num</code>;
+the variable <var>m</var> is a mangled constraint name (usually as part of
+a larger identifier).
+</p>
+<dl>
+<dt><a name="index-constraint_005fnum"></a>Enum: <strong>constraint_num</strong></dt>
+<dd><p>For each constraint except <code>g</code>, there is a corresponding
+enumeration constant: &lsquo;<samp>CONSTRAINT_</samp>&rsquo; plus the mangled name of the
+constraint. Functions that take an <code>enum constraint_num</code> as an
+argument expect one of these constants.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-satisfies_005fconstraint_005f"></a>Function: <em>inline bool</em> <strong>satisfies_constraint_</strong> <em><var>m</var> (rtx <var>exp</var>)</em></dt>
+<dd><p>For each non-register constraint <var>m</var> except <code>g</code>, there is
+one of these functions; it returns <code>true</code> if <var>exp</var> satisfies the
+constraint. These functions are only visible if <samp>rtl.h</samp> was included
+before <samp>tm_p.h</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-constraint_005fsatisfied_005fp"></a>Function: <em>bool</em> <strong>constraint_satisfied_p</strong> <em>(rtx <var>exp</var>, enum constraint_num <var>c</var>)</em></dt>
+<dd><p>Like the <code>satisfies_constraint_<var>m</var></code> functions, but the
+constraint to test is given as an argument, <var>c</var>. If <var>c</var>
+specifies a register constraint, this function will always return
+<code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-reg_005fclass_005ffor_005fconstraint"></a>Function: <em>enum reg_class</em> <strong>reg_class_for_constraint</strong> <em>(enum constraint_num <var>c</var>)</em></dt>
+<dd><p>Returns the register class associated with <var>c</var>. If <var>c</var> is not
+a register constraint, or those registers are not available for the
+currently selected subtarget, returns <code>NO_REGS</code>.
+</p></dd></dl>
+
+<p>Here is an example use of <code>satisfies_constraint_<var>m</var></code>. In
+peephole optimizations (see <a href="Peephole-Definitions.html#Peephole-Definitions">Peephole Definitions</a>), operand
+constraint strings are ignored, so if there are relevant constraints,
+they must be tested in the C condition. In the example, the
+optimization is applied if operand 2 does <em>not</em> satisfy the
+&lsquo;<samp>K</samp>&rsquo; constraint. (This is a simplified version of a peephole
+definition from the i386 machine description.)
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole2
+ [(match_scratch:SI 3 &quot;r&quot;)
+ (set (match_operand:SI 0 &quot;register_operand&quot; &quot;&quot;)
+ (mult:SI (match_operand:SI 1 &quot;memory_operand&quot; &quot;&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;&quot;)))]
+
+ &quot;!satisfies_constraint_K (operands[2])&quot;
+
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 0) (mult:SI (match_dup 3) (match_dup 2)))]
+
+ &quot;&quot;)
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Define-Constraints.html#Define-Constraints" accesskey="p" rel="previous">Define Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/C-Tests.html b/share/doc/gccint/C-Tests.html
new file mode 100644
index 0000000..a8e4a67
--- /dev/null
+++ b/share/doc/gccint/C-Tests.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: C Tests</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: C Tests">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: C Tests">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="LTO-Testing.html#LTO-Testing" rel="next" title="LTO Testing">
+<link href="Ada-Tests.html#Ada-Tests" rel="previous" title="Ada Tests">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="C-Tests"></a>
+<div class="header">
+<p>
+Next: <a href="LTO-Testing.html#LTO-Testing" accesskey="n" rel="next">LTO Testing</a>, Previous: <a href="Ada-Tests.html#Ada-Tests" accesskey="p" rel="previous">Ada Tests</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="C-Language-Testsuites"></a>
+<h3 class="section">7.4 C Language Testsuites</h3>
+
+<p>GCC contains the following C language testsuites, in the
+<samp>gcc/testsuite</samp> directory:
+</p>
+<dl compact="compact">
+<dt><samp>gcc.dg</samp></dt>
+<dd><p>This contains tests of particular features of the C compiler, using the
+more modern &lsquo;<samp>dg</samp>&rsquo; harness. Correctness tests for various compiler
+features should go here if possible.
+</p>
+<p>Magic comments determine whether the file
+is preprocessed, compiled, linked or run. In these tests, error and warning
+message texts are compared against expected texts or regular expressions
+given in comments. These tests are run with the options &lsquo;<samp>-ansi -pedantic</samp>&rsquo;
+unless other options are given in the test. Except as noted below they
+are not run with multiple optimization options.
+</p></dd>
+<dt><samp>gcc.dg/compat</samp></dt>
+<dd><p>This subdirectory contains tests for binary compatibility using
+<samp>lib/compat.exp</samp>, which in turn uses the language-independent support
+(see <a href="compat-Testing.html#compat-Testing">Support for testing binary compatibility</a>).
+</p></dd>
+<dt><samp>gcc.dg/cpp</samp></dt>
+<dd><p>This subdirectory contains tests of the preprocessor.
+</p></dd>
+<dt><samp>gcc.dg/debug</samp></dt>
+<dd><p>This subdirectory contains tests for debug formats. Tests in this
+subdirectory are run for each debug format that the compiler supports.
+</p></dd>
+<dt><samp>gcc.dg/format</samp></dt>
+<dd><p>This subdirectory contains tests of the <samp>-Wformat</samp> format
+checking. Tests in this directory are run with and without
+<samp>-DWIDE</samp>.
+</p></dd>
+<dt><samp>gcc.dg/noncompile</samp></dt>
+<dd><p>This subdirectory contains tests of code that should not compile and
+does not need any special compilation options. They are run with
+multiple optimization options, since sometimes invalid code crashes
+the compiler with optimization.
+</p></dd>
+<dt><samp>gcc.dg/special</samp></dt>
+<dd><p>FIXME: describe this.
+</p>
+</dd>
+<dt><samp>gcc.c-torture</samp></dt>
+<dd><p>This contains particular code fragments which have historically broken easily.
+These tests are run with multiple optimization options, so tests for features
+which only break at some optimization levels belong here. This also contains
+tests to check that certain optimizations occur. It might be worthwhile to
+separate the correctness tests cleanly from the code quality tests, but
+it hasn&rsquo;t been done yet.
+</p>
+</dd>
+<dt><samp>gcc.c-torture/compat</samp></dt>
+<dd><p>FIXME: describe this.
+</p>
+<p>This directory should probably not be used for new tests.
+</p></dd>
+<dt><samp>gcc.c-torture/compile</samp></dt>
+<dd><p>This testsuite contains test cases that should compile, but do not
+need to link or run. These test cases are compiled with several
+different combinations of optimization options. All warnings are
+disabled for these test cases, so this directory is not suitable if
+you wish to test for the presence or absence of compiler warnings.
+While special options can be set, and tests disabled on specific
+platforms, by the use of <samp>.x</samp> files, mostly these test cases
+should not contain platform dependencies. FIXME: discuss how defines
+such as <code>STACK_SIZE</code> are used.
+</p></dd>
+<dt><samp>gcc.c-torture/execute</samp></dt>
+<dd><p>This testsuite contains test cases that should compile, link and run;
+otherwise the same comments as for <samp>gcc.c-torture/compile</samp> apply.
+</p></dd>
+<dt><samp>gcc.c-torture/execute/ieee</samp></dt>
+<dd><p>This contains tests which are specific to IEEE floating point.
+</p></dd>
+<dt><samp>gcc.c-torture/unsorted</samp></dt>
+<dd><p>FIXME: describe this.
+</p>
+<p>This directory should probably not be used for new tests.
+</p></dd>
+<dt><samp>gcc.misc-tests</samp></dt>
+<dd><p>This directory contains C tests that require special handling. Some
+of these tests have individual expect files, and others share
+special-purpose expect files:
+</p>
+<dl compact="compact">
+<dt><samp><code>bprob*.c</code></samp></dt>
+<dd><p>Test <samp>-fbranch-probabilities</samp> using
+<samp>gcc.misc-tests/bprob.exp</samp>, which
+in turn uses the generic, language-independent framework
+(see <a href="profopt-Testing.html#profopt-Testing">Support for testing profile-directed
+optimizations</a>).
+</p>
+</dd>
+<dt><samp><code>gcov*.c</code></samp></dt>
+<dd><p>Test <code>gcov</code> output using <samp>gcov.exp</samp>, which in turn uses the
+language-independent support (see <a href="gcov-Testing.html#gcov-Testing">Support for testing gcov</a>).
+</p>
+</dd>
+<dt><samp><code>i386-pf-*.c</code></samp></dt>
+<dd><p>Test i386-specific support for data prefetch using <samp>i386-prefetch.exp</samp>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><samp>gcc.test-framework</samp></dt>
+<dd><dl compact="compact">
+<dt><samp><code>dg-*.c</code></samp></dt>
+<dd><p>Test the testsuite itself using <samp>gcc.test-framework/test-framework.exp</samp>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<p>FIXME: merge in <samp>testsuite/README.gcc</samp> and discuss the format of
+test cases and magic comments more.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="LTO-Testing.html#LTO-Testing" accesskey="n" rel="next">LTO Testing</a>, Previous: <a href="Ada-Tests.html#Ada-Tests" accesskey="p" rel="previous">Ada Tests</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/C-and-C_002b_002b-Trees.html b/share/doc/gccint/C-and-C_002b_002b-Trees.html
new file mode 100644
index 0000000..f19a7bc
--- /dev/null
+++ b/share/doc/gccint/C-and-C_002b_002b-Trees.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: C and C++ Trees</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: C and C++ Trees">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: C and C++ Trees">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Types-for-C_002b_002b.html#Types-for-C_002b_002b" rel="next" title="Types for C++">
+<link href="Language_002ddependent-trees.html#Language_002ddependent-trees" rel="previous" title="Language-dependent trees">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="C-and-C_002b_002b-Trees"></a>
+<div class="header">
+<p>
+Previous: <a href="Language_002ddependent-trees.html#Language_002ddependent-trees" accesskey="p" rel="previous">Language-dependent trees</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="C-and-C_002b_002b-Trees-1"></a>
+<h3 class="section">11.10 C and C++ Trees</h3>
+
+<p>This section documents the internal representation used by GCC to
+represent C and C++ source programs. When presented with a C or C++
+source program, GCC parses the program, performs semantic analysis
+(including the generation of error messages), and then produces the
+internal representation described here. This representation contains a
+complete representation for the entire translation unit provided as
+input to the front end. This representation is then typically processed
+by a code-generator in order to produce machine code, but could also be
+used in the creation of source browsers, intelligent editors, automatic
+documentation generators, interpreters, and any other programs needing
+the ability to process C or C++ code.
+</p>
+<p>This section explains the internal representation. In particular, it
+documents the internal representation for C and C++ source
+constructs, and the macros, functions, and variables that can be used to
+access these constructs. The C++ representation is largely a superset
+of the representation used in the C front end. There is only one
+construct used in C that does not appear in the C++ front end and that
+is the GNU &ldquo;nested function&rdquo; extension. Many of the macros documented
+here do not apply in C because the corresponding language constructs do
+not appear in C.
+</p>
+<p>The C and C++ front ends generate a mix of GENERIC trees and ones
+specific to C and C++. These language-specific trees are higher-level
+constructs than the ones in GENERIC to make the parser&rsquo;s job easier.
+This section describes those trees that aren&rsquo;t part of GENERIC as well
+as aspects of GENERIC trees that are treated in a language-specific
+manner.
+</p>
+<p>If you are developing a &ldquo;back end&rdquo;, be it is a code-generator or some
+other tool, that uses this representation, you may occasionally find
+that you need to ask questions not easily answered by the functions and
+macros available here. If that situation occurs, it is quite likely
+that GCC already supports the functionality you desire, but that the
+interface is simply not documented here. In that case, you should ask
+the GCC maintainers (via mail to <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a>) about
+documenting the functionality you require. Similarly, if you find
+yourself writing functions that do not deal directly with your back end,
+but instead might be useful to other people using the GCC front end, you
+should submit your patches for inclusion in GCC.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b" accesskey="1">Types for C++</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fundamental and aggregate types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Namespaces.html#Namespaces" accesskey="2">Namespaces</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Namespaces.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Classes.html#Classes" accesskey="3">Classes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Classes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" accesskey="4">Functions for C++</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overloading and accessors for C++.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" accesskey="5">Statements for C and C++</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Statements specific to C and C++.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="C_002b_002b-Expressions.html#C_002b_002b-Expressions" accesskey="6">C++ Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">From <code>typeid</code> to <code>throw</code>.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Language_002ddependent-trees.html#Language_002ddependent-trees" accesskey="p" rel="previous">Language-dependent trees</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/CTF-Debug.html b/share/doc/gccint/CTF-Debug.html
new file mode 100644
index 0000000..bd312c5
--- /dev/null
+++ b/share/doc/gccint/CTF-Debug.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: CTF Debug</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: CTF Debug">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: CTF Debug">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging-Info.html#Debugging-Info" rel="up" title="Debugging Info">
+<link href="BTF-Debug.html#BTF-Debug" rel="next" title="BTF Debug">
+<link href="VMS-Debug.html#VMS-Debug" rel="previous" title="VMS Debug">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="CTF-Debug"></a>
+<div class="header">
+<p>
+Next: <a href="BTF-Debug.html#BTF-Debug" accesskey="n" rel="next">BTF Debug</a>, Previous: <a href="VMS-Debug.html#VMS-Debug" accesskey="p" rel="previous">VMS Debug</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-for-CTF-Debug-Format"></a>
+<h4 class="subsection">18.21.4 Macros for CTF Debug Format</h4>
+
+<p>Here are macros for CTF debug format.
+</p>
+<dl>
+<dt><a name="index-CTF_005fDEBUGGING_005fINFO"></a>Macro: <strong>CTF_DEBUGGING_INFO</strong></dt>
+<dd><p>Define this macro if GCC should produce debugging output in CTF debug
+format in response to the <samp>-gctf</samp> option.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/C_002b_002b-ABI.html b/share/doc/gccint/C_002b_002b-ABI.html
new file mode 100644
index 0000000..dcef58f
--- /dev/null
+++ b/share/doc/gccint/C_002b_002b-ABI.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: C++ ABI</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: C++ ABI">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: C++ ABI">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="D-Language-and-ABI.html#D-Language-and-ABI" rel="next" title="D Language and ABI">
+<link href="PCH-Target.html#PCH-Target" rel="previous" title="PCH Target">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="C_002b_002b-ABI"></a>
+<div class="header">
+<p>
+Next: <a href="D-Language-and-ABI.html#D-Language-and-ABI" accesskey="n" rel="next">D Language and ABI</a>, Previous: <a href="PCH-Target.html#PCH-Target" accesskey="p" rel="previous">PCH Target</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="C_002b_002b-ABI-parameters"></a>
+<h3 class="section">18.28 C++ ABI parameters</h3>
+<a name="index-parameters_002c-c_002b_002b-abi"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fGUARD_005fTYPE"></a>Target Hook: <em>tree</em> <strong>TARGET_CXX_GUARD_TYPE</strong> <em>(void)</em></dt>
+<dd><p>Define this hook to override the integer type used for guard variables.
+These are used to implement one-time construction of static objects. The
+default is long_long_integer_type_node.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fGUARD_005fMASK_005fBIT"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_GUARD_MASK_BIT</strong> <em>(void)</em></dt>
+<dd><p>This hook determines how guard variables are used. It should return
+<code>false</code> (the default) if the first byte should be used. A return value of
+<code>true</code> indicates that only the least significant bit should be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fGET_005fCOOKIE_005fSIZE"></a>Target Hook: <em>tree</em> <strong>TARGET_CXX_GET_COOKIE_SIZE</strong> <em>(tree <var>type</var>)</em></dt>
+<dd><p>This hook returns the size of the cookie to use when allocating an array
+whose elements have the indicated <var>type</var>. Assumes that it is already
+known that a cookie is needed. The default is
+<code>max(sizeof (size_t), alignof(type))</code>, as defined in section 2.7 of the
+IA64/Generic C++ ABI.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fCOOKIE_005fHAS_005fSIZE"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_COOKIE_HAS_SIZE</strong> <em>(void)</em></dt>
+<dd><p>This hook should return <code>true</code> if the element size should be stored in
+array cookies. The default is to return <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fIMPORT_005fEXPORT_005fCLASS"></a>Target Hook: <em>int</em> <strong>TARGET_CXX_IMPORT_EXPORT_CLASS</strong> <em>(tree <var>type</var>, int <var>import_export</var>)</em></dt>
+<dd><p>If defined by a backend this hook allows the decision made to export
+class <var>type</var> to be overruled. Upon entry <var>import_export</var>
+will contain 1 if the class is going to be exported, -1 if it is going
+to be imported and 0 otherwise. This function should return the
+modified value and perform any other actions necessary to support the
+backend&rsquo;s targeted operating system.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fCDTOR_005fRETURNS_005fTHIS"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_CDTOR_RETURNS_THIS</strong> <em>(void)</em></dt>
+<dd><p>This hook should return <code>true</code> if constructors and destructors return
+the address of the object created/destroyed. The default is to return
+<code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fKEY_005fMETHOD_005fMAY_005fBE_005fINLINE"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_KEY_METHOD_MAY_BE_INLINE</strong> <em>(void)</em></dt>
+<dd><p>This hook returns true if the key method for a class (i.e., the method
+which, if defined in the current translation unit, causes the virtual
+table to be emitted) may be an inline function. Under the standard
+Itanium C++ ABI the key method may be an inline function so long as
+the function is not declared inline in the class definition. Under
+some variants of the ABI, an inline function can never be the key
+method. The default is to return <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fDETERMINE_005fCLASS_005fDATA_005fVISIBILITY"></a>Target Hook: <em>void</em> <strong>TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY</strong> <em>(tree <var>decl</var>)</em></dt>
+<dd><p><var>decl</var> is a virtual table, virtual table table, typeinfo object,
+or other similar implicit class data object that will be emitted with
+external linkage in this translation unit. No ELF visibility has been
+explicitly specified. If the target needs to specify a visibility
+other than that of the containing class, use this hook to set
+<code>DECL_VISIBILITY</code> and <code>DECL_VISIBILITY_SPECIFIED</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fCLASS_005fDATA_005fALWAYS_005fCOMDAT"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT</strong> <em>(void)</em></dt>
+<dd><p>This hook returns true (the default) if virtual tables and other
+similar implicit class data objects are always COMDAT if they have
+external linkage. If this hook returns false, then class data for
+classes whose virtual table will be emitted in only one translation
+unit will not be COMDAT.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fLIBRARY_005fRTTI_005fCOMDAT"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_LIBRARY_RTTI_COMDAT</strong> <em>(void)</em></dt>
+<dd><p>This hook returns true (the default) if the RTTI information for
+the basic types which is defined in the C++ runtime should always
+be COMDAT, false if it should not be COMDAT.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fUSE_005fAEABI_005fATEXIT"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_USE_AEABI_ATEXIT</strong> <em>(void)</em></dt>
+<dd><p>This hook returns true if <code>__aeabi_atexit</code> (as defined by the ARM EABI)
+should be used to register static destructors when <samp>-fuse-cxa-atexit</samp>
+is in effect. The default is to return false to use <code>__cxa_atexit</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fUSE_005fATEXIT_005fFOR_005fCXA_005fATEXIT"></a>Target Hook: <em>bool</em> <strong>TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT</strong> <em>(void)</em></dt>
+<dd><p>This hook returns true if the target <code>atexit</code> function can be used
+in the same manner as <code>__cxa_atexit</code> to register C++ static
+destructors. This requires that <code>atexit</code>-registered functions in
+shared libraries are run in the correct order when the libraries are
+unloaded. The default is to return false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fADJUST_005fCLASS_005fAT_005fDEFINITION"></a>Target Hook: <em>void</em> <strong>TARGET_CXX_ADJUST_CLASS_AT_DEFINITION</strong> <em>(tree <var>type</var>)</em></dt>
+<dd><p><var>type</var> is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that has just
+been defined. Use this hook to make adjustments to the class (eg, tweak
+visibility or perform any other required target modifications).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fDECL_005fMANGLING_005fCONTEXT"></a>Target Hook: <em>tree</em> <strong>TARGET_CXX_DECL_MANGLING_CONTEXT</strong> <em>(const_tree <var>decl</var>)</em></dt>
+<dd><p>Return target-specific mangling context of <var>decl</var> or <code>NULL_TREE</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="D-Language-and-ABI.html#D-Language-and-ABI" accesskey="n" rel="next">D Language and ABI</a>, Previous: <a href="PCH-Target.html#PCH-Target" accesskey="p" rel="previous">PCH Target</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/C_002b_002b-Expressions.html b/share/doc/gccint/C_002b_002b-Expressions.html
new file mode 100644
index 0000000..3eecec7
--- /dev/null
+++ b/share/doc/gccint/C_002b_002b-Expressions.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: C++ Expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: C++ Expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: C++ Expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="GIMPLE.html#GIMPLE" rel="next" title="GIMPLE">
+<link href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" rel="previous" title="Statements for C and C++">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="C_002b_002b-Expressions"></a>
+<div class="header">
+<p>
+Previous: <a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" accesskey="p" rel="previous">Statements for C and C++</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="C_002b_002b-Expressions-1"></a>
+<h4 class="subsection">11.10.6 C++ Expressions</h4>
+
+<p>This section describes expressions specific to the C and C++ front
+ends.
+</p>
+<dl compact="compact">
+<dt><code>TYPEID_EXPR</code></dt>
+<dd>
+<p>Used to represent a <code>typeid</code> expression.
+</p>
+</dd>
+<dt><code>NEW_EXPR</code></dt>
+<dt><code>VEC_NEW_EXPR</code></dt>
+<dd>
+<p>Used to represent a call to <code>new</code> and <code>new[]</code> respectively.
+</p>
+</dd>
+<dt><code>DELETE_EXPR</code></dt>
+<dt><code>VEC_DELETE_EXPR</code></dt>
+<dd>
+<p>Used to represent a call to <code>delete</code> and <code>delete[]</code> respectively.
+</p>
+</dd>
+<dt><code>MEMBER_REF</code></dt>
+<dd>
+<p>Represents a reference to a member of a class.
+</p>
+</dd>
+<dt><code>THROW_EXPR</code></dt>
+<dd>
+<p>Represents an instance of <code>throw</code> in the program. Operand 0,
+which is the expression to throw, may be <code>NULL_TREE</code>.
+</p>
+
+</dd>
+<dt><code>AGGR_INIT_EXPR</code></dt>
+<dd><p>An <code>AGGR_INIT_EXPR</code> represents the initialization as the return
+value of a function call, or as the result of a constructor. An
+<code>AGGR_INIT_EXPR</code> will only appear as a full-expression, or as the
+second operand of a <code>TARGET_EXPR</code>. <code>AGGR_INIT_EXPR</code>s have
+a representation similar to that of <code>CALL_EXPR</code>s. You can use
+the <code>AGGR_INIT_EXPR_FN</code> and <code>AGGR_INIT_EXPR_ARG</code> macros to access
+the function to call and the arguments to pass.
+</p>
+<p>If <code>AGGR_INIT_VIA_CTOR_P</code> holds of the <code>AGGR_INIT_EXPR</code>, then
+the initialization is via a constructor call. The address of the
+<code>AGGR_INIT_EXPR_SLOT</code> operand, which is always a <code>VAR_DECL</code>,
+is taken, and this value replaces the first argument in the argument
+list.
+</p>
+<p>In either case, the expression is void.
+</p>
+
+</dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Caller-Saves.html b/share/doc/gccint/Caller-Saves.html
new file mode 100644
index 0000000..7b8c0ec
--- /dev/null
+++ b/share/doc/gccint/Caller-Saves.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Caller Saves</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Caller Saves">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Caller Saves">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Function-Entry.html#Function-Entry" rel="next" title="Function Entry">
+<link href="Aggregate-Return.html#Aggregate-Return" rel="previous" title="Aggregate Return">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Caller-Saves"></a>
+<div class="header">
+<p>
+Next: <a href="Function-Entry.html#Function-Entry" accesskey="n" rel="next">Function Entry</a>, Previous: <a href="Aggregate-Return.html#Aggregate-Return" accesskey="p" rel="previous">Aggregate Return</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Caller_002dSaves-Register-Allocation"></a>
+<h4 class="subsection">18.9.10 Caller-Saves Register Allocation</h4>
+
+<p>If you enable it, GCC can save registers around function calls. This
+makes it possible to use call-clobbered registers to hold variables that
+must live across calls.
+</p>
+<dl>
+<dt><a name="index-HARD_005fREGNO_005fCALLER_005fSAVE_005fMODE"></a>Macro: <strong>HARD_REGNO_CALLER_SAVE_MODE</strong> <em>(<var>regno</var>, <var>nregs</var>)</em></dt>
+<dd><p>A C expression specifying which mode is required for saving <var>nregs</var>
+of a pseudo-register in call-clobbered hard register <var>regno</var>. If
+<var>regno</var> is unsuitable for caller save, <code>VOIDmode</code> should be
+returned. For most machines this macro need not be defined since GCC
+will select the smallest suitable mode.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Calls.html b/share/doc/gccint/Calls.html
new file mode 100644
index 0000000..90f1d05
--- /dev/null
+++ b/share/doc/gccint/Calls.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Calls</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Calls">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Calls">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="RTL-SSA.html#RTL-SSA" rel="next" title="RTL SSA">
+<link href="Insns.html#Insns" rel="previous" title="Insns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Calls"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA.html#RTL-SSA" accesskey="n" rel="next">RTL SSA</a>, Previous: <a href="Insns.html#Insns" accesskey="p" rel="previous">Insns</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Representation-of-Function_002dCall-Insns"></a>
+<h3 class="section">14.20 RTL Representation of Function-Call Insns</h3>
+<a name="index-calling-functions-in-RTL"></a>
+<a name="index-RTL-function_002dcall-insns"></a>
+<a name="index-function_002dcall-insns"></a>
+
+<p>Insns that call subroutines have the RTL expression code <code>call_insn</code>.
+These insns must satisfy special rules, and their bodies must use a special
+RTL expression code, <code>call</code>.
+</p>
+<a name="index-call-usage"></a>
+<p>A <code>call</code> expression has two operands, as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(call (mem:<var>fm</var> <var>addr</var>) <var>nbytes</var>)
+</pre></div>
+
+<p>Here <var>nbytes</var> is an operand that represents the number of bytes of
+argument data being passed to the subroutine, <var>fm</var> is a machine mode
+(which must equal as the definition of the <code>FUNCTION_MODE</code> macro in
+the machine description) and <var>addr</var> represents the address of the
+subroutine.
+</p>
+<p>For a subroutine that returns no value, the <code>call</code> expression as
+shown above is the entire body of the insn, except that the insn might
+also contain <code>use</code> or <code>clobber</code> expressions.
+</p>
+<a name="index-BLKmode_002c-and-function-return-values"></a>
+<p>For a subroutine that returns a value whose mode is not <code>BLKmode</code>,
+the value is returned in a hard register. If this register&rsquo;s number is
+<var>r</var>, then the body of the call insn looks like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set (reg:<var>m</var> <var>r</var>)
+ (call (mem:<var>fm</var> <var>addr</var>) <var>nbytes</var>))
+</pre></div>
+
+<p>This RTL expression makes it clear (to the optimizer passes) that the
+appropriate register receives a useful value in this insn.
+</p>
+<p>When a subroutine returns a <code>BLKmode</code> value, it is handled by
+passing to the subroutine the address of a place to store the value.
+So the call insn itself does not &ldquo;return&rdquo; any value, and it has the
+same RTL form as a call that returns nothing.
+</p>
+<p>On some machines, the call instruction itself clobbers some register,
+for example to contain the return address. <code>call_insn</code> insns
+on these machines should have a body which is a <code>parallel</code>
+that contains both the <code>call</code> expression and <code>clobber</code>
+expressions that indicate which registers are destroyed. Similarly,
+if the call instruction requires some register other than the stack
+pointer that is not explicitly mentioned in its RTL, a <code>use</code>
+subexpression should mention that register.
+</p>
+<p>Functions that are called are assumed to modify all registers listed in
+the configuration macro <code>CALL_USED_REGISTERS</code> (see <a href="Register-Basics.html#Register-Basics">Register Basics</a>) and, with the exception of <code>const</code> functions and library
+calls, to modify all of memory.
+</p>
+<p>Insns containing just <code>use</code> expressions directly precede the
+<code>call_insn</code> insn to indicate which registers contain inputs to the
+function. Similarly, if registers other than those in
+<code>CALL_USED_REGISTERS</code> are clobbered by the called function, insns
+containing a single <code>clobber</code> follow immediately after the call to
+indicate which registers.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA.html#RTL-SSA" accesskey="n" rel="next">RTL SSA</a>, Previous: <a href="Insns.html#Insns" accesskey="p" rel="previous">Insns</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Changing-Multiple-RTL-SSA-Instructions.html b/share/doc/gccint/Changing-Multiple-RTL-SSA-Instructions.html
new file mode 100644
index 0000000..c9b65bb
--- /dev/null
+++ b/share/doc/gccint/Changing-Multiple-RTL-SSA-Instructions.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Changing Multiple RTL SSA Instructions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Changing Multiple RTL SSA Instructions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Changing Multiple RTL SSA Instructions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" rel="up" title="Changing RTL Instructions">
+<link href="Sharing.html#Sharing" rel="next" title="Sharing">
+<link href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction" rel="previous" title="Changing One RTL SSA Instruction">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Changing-Multiple-RTL-SSA-Instructions"></a>
+<div class="header">
+<p>
+Previous: <a href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction" accesskey="p" rel="previous">Changing One RTL SSA Instruction</a>, Up: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="u" rel="up">Changing RTL Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Changing-Multiple-RTL-SSA-Instructions-1"></a>
+<h4 class="subsubsection">14.21.8.2 Changing Multiple RTL SSA Instructions</h4>
+
+<p>The process for changing multiple instructions is similar
+to the process for changing single instructions
+(see <a href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction">Changing One RTL SSA Instruction</a>). The pass should
+again start the change attempt with:
+</p>
+<div class="smallexample">
+<pre class="smallexample">auto attempt = crtl-&gt;ssa-&gt;new_change_attempt ();
+</pre></div>
+
+<p>and keep <code>attempt</code> in scope for the duration of the change
+attempt. It should then construct an <code>rtl_ssa::insn_change</code>
+for each change that it wants to make.
+</p>
+<p>After this, it should combine the changes into a sequence of
+<code>rtl_ssa::insn_change</code> pointers. This sequence must be in
+reverse postorder; the instructions will remain strictly in the
+order that the sequence specifies.
+</p>
+<p>For example, if a pass is changing exactly two instructions,
+it might do:
+</p>
+<div class="smallexample">
+<pre class="smallexample">rtl_ssa::insn_change *changes[] = { &amp;change1, change2 };
+</pre></div>
+
+<p>where <code>change1</code>&rsquo;s instruction must come before <code>change2</code>&rsquo;s.
+Alternatively, if the pass is changing a variable number of
+instructions, it might build up the sequence in a
+<code>vec&lt;rtl_ssa::insn_change *&gt;</code>.
+</p>
+<p>By default, <code>rtl_ssa::restrict_movement</code> assumes that all
+instructions other than the one passed to it will remain in their
+current positions and will retain their current uses and definitions.
+When changing multiple instructions, it is usually more effective
+to ignore the other instructions that are changing. The sequencing
+described above ensures that the changing instructions remain
+in the correct order with respect to each other.
+The way to do this is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::restrict_movement (change, insn_is_changing (changes)))
+ return false;
+</pre></div>
+
+<p>Similarly, when <code>rtl_ssa::restrict_movement</code> is detecting
+whether a register can be clobbered, it by default assumes that
+all other instructions will remain in their current positions and
+retain their current form. It is again more effective to ignore
+changing instructions (which might, for example, no longer need
+to clobber the flags register). The way to do this is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::recog (change, insn_is_changing (changes)))
+ return false;
+</pre></div>
+
+<p>When changing multiple instructions, the important question is usually
+not whether each individual change is worthwhile, but whether the changes
+as a whole are worthwhile. The way to test this is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::changes_are_worthwhile (changes))
+ return false;
+</pre></div>
+
+<p>The process for changing single instructions makes sure that one
+<code>rtl_ssa::insn_change</code> in isolation is valid. But when changing
+multiple instructions, it is also necessary to test whether the
+sequence as a whole is valid. For example, it might be impossible
+to satisfy all of the <code>move_range</code>s at once.
+</p>
+<p>Therefore, once the pass has a sequence of changes that are
+individually correct, it should use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!crtl-&gt;ssa-&gt;verify_insn_changes (changes))
+ return false;
+</pre></div>
+
+<p>to check whether the sequence as a whole is valid. If all checks pass,
+the final step is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">confirm_change_group ();
+crtl-&gt;ssa-&gt;change_insns (changes);
+</pre></div>
+
+<p>Putting all this together, the process for a two-instruction change is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">auto attempt = crtl-&gt;ssa-&gt;new_change_attempt ();
+
+rtl_ssa::insn_change change (insn1);
+change1.new_defs = &hellip;;
+change1.new_uses = &hellip;;
+change1.move_range = &hellip;;
+
+rtl_ssa::insn_change change (insn2);
+change2.new_defs = &hellip;;
+change2.new_uses = &hellip;;
+change2.move_range = &hellip;;
+
+rtl_ssa::insn_change *changes[] = { &amp;change1, change2 };
+
+auto is_changing = insn_is_changing (changes);
+if (!rtl_ssa::restrict_movement (change1, is_changing)
+ || !rtl_ssa::restrict_movement (change2, is_changing))
+ return false;
+
+insn_change_watermark watermark;
+// Use validate_change etc. to change INSN1's and INSN2's patterns.
+&hellip;
+if (!rtl_ssa::recog (change1, is_changing)
+ || !rtl_ssa::recog (change2, is_changing)
+ || !rtl_ssa::changes_are_worthwhile (changes)
+ || !crtl-&gt;ssa-&gt;verify_insn_changes (changes))
+ return false;
+
+confirm_change_group ();
+crtl-&gt;ssa-&gt;change_insns (changes);
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction" accesskey="p" rel="previous">Changing One RTL SSA Instruction</a>, Up: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="u" rel="up">Changing RTL Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Changing-One-RTL-SSA-Instruction.html b/share/doc/gccint/Changing-One-RTL-SSA-Instruction.html
new file mode 100644
index 0000000..1096b11
--- /dev/null
+++ b/share/doc/gccint/Changing-One-RTL-SSA-Instruction.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Changing One RTL SSA Instruction</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Changing One RTL SSA Instruction">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Changing One RTL SSA Instruction">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" rel="up" title="Changing RTL Instructions">
+<link href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions" rel="next" title="Changing Multiple RTL SSA Instructions">
+<link href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" rel="previous" title="Changing RTL Instructions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Changing-One-RTL-SSA-Instruction"></a>
+<div class="header">
+<p>
+Next: <a href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions" accesskey="n" rel="next">Changing Multiple RTL SSA Instructions</a>, Up: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="u" rel="up">Changing RTL Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Changing-One-RTL-SSA-Instruction-1"></a>
+<h4 class="subsubsection">14.21.8.1 Changing One RTL SSA Instruction</h4>
+
+<p>Before making a change, passes should first use a statement like the
+following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">auto attempt = crtl-&gt;ssa-&gt;new_change_attempt ();
+</pre></div>
+
+<p>Here, <code>attempt</code> is an RAII object that should remain in scope
+for the entire change attempt. It automatically frees temporary
+memory related to the changes when it goes out of scope.
+</p>
+<p>Next, the pass should create an <code>rtl_ssa::insn_change</code> object
+for the instruction that it wants to change. This object specifies
+several things:
+</p>
+<ul>
+<li> what the instruction&rsquo;s new list of uses should be (<code>new_uses</code>).
+By default this is the same as the instruction&rsquo;s current list of uses.
+
+</li><li> what the instruction&rsquo;s new list of definitions should be (<code>new_defs</code>).
+By default this is the same as the instruction&rsquo;s current list of
+definitions.
+
+</li><li> where the instruction should be located (<code>move_range</code>).
+This is a range of instructions after which the instruction could
+be placed, represented as an <code>rtl_ssa::insn_range</code>.
+By default the instruction must remain at its current position.
+</li></ul>
+
+<p>If a pass was attempting to change all these properties of an instruction
+<code>insn</code>, it might do something like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">rtl_ssa::insn_change change (insn);
+change.new_defs = &hellip;;
+change.new_uses = &hellip;;
+change.move_range = &hellip;;
+</pre></div>
+
+<p>This <code>rtl_ssa::insn_change</code> only describes something that the
+pass <em>might</em> do; at this stage, nothing has actually changed.
+</p>
+<p>As noted above, the default <code>move_range</code> requires the instruction
+to remain where it is. At the other extreme, it is possible to allow
+the instruction to move anywhere within its extended basic block,
+provided that all the new uses and definitions can be performed
+at the new location. The way to do this is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">change.move_range = insn-&gt;ebb ()-&gt;insn_range ();
+</pre></div>
+
+<p>In either case, the next step is to make sure that move range is
+consistent with the new uses and definitions. The way to do this is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::restrict_movement (change))
+ return false;
+</pre></div>
+
+<p>This function tries to limit <code>move_range</code> to a range of instructions
+at which <code>new_uses</code> and <code>new_defs</code> can be correctly performed.
+It returns true on success or false if no suitable location exists.
+</p>
+<p>The pass should also tentatively change the pattern of the instruction
+to whatever form the pass wants the instruction to have. This should use
+the facilities provided by <samp>recog.cc</samp>. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">rtl_insn *rtl = insn-&gt;rtl ();
+insn_change_watermark watermark;
+validate_change (rtl, &amp;PATTERN (rtl), new_pat, 1);
+</pre></div>
+
+<p>will tentatively replace <code>insn</code>&rsquo;s pattern with <code>new_pat</code>.
+</p>
+<p>These changes and the construction of the <code>rtl_ssa::insn_change</code>
+can happen in either order or be interleaved.
+</p>
+<p>After the tentative changes to the instruction are complete,
+the pass should check whether the new pattern matches a target
+instruction or satisfies the requirements of an inline asm:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::recog (change))
+ return false;
+</pre></div>
+
+<p>This step might change the instruction pattern further in order to
+make it match. It might also add new definitions or restrict the range
+of the move. For example, if the new pattern did not match in its original
+form, but could be made to match by adding a clobber of the flags
+register, <code>rtl_ssa::recog</code> will check whether the flags register
+is free at an appropriate point. If so, it will add a clobber of the
+flags register to <code>new_defs</code> and restrict <code>move_range</code> to
+the locations at which the flags register can be safely clobbered.
+</p>
+<p>Even if the proposed new instruction is valid according to
+<code>rtl_ssa::recog</code>, the change might not be worthwhile.
+For example, when optimizing for speed, the new instruction might
+turn out to be slower than the original one. When optimizing for
+size, the new instruction might turn out to be bigger than the
+original one.
+</p>
+<p>Passes should check for this case using <code>change_is_worthwhile</code>.
+For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (!rtl_ssa::change_is_worthwhile (change))
+ return false;
+</pre></div>
+
+<p>If the change passes this test too then the pass can perform the change using:
+</p>
+<div class="smallexample">
+<pre class="smallexample">confirm_change_group ();
+crtl-&gt;ssa-&gt;change_insn (change);
+</pre></div>
+
+<p>Putting all this together, the change has the following form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">auto attempt = crtl-&gt;ssa-&gt;new_change_attempt ();
+
+rtl_ssa::insn_change change (insn);
+change.new_defs = &hellip;;
+change.new_uses = &hellip;;
+change.move_range = &hellip;;
+
+if (!rtl_ssa::restrict_movement (change))
+ return false;
+
+insn_change_watermark watermark;
+// Use validate_change etc. to change INSN's pattern.
+&hellip;
+if (!rtl_ssa::recog (change)
+ || !rtl_ssa::change_is_worthwhile (change))
+ return false;
+
+confirm_change_group ();
+crtl-&gt;ssa-&gt;change_insn (change);
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions" accesskey="n" rel="next">Changing Multiple RTL SSA Instructions</a>, Up: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="u" rel="up">Changing RTL Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Changing-RTL-Instructions.html b/share/doc/gccint/Changing-RTL-Instructions.html
new file mode 100644
index 0000000..cb79d5f
--- /dev/null
+++ b/share/doc/gccint/Changing-RTL-Instructions.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Changing RTL Instructions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Changing RTL Instructions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Changing RTL Instructions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction" rel="next" title="Changing One RTL SSA Instruction">
+<link href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" rel="previous" title="RTL SSA Access Lists">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Changing-RTL-Instructions"></a>
+<div class="header">
+<p>
+Previous: <a href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" accesskey="p" rel="previous">RTL SSA Access Lists</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-the-RTL-SSA-framework-to-change-instructions"></a>
+<h4 class="subsection">14.21.8 Using the RTL SSA framework to change instructions</h4>
+
+<a name="index-rtl_005fssa_003a_003ainsn_005fchange"></a>
+<p>There are various routines that help to change a single RTL instruction
+or a group of RTL instructions while keeping the RTL SSA form up-to-date.
+This section first describes the process for changing a single instruction,
+then goes on to describe the differences when changing multiple instructions.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction" accesskey="1">Changing One RTL SSA Instruction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions" accesskey="2">Changing Multiple RTL SSA Instructions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Checking-for-a-poly_005fint-marker-value.html b/share/doc/gccint/Checking-for-a-poly_005fint-marker-value.html
new file mode 100644
index 0000000..2cb3a9f
--- /dev/null
+++ b/share/doc/gccint/Checking-for-a-poly_005fint-marker-value.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Checking for a poly_int marker value</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Checking for a poly_int marker value">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Checking for a poly_int marker value">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints" rel="next" title="Range checks on poly_ints">
+<link href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints" rel="previous" title="Comparing ordered poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Checking-for-a-poly_005fint-marker-value"></a>
+<div class="header">
+<p>
+Next: <a href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints" accesskey="n" rel="next">Range checks on <code>poly_int</code>s</a>, Previous: <a href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints" accesskey="p" rel="previous">Comparing ordered <code>poly_int</code>s</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Checking-for-a-poly_005fint-marker-value-1"></a>
+<h4 class="subsection">10.3.5 Checking for a <code>poly_int</code> marker value</h4>
+
+<p>It is sometimes useful to have a special &ldquo;marker value&rdquo; that is not
+meant to be taken literally. For example, some code uses a size
+of -1 to represent an unknown size, rather than having to carry around
+a separate boolean to say whether the size is known.
+</p>
+<p>The best way of checking whether something is a marker value is
+<code>known_eq</code>. Conversely the best way of checking whether something
+is <em>not</em> a marker value is <code>maybe_ne</code>.
+</p>
+<p>Thus in the size example just mentioned, &lsquo;<samp>known_eq (size, -1)</samp>&rsquo; would
+check for an unknown size and &lsquo;<samp>maybe_ne (size, -1)</samp>&rsquo; would check for a
+known size.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Class-Preferences.html b/share/doc/gccint/Class-Preferences.html
new file mode 100644
index 0000000..010f271
--- /dev/null
+++ b/share/doc/gccint/Class-Preferences.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Class Preferences</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Class Preferences">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Class Preferences">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Modifiers.html#Modifiers" rel="next" title="Modifiers">
+<link href="Multi_002dAlternative.html#Multi_002dAlternative" rel="previous" title="Multi-Alternative">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Class-Preferences"></a>
+<div class="header">
+<p>
+Next: <a href="Modifiers.html#Modifiers" accesskey="n" rel="next">Modifiers</a>, Previous: <a href="Multi_002dAlternative.html#Multi_002dAlternative" accesskey="p" rel="previous">Multi-Alternative</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Register-Class-Preferences"></a>
+<h4 class="subsection">17.8.3 Register Class Preferences</h4>
+<a name="index-class-preference-constraints"></a>
+<a name="index-register-class-preference-constraints"></a>
+
+<a name="index-voting-between-constraint-alternatives"></a>
+<p>The operand constraints have another function: they enable the compiler
+to decide which kind of hardware register a pseudo register is best
+allocated to. The compiler examines the constraints that apply to the
+insns that use the pseudo register, looking for the machine-dependent
+letters such as &lsquo;<samp>d</samp>&rsquo; and &lsquo;<samp>a</samp>&rsquo; that specify classes of registers.
+The pseudo register is put in whichever class gets the most &ldquo;votes&rdquo;.
+The constraint letters &lsquo;<samp>g</samp>&rsquo; and &lsquo;<samp>r</samp>&rsquo; also vote: they vote in
+favor of a general register. The machine description says which registers
+are considered general.
+</p>
+<p>Of course, on some machines all registers are equivalent, and no register
+classes are defined. Then none of this complexity is relevant.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Class-hierarchy-of-GIMPLE-statements.html b/share/doc/gccint/Class-hierarchy-of-GIMPLE-statements.html
new file mode 100644
index 0000000..83a9d25
--- /dev/null
+++ b/share/doc/gccint/Class-hierarchy-of-GIMPLE-statements.html
@@ -0,0 +1,225 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Class hierarchy of GIMPLE statements</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Class hierarchy of GIMPLE statements">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Class hierarchy of GIMPLE statements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" rel="next" title="GIMPLE instruction set">
+<link href="Tuple-representation.html#Tuple-representation" rel="previous" title="Tuple representation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Class-hierarchy-of-GIMPLE-statements"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" accesskey="n" rel="next">GIMPLE instruction set</a>, Previous: <a href="Tuple-representation.html#Tuple-representation" accesskey="p" rel="previous">Tuple representation</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Class-hierarchy-of-GIMPLE-statements-1"></a>
+<h3 class="section">12.2 Class hierarchy of GIMPLE statements</h3>
+<a name="index-GIMPLE-class-hierarchy"></a>
+
+<p>The following diagram shows the C++ inheritance hierarchy of statement
+kinds, along with their relationships to <code>GSS_</code> values (layouts) and
+<code>GIMPLE_</code> values (codes):
+</p>
+<div class="smallexample">
+<pre class="smallexample"> gimple
+ | layout: GSS_BASE
+ | used for 4 codes: GIMPLE_ERROR_MARK
+ | GIMPLE_NOP
+ | GIMPLE_OMP_SECTIONS_SWITCH
+ | GIMPLE_PREDICT
+ |
+ + gimple_statement_with_ops_base
+ | | (no GSS layout)
+ | |
+ | + gimple_statement_with_ops
+ | | | layout: GSS_WITH_OPS
+ | | |
+ | | + gcond
+ | | | code: GIMPLE_COND
+ | | |
+ | | + gdebug
+ | | | code: GIMPLE_DEBUG
+ | | |
+ | | + ggoto
+ | | | code: GIMPLE_GOTO
+ | | |
+ | | + glabel
+ | | | code: GIMPLE_LABEL
+ | | |
+ | | + gswitch
+ | | code: GIMPLE_SWITCH
+ | |
+ | + gimple_statement_with_memory_ops_base
+ | | layout: GSS_WITH_MEM_OPS_BASE
+ | |
+ | + gimple_statement_with_memory_ops
+ | | | layout: GSS_WITH_MEM_OPS
+ | | |
+ | | + gassign
+ | | | code GIMPLE_ASSIGN
+ | | |
+ | | + greturn
+ | | code GIMPLE_RETURN
+ | |
+ | + gcall
+ | | layout: GSS_CALL, code: GIMPLE_CALL
+ | |
+ | + gasm
+ | | layout: GSS_ASM, code: GIMPLE_ASM
+ | |
+ | + gtransaction
+ | layout: GSS_TRANSACTION, code: GIMPLE_TRANSACTION
+ |
+ + gimple_statement_omp
+ | | layout: GSS_OMP. Used for code GIMPLE_OMP_SECTION
+ | |
+ | + gomp_critical
+ | | layout: GSS_OMP_CRITICAL, code: GIMPLE_OMP_CRITICAL
+ | |
+ | + gomp_for
+ | | layout: GSS_OMP_FOR, code: GIMPLE_OMP_FOR
+ | |
+ | + gomp_parallel_layout
+ | | | layout: GSS_OMP_PARALLEL_LAYOUT
+ | | |
+ | | + gimple_statement_omp_taskreg
+ | | | |
+ | | | + gomp_parallel
+ | | | | code: GIMPLE_OMP_PARALLEL
+ | | | |
+ | | | + gomp_task
+ | | | code: GIMPLE_OMP_TASK
+ | | |
+ | | + gimple_statement_omp_target
+ | | code: GIMPLE_OMP_TARGET
+ | |
+ | + gomp_sections
+ | | layout: GSS_OMP_SECTIONS, code: GIMPLE_OMP_SECTIONS
+ | |
+ | + gimple_statement_omp_single_layout
+ | | layout: GSS_OMP_SINGLE_LAYOUT
+ | |
+ | + gomp_single
+ | | code: GIMPLE_OMP_SINGLE
+ | |
+ | + gomp_teams
+ | code: GIMPLE_OMP_TEAMS
+ |
+ + gbind
+ | layout: GSS_BIND, code: GIMPLE_BIND
+ |
+ + gcatch
+ | layout: GSS_CATCH, code: GIMPLE_CATCH
+ |
+ + geh_filter
+ | layout: GSS_EH_FILTER, code: GIMPLE_EH_FILTER
+ |
+ + geh_else
+ | layout: GSS_EH_ELSE, code: GIMPLE_EH_ELSE
+ |
+ + geh_mnt
+ | layout: GSS_EH_MNT, code: GIMPLE_EH_MUST_NOT_THROW
+ |
+ + gphi
+ | layout: GSS_PHI, code: GIMPLE_PHI
+ |
+ + gimple_statement_eh_ctrl
+ | | layout: GSS_EH_CTRL
+ | |
+ | + gresx
+ | | code: GIMPLE_RESX
+ | |
+ | + geh_dispatch
+ | code: GIMPLE_EH_DISPATCH
+ |
+ + gtry
+ | layout: GSS_TRY, code: GIMPLE_TRY
+ |
+ + gimple_statement_wce
+ | layout: GSS_WCE, code: GIMPLE_WITH_CLEANUP_EXPR
+ |
+ + gomp_continue
+ | layout: GSS_OMP_CONTINUE, code: GIMPLE_OMP_CONTINUE
+ |
+ + gomp_atomic_load
+ | layout: GSS_OMP_ATOMIC_LOAD, code: GIMPLE_OMP_ATOMIC_LOAD
+ |
+ + gimple_statement_omp_atomic_store_layout
+ | layout: GSS_OMP_ATOMIC_STORE_LAYOUT,
+ | code: GIMPLE_OMP_ATOMIC_STORE
+ |
+ + gomp_atomic_store
+ | code: GIMPLE_OMP_ATOMIC_STORE
+ |
+ + gomp_return
+ code: GIMPLE_OMP_RETURN
+</pre></div>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Classes.html b/share/doc/gccint/Classes.html
new file mode 100644
index 0000000..7987927
--- /dev/null
+++ b/share/doc/gccint/Classes.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Classes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Classes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Classes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" rel="next" title="Functions for C++">
+<link href="Namespaces.html#Namespaces" rel="previous" title="Namespaces">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Classes"></a>
+<div class="header">
+<p>
+Next: <a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" accesskey="n" rel="next">Functions for C++</a>, Previous: <a href="Namespaces.html#Namespaces" accesskey="p" rel="previous">Namespaces</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Classes-1"></a>
+<h4 class="subsection">11.10.3 Classes</h4>
+<a name="index-class_002c-scope"></a>
+<a name="index-RECORD_005fTYPE-1"></a>
+<a name="index-UNION_005fTYPE-1"></a>
+<a name="index-CLASSTYPE_005fDECLARED_005fCLASS"></a>
+<a name="index-TYPE_005fBINFO"></a>
+<a name="index-BINFO_005fTYPE"></a>
+<a name="index-TYPE_005fFIELDS-2"></a>
+<a name="index-TYPE_005fVFIELD"></a>
+
+<p>Besides namespaces, the other high-level scoping construct in C++ is the
+class. (Throughout this manual the term <em>class</em> is used to mean the
+types referred to in the ANSI/ISO C++ Standard as classes; these include
+types defined with the <code>class</code>, <code>struct</code>, and <code>union</code>
+keywords.)
+</p>
+<p>A class type is represented by either a <code>RECORD_TYPE</code> or a
+<code>UNION_TYPE</code>. A class declared with the <code>union</code> tag is
+represented by a <code>UNION_TYPE</code>, while classes declared with either
+the <code>struct</code> or the <code>class</code> tag are represented by
+<code>RECORD_TYPE</code>s. You can use the <code>CLASSTYPE_DECLARED_CLASS</code>
+macro to discern whether or not a particular type is a <code>class</code> as
+opposed to a <code>struct</code>. This macro will be true only for classes
+declared with the <code>class</code> tag.
+</p>
+<p>Almost all members are available on the <code>TYPE_FIELDS</code>
+list. Given one member, the next can be found by following the
+<code>TREE_CHAIN</code>. You should not depend in any way on the order in
+which fields appear on this list. All nodes on this list will be
+&lsquo;<samp>DECL</samp>&rsquo; nodes. A <code>FIELD_DECL</code> is used to represent a non-static
+data member, a <code>VAR_DECL</code> is used to represent a static data
+member, and a <code>TYPE_DECL</code> is used to represent a type. Note that
+the <code>CONST_DECL</code> for an enumeration constant will appear on this
+list, if the enumeration type was declared in the class. (Of course,
+the <code>TYPE_DECL</code> for the enumeration type will appear here as well.)
+There are no entries for base classes on this list. In particular,
+there is no <code>FIELD_DECL</code> for the &ldquo;base-class portion&rdquo; of an
+object. If a function member is overloaded, each of the overloaded
+functions appears; no <code>OVERLOAD</code> nodes appear on the <code>TYPE_FIELDS</code>
+list. Implicitly declared functions (including default constructors,
+copy constructors, assignment operators, and destructors) will appear on
+this list as well.
+</p>
+<p>The <code>TYPE_VFIELD</code> is a compiler-generated field used to point to
+virtual function tables. It may or may not appear on the
+<code>TYPE_FIELDS</code> list. However, back ends should handle the
+<code>TYPE_VFIELD</code> just like all the entries on the <code>TYPE_FIELDS</code>
+list.
+</p>
+<p>Every class has an associated <em>binfo</em>, which can be obtained with
+<code>TYPE_BINFO</code>. Binfos are used to represent base-classes. The
+binfo given by <code>TYPE_BINFO</code> is the degenerate case, whereby every
+class is considered to be its own base-class. The base binfos for a
+particular binfo are held in a vector, whose length is obtained with
+<code>BINFO_N_BASE_BINFOS</code>. The base binfos themselves are obtained
+with <code>BINFO_BASE_BINFO</code> and <code>BINFO_BASE_ITERATE</code>. To add a
+new binfo, use <code>BINFO_BASE_APPEND</code>. The vector of base binfos can
+be obtained with <code>BINFO_BASE_BINFOS</code>, but normally you do not need
+to use that. The class type associated with a binfo is given by
+<code>BINFO_TYPE</code>. It is not always the case that <code>BINFO_TYPE
+(TYPE_BINFO (x))</code>, because of typedefs and qualified types. Neither is
+it the case that <code>TYPE_BINFO (BINFO_TYPE (y))</code> is the same binfo as
+<code>y</code>. The reason is that if <code>y</code> is a binfo representing a
+base-class <code>B</code> of a derived class <code>D</code>, then <code>BINFO_TYPE
+(y)</code> will be <code>B</code>, and <code>TYPE_BINFO (BINFO_TYPE (y))</code> will be
+<code>B</code> as its own base-class, rather than as a base-class of <code>D</code>.
+</p>
+<p>The access to a base type can be found with <code>BINFO_BASE_ACCESS</code>.
+This will produce <code>access_public_node</code>, <code>access_private_node</code>
+or <code>access_protected_node</code>. If bases are always public,
+<code>BINFO_BASE_ACCESSES</code> may be <code>NULL</code>.
+</p>
+<p><code>BINFO_VIRTUAL_P</code> is used to specify whether the binfo is inherited
+virtually or not. The other flags, <code>BINFO_FLAG_0</code> to
+<code>BINFO_FLAG_6</code>, can be used for language specific use.
+</p>
+<p>The following macros can be used on a tree node representing a class-type.
+</p>
+<dl compact="compact">
+<dt><code>LOCAL_CLASS_P</code>
+<a name="index-LOCAL_005fCLASS_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the class is local class <em>i.e.</em> declared
+inside a function body.
+</p>
+</dd>
+<dt><code>TYPE_POLYMORPHIC_P</code>
+<a name="index-TYPE_005fPOLYMORPHIC_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the class has at least one virtual function
+(declared or inherited).
+</p>
+</dd>
+<dt><code>TYPE_HAS_DEFAULT_CONSTRUCTOR</code>
+<a name="index-TYPE_005fHAS_005fDEFAULT_005fCONSTRUCTOR"></a>
+</dt>
+<dd><p>This predicate holds whenever its argument represents a class-type with
+default constructor.
+</p>
+</dd>
+<dt><code>CLASSTYPE_HAS_MUTABLE</code>
+<a name="index-CLASSTYPE_005fHAS_005fMUTABLE"></a>
+</dt>
+<dt><code>TYPE_HAS_MUTABLE_P</code>
+<a name="index-TYPE_005fHAS_005fMUTABLE_005fP"></a>
+</dt>
+<dd><p>These predicates hold for a class-type having a mutable data member.
+</p>
+</dd>
+<dt><code>CLASSTYPE_NON_POD_P</code>
+<a name="index-CLASSTYPE_005fNON_005fPOD_005fP"></a>
+</dt>
+<dd><p>This predicate holds only for class-types that are not PODs.
+</p>
+</dd>
+<dt><code>TYPE_HAS_NEW_OPERATOR</code>
+<a name="index-TYPE_005fHAS_005fNEW_005fOPERATOR"></a>
+</dt>
+<dd><p>This predicate holds for a class-type that defines
+<code>operator new</code>.
+</p>
+</dd>
+<dt><code>TYPE_HAS_ARRAY_NEW_OPERATOR</code>
+<a name="index-TYPE_005fHAS_005fARRAY_005fNEW_005fOPERATOR"></a>
+</dt>
+<dd><p>This predicate holds for a class-type for which
+<code>operator new[]</code> is defined.
+</p>
+</dd>
+<dt><code>TYPE_OVERLOADS_CALL_EXPR</code>
+<a name="index-TYPE_005fOVERLOADS_005fCALL_005fEXPR"></a>
+</dt>
+<dd><p>This predicate holds for class-type for which the function call
+<code>operator()</code> is overloaded.
+</p>
+</dd>
+<dt><code>TYPE_OVERLOADS_ARRAY_REF</code>
+<a name="index-TYPE_005fOVERLOADS_005fARRAY_005fREF"></a>
+</dt>
+<dd><p>This predicate holds for a class-type that overloads
+<code>operator[]</code>
+</p>
+</dd>
+<dt><code>TYPE_OVERLOADS_ARROW</code>
+<a name="index-TYPE_005fOVERLOADS_005fARROW"></a>
+</dt>
+<dd><p>This predicate holds for a class-type for which <code>operator-&gt;</code> is
+overloaded.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" accesskey="n" rel="next">Functions for C++</a>, Previous: <a href="Namespaces.html#Namespaces" accesskey="p" rel="previous">Namespaces</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Cleanups.html b/share/doc/gccint/Cleanups.html
new file mode 100644
index 0000000..2e70bd7
--- /dev/null
+++ b/share/doc/gccint/Cleanups.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Cleanups</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Cleanups">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Cleanups">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="OpenMP.html#OpenMP" rel="next" title="OpenMP">
+<link href="Jumps.html#Jumps" rel="previous" title="Jumps">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Cleanups"></a>
+<div class="header">
+<p>
+Next: <a href="OpenMP.html#OpenMP" accesskey="n" rel="next">OpenMP</a>, Previous: <a href="Jumps.html#Jumps" accesskey="p" rel="previous">Jumps</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Cleanups-1"></a>
+<h4 class="subsection">11.7.6 Cleanups</h4>
+<a name="index-Cleanups"></a>
+
+<p>Destructors for local C++ objects and similar dynamic cleanups are
+represented in GIMPLE by a <code>TRY_FINALLY_EXPR</code>.
+<code>TRY_FINALLY_EXPR</code> has two operands, both of which are a sequence
+of statements to execute. The first sequence is executed. When it
+completes the second sequence is executed.
+</p>
+<p>The first sequence may complete in the following ways:
+</p>
+<ol>
+<li> Execute the last statement in the sequence and fall off the
+end.
+
+</li><li> Execute a goto statement (<code>GOTO_EXPR</code>) to an ordinary
+label outside the sequence.
+
+</li><li> Execute a return statement (<code>RETURN_EXPR</code>).
+
+</li><li> Throw an exception. This is currently not explicitly represented in
+GIMPLE.
+
+</li></ol>
+
+<p>The second sequence is not executed if the first sequence completes by
+calling <code>setjmp</code> or <code>exit</code> or any other function that does
+not return. The second sequence is also not executed if the first
+sequence completes via a non-local goto or a computed goto (in general
+the compiler does not know whether such a goto statement exits the
+first sequence or not, so we assume that it doesn&rsquo;t).
+</p>
+<p>After the second sequence is executed, if it completes normally by
+falling off the end, execution continues wherever the first sequence
+would have continued, by falling off the end, or doing a goto, etc.
+</p>
+<p>If the second sequence is an <code>EH_ELSE_EXPR</code> selector, then the
+sequence in its first operand is used when the first sequence completes
+normally, and that in its second operand is used for exceptional
+cleanups, i.e., when an exception propagates out of the first sequence.
+</p>
+<p><code>TRY_FINALLY_EXPR</code> complicates the flow graph, since the cleanup
+needs to appear on every edge out of the controlled block; this
+reduces the freedom to move code across these edges. Therefore, the
+EH lowering pass which runs before most of the optimization passes
+eliminates these expressions by explicitly adding the cleanup to each
+edge. Rethrowing the exception is represented using <code>RESX_EXPR</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="OpenMP.html#OpenMP" accesskey="n" rel="next">OpenMP</a>, Previous: <a href="Jumps.html#Jumps" accesskey="p" rel="previous">Jumps</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Code-Iterators.html b/share/doc/gccint/Code-Iterators.html
new file mode 100644
index 0000000..6af8442
--- /dev/null
+++ b/share/doc/gccint/Code-Iterators.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Code Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Code Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Code Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Iterators.html#Iterators" rel="up" title="Iterators">
+<link href="Int-Iterators.html#Int-Iterators" rel="next" title="Int Iterators">
+<link href="Examples.html#Examples" rel="previous" title="Examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Code-Iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Int-Iterators.html#Int-Iterators" accesskey="n" rel="next">Int Iterators</a>, Previous: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="p" rel="previous">Mode Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Code-Iterators-1"></a>
+<h4 class="subsection">17.23.2 Code Iterators</h4>
+<a name="index-code-iterators-in-_002emd-files"></a>
+<a name="index-define_005fcode_005fiterator"></a>
+<a name="index-define_005fcode_005fattr"></a>
+
+<p>Code iterators operate in a similar way to mode iterators. See <a href="Mode-Iterators.html#Mode-Iterators">Mode Iterators</a>.
+</p>
+<p>The construct:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_code_iterator <var>name</var> [(<var>code1</var> &quot;<var>cond1</var>&quot;) &hellip; (<var>coden</var> &quot;<var>condn</var>&quot;)])
+</pre></div>
+
+<p>defines a pseudo rtx code <var>name</var> that can be instantiated as
+<var>codei</var> if condition <var>condi</var> is true. Each <var>codei</var>
+must have the same rtx format. See <a href="RTL-Classes.html#RTL-Classes">RTL Classes</a>.
+</p>
+<p>As with mode iterators, each pattern that uses <var>name</var> will be
+expanded <var>n</var> times, once with all uses of <var>name</var> replaced by
+<var>code1</var>, once with all uses replaced by <var>code2</var>, and so on.
+See <a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators">Defining Mode Iterators</a>.
+</p>
+<p>It is possible to define attributes for codes as well as for modes.
+There are two standard code attributes: <code>code</code>, the name of the
+code in lower case, and <code>CODE</code>, the name of the code in upper case.
+Other attributes are defined using:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_code_attr <var>name</var> [(<var>code1</var> &quot;<var>value1</var>&quot;) &hellip; (<var>coden</var> &quot;<var>valuen</var>&quot;)])
+</pre></div>
+
+<p>Instruction patterns can use code attributes as rtx codes, which can be
+useful if two sets of codes act in tandem. For example, the following
+<code>define_insn</code> defines two patterns, one calculating a signed absolute
+difference and another calculating an unsigned absolute difference:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_code_iterator any_max [smax umax])
+(define_code_attr paired_min [(smax &quot;smin&quot;) (umax &quot;umin&quot;)])
+(define_insn &hellip;
+ [(set (match_operand:SI 0 &hellip;)
+ (minus:SI (any_max:SI (match_operand:SI 1 &hellip;)
+ (match_operand:SI 2 &hellip;))
+ (&lt;paired_min&gt;:SI (match_dup 1) (match_dup 2))))]
+ &hellip;)
+</pre></div>
+
+<p>The signed version of the instruction uses <code>smax</code> and <code>smin</code>
+while the unsigned version uses <code>umax</code> and <code>umin</code>. There
+are no versions that pair <code>smax</code> with <code>umin</code> or <code>umax</code>
+with <code>smin</code>.
+</p>
+<p>Here&rsquo;s an example of code iterators in action, taken from the MIPS port:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_code_iterator any_cond [unordered ordered unlt unge uneq ltgt unle ungt
+ eq ne gt ge lt le gtu geu ltu leu])
+
+(define_expand &quot;b&lt;code&gt;&quot;
+ [(set (pc)
+ (if_then_else (any_cond:CC (cc0)
+ (const_int 0))
+ (label_ref (match_operand 0 &quot;&quot;))
+ (pc)))]
+ &quot;&quot;
+{
+ gen_conditional_branch (operands, &lt;CODE&gt;);
+ DONE;
+})
+</pre></div>
+
+<p>This is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;bunordered&quot;
+ [(set (pc)
+ (if_then_else (unordered:CC (cc0)
+ (const_int 0))
+ (label_ref (match_operand 0 &quot;&quot;))
+ (pc)))]
+ &quot;&quot;
+{
+ gen_conditional_branch (operands, UNORDERED);
+ DONE;
+})
+
+(define_expand &quot;bordered&quot;
+ [(set (pc)
+ (if_then_else (ordered:CC (cc0)
+ (const_int 0))
+ (label_ref (match_operand 0 &quot;&quot;))
+ (pc)))]
+ &quot;&quot;
+{
+ gen_conditional_branch (operands, ORDERED);
+ DONE;
+})
+
+&hellip;
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Int-Iterators.html#Int-Iterators" accesskey="n" rel="next">Int Iterators</a>, Previous: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="p" rel="previous">Mode Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Collect2.html b/share/doc/gccint/Collect2.html
new file mode 100644
index 0000000..5b9aa40
--- /dev/null
+++ b/share/doc/gccint/Collect2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Collect2</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Collect2">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Collect2">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Header-Dirs.html#Header-Dirs" rel="next" title="Header Dirs">
+<link href="Host-Fragment.html#Host-Fragment" rel="previous" title="Host Fragment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Collect2"></a>
+<div class="header">
+<p>
+Next: <a href="Header-Dirs.html#Header-Dirs" accesskey="n" rel="next">Header Dirs</a>, Previous: <a href="Fragments.html#Fragments" accesskey="p" rel="previous">Fragments</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="collect2"></a>
+<h2 class="chapter">21 <code>collect2</code></h2>
+
+<p>GCC uses a utility called <code>collect2</code> on nearly all systems to arrange
+to call various initialization functions at start time.
+</p>
+<p>The program <code>collect2</code> works by linking the program once and
+looking through the linker output file for symbols with particular names
+indicating they are constructor functions. If it finds any, it
+creates a new temporary &lsquo;<samp>.c</samp>&rsquo; file containing a table of them,
+compiles it, and links the program a second time including that file.
+</p>
+<a name="index-_005f_005fmain"></a>
+<a name="index-constructors_002c-automatic-calls"></a>
+<p>The actual calls to the constructors are carried out by a subroutine
+called <code>__main</code>, which is called (automatically) at the beginning
+of the body of <code>main</code> (provided <code>main</code> was compiled with GNU
+CC). Calling <code>__main</code> is necessary, even when compiling C code, to
+allow linking C and C++ object code together. (If you use
+<samp>-nostdlib</samp>, you get an unresolved reference to <code>__main</code>,
+since it&rsquo;s defined in the standard GCC library. Include <samp>-lgcc</samp> at
+the end of your compiler command line to resolve this reference.)
+</p>
+<p>The program <code>collect2</code> is installed as <code>ld</code> in the directory
+where the passes of the compiler are installed. When <code>collect2</code>
+needs to find the <em>real</em> <code>ld</code>, it tries the following file
+names:
+</p>
+<ul>
+<li> a hard coded linker file name, if GCC was configured with the
+<samp>--with-ld</samp> option.
+
+</li><li> <samp>real-ld</samp> in the directories listed in the compiler&rsquo;s search
+directories.
+
+</li><li> <samp>real-ld</samp> in the directories listed in the environment variable
+<code>PATH</code>.
+
+</li><li> The file specified in the <code>REAL_LD_FILE_NAME</code> configuration macro,
+if specified.
+
+</li><li> <samp>ld</samp> in the compiler&rsquo;s search directories, except that
+<code>collect2</code> will not execute itself recursively.
+
+</li><li> <samp>ld</samp> in <code>PATH</code>.
+</li></ul>
+
+<p>&ldquo;The compiler&rsquo;s search directories&rdquo; means all the directories where
+<code>gcc</code> searches for passes of the compiler. This includes
+directories that you specify with <samp>-B</samp>.
+</p>
+<p>Cross-compilers search a little differently:
+</p>
+<ul>
+<li> <samp>real-ld</samp> in the compiler&rsquo;s search directories.
+
+</li><li> <samp><var>target</var>-real-ld</samp> in <code>PATH</code>.
+
+</li><li> The file specified in the <code>REAL_LD_FILE_NAME</code> configuration macro,
+if specified.
+
+</li><li> <samp>ld</samp> in the compiler&rsquo;s search directories.
+
+</li><li> <samp><var>target</var>-ld</samp> in <code>PATH</code>.
+</li></ul>
+
+<p><code>collect2</code> explicitly avoids running <code>ld</code> using the file name
+under which <code>collect2</code> itself was invoked. In fact, it remembers
+up a list of such names&mdash;in case one copy of <code>collect2</code> finds
+another copy (or version) of <code>collect2</code> installed as <code>ld</code> in a
+second place in the search path.
+</p>
+<p><code>collect2</code> searches for the utilities <code>nm</code> and <code>strip</code>
+using the same algorithm as above for <code>ld</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Header-Dirs.html#Header-Dirs" accesskey="n" rel="next">Header Dirs</a>, Previous: <a href="Fragments.html#Fragments" accesskey="p" rel="previous">Fragments</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Comparing-ordered-poly_005fints.html b/share/doc/gccint/Comparing-ordered-poly_005fints.html
new file mode 100644
index 0000000..536f363
--- /dev/null
+++ b/share/doc/gccint/Comparing-ordered-poly_005fints.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Comparing ordered poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Comparing ordered poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Comparing ordered poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" rel="next" title="Checking for a poly_int marker value">
+<link href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" rel="previous" title="Comparing potentially-unordered poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Comparing-ordered-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" accesskey="n" rel="next">Checking for a <code>poly_int</code> marker value</a>, Previous: <a href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" accesskey="p" rel="previous">Comparing potentially-unordered <code>poly_int</code>s</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Comparing-ordered-poly_005fints-1"></a>
+<h4 class="subsection">10.3.4 Comparing ordered <code>poly_int</code>s</h4>
+
+<p>In cases where there is a definite link between two <code>poly_int</code>s,
+such as the outer and inner sizes of subregs, we usually require the sizes
+to be ordered by the <code>known_le</code> partial order. <code>poly_int</code> provides
+the following utility functions for ordered values:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>ordered_p (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> and <var>b</var> are ordered by the <code>known_le</code>
+partial order.
+</p>
+</dd>
+<dt>&lsquo;<samp>ordered_min (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>a</var> and <var>b</var> are ordered by <code>known_le</code> and return the
+minimum of the two. When using this function, please add a comment explaining
+why the values are known to be ordered.
+</p>
+</dd>
+<dt>&lsquo;<samp>ordered_max (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>a</var> and <var>b</var> are ordered by <code>known_le</code> and return the
+maximum of the two. When using this function, please add a comment explaining
+why the values are known to be ordered.
+</p></dd>
+</dl>
+
+<p>For example, if a subreg has an outer mode of size <var>outer</var> and an
+inner mode of size <var>inner</var>:
+</p>
+<ul>
+<li> the subreg is complete if known_eq (<var>inner</var>, <var>outer</var>)
+
+</li><li> otherwise, the subreg is paradoxical if known_le (<var>inner</var>, <var>outer</var>)
+
+</li><li> otherwise, the subreg is partial if known_le (<var>outer</var>, <var>inner</var>)
+
+</li><li> otherwise, the subreg is ill-formed
+</li></ul>
+
+<p>Thus the subreg is only valid if
+&lsquo;<samp>ordered_p (<var>outer</var>, <var>inner</var>)</samp>&rsquo; is true. If this condition
+is already known to be true then:
+</p>
+<ul>
+<li> the subreg is complete if known_eq (<var>inner</var>, <var>outer</var>)
+
+</li><li> the subreg is paradoxical if maybe_lt (<var>inner</var>, <var>outer</var>)
+
+</li><li> the subreg is partial if maybe_lt (<var>outer</var>, <var>inner</var>)
+</li></ul>
+
+<p>with the three conditions being mutually exclusive.
+</p>
+<p>Code that checks whether a subreg is valid would therefore generally
+check whether <code>ordered_p</code> holds (in addition to whatever other
+checks are required for subreg validity). Code that is dealing
+with existing subregs can assert that <code>ordered_p</code> holds
+and use either of the classifications above.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" accesskey="n" rel="next">Checking for a <code>poly_int</code> marker value</a>, Previous: <a href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" accesskey="p" rel="previous">Comparing potentially-unordered <code>poly_int</code>s</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Comparing-potentially_002dunordered-poly_005fints.html b/share/doc/gccint/Comparing-potentially_002dunordered-poly_005fints.html
new file mode 100644
index 0000000..51cf343
--- /dev/null
+++ b/share/doc/gccint/Comparing-potentially_002dunordered-poly_005fints.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Comparing potentially-unordered poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Comparing potentially-unordered poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Comparing potentially-unordered poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints" rel="next" title="Comparing ordered poly_ints">
+<link href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons" rel="previous" title="Properties of the poly_int comparisons">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Comparing-potentially_002dunordered-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints" accesskey="n" rel="next">Comparing ordered <code>poly_int</code>s</a>, Previous: <a href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons" accesskey="p" rel="previous">Properties of the <code>poly_int</code> comparisons</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Comparing-potentially_002dunordered-poly_005fints-1"></a>
+<h4 class="subsection">10.3.3 Comparing potentially-unordered <code>poly_int</code>s</h4>
+
+<p>In cases where there is no definite link between two <code>poly_int</code>s,
+we can usually make a conservatively-correct assumption. For example,
+the conservative assumption for alias analysis is that two references
+<em>might</em> alias.
+</p>
+<p>One way of checking whether [<var>begin1</var>, <var>end1</var>) might overlap
+[<var>begin2</var>, <var>end2</var>) using the <code>poly_int</code> comparisons is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_gt (<var>end1</var>, <var>begin2</var>) &amp;&amp; maybe_gt (<var>end2</var>, <var>begin1</var>)
+</pre></div>
+
+<p>and another (equivalent) way is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">!(known_le (<var>end1</var>, <var>begin2</var>) || known_le (<var>end2</var>, <var>begin1</var>))
+</pre></div>
+
+<p>However, in this particular example, it is better to use the range helper
+functions instead. See <a href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints">Range checks on <code>poly_int</code>s</a>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Comparison-functions-for-poly_005fint.html b/share/doc/gccint/Comparison-functions-for-poly_005fint.html
new file mode 100644
index 0000000..dca9b05
--- /dev/null
+++ b/share/doc/gccint/Comparison-functions-for-poly_005fint.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Comparison functions for poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Comparison functions for poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Comparison functions for poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons" rel="next" title="Properties of the poly_int comparisons">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="previous" title="Comparisons involving poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Comparison-functions-for-poly_005fint"></a>
+<div class="header">
+<p>
+Next: <a href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons" accesskey="n" rel="next">Properties of the <code>poly_int</code> comparisons</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Comparison-functions-for-poly_005fint-1"></a>
+<h4 class="subsection">10.3.1 Comparison functions for <code>poly_int</code></h4>
+
+<p><code>poly_int</code> provides the following routines for checking whether
+a particular condition &ldquo;may be&rdquo; (might be) true:
+</p>
+<div class="example">
+<pre class="example">maybe_lt maybe_le maybe_eq maybe_ge maybe_gt
+ maybe_ne
+</pre></div>
+
+<p>The functions have their natural meaning:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>maybe_lt(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might be less than <var>b</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_le(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might be less than or equal to <var>b</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_eq(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might be equal to <var>b</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_ne(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might not be equal to <var>b</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_ge(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might be greater than or equal to <var>b</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_gt(<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> might be greater than <var>b</var>.
+</p></dd>
+</dl>
+
+<p>For readability, <code>poly_int</code> also provides &ldquo;known&rdquo; inverses of these
+functions:
+</p>
+<div class="example">
+<pre class="example">known_lt (<var>a</var>, <var>b</var>) == !maybe_ge (<var>a</var>, <var>b</var>)
+known_le (<var>a</var>, <var>b</var>) == !maybe_gt (<var>a</var>, <var>b</var>)
+known_eq (<var>a</var>, <var>b</var>) == !maybe_ne (<var>a</var>, <var>b</var>)
+known_ge (<var>a</var>, <var>b</var>) == !maybe_lt (<var>a</var>, <var>b</var>)
+known_gt (<var>a</var>, <var>b</var>) == !maybe_le (<var>a</var>, <var>b</var>)
+known_ne (<var>a</var>, <var>b</var>) == !maybe_eq (<var>a</var>, <var>b</var>)
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Comparisons-involving-poly_005fint.html b/share/doc/gccint/Comparisons-involving-poly_005fint.html
new file mode 100644
index 0000000..6b9afc3
--- /dev/null
+++ b/share/doc/gccint/Comparisons-involving-poly_005fint.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Comparisons involving poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Comparisons involving poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Comparisons involving poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint" rel="next" title="Comparison functions for poly_int">
+<link href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" rel="previous" title="Consequences of using poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Comparisons-involving-poly_005fint"></a>
+<div class="header">
+<p>
+Next: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="n" rel="next">Arithmetic on <code>poly_int</code>s</a>, Previous: <a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" accesskey="p" rel="previous">Consequences of using <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Comparisons-involving-poly_005fint-1"></a>
+<h3 class="section">10.3 Comparisons involving <code>poly_int</code></h3>
+
+<p>In general we need to compare sizes and offsets in two situations:
+those in which the values need to be ordered, and those in which
+the values can be unordered. More loosely, the distinction is often
+between values that have a definite link (usually because they refer to the
+same underlying register or memory location) and values that have
+no definite link. An example of the former is the relationship between
+the inner and outer sizes of a subreg, where we must know at compile time
+whether the subreg is paradoxical, partial, or complete. An example of
+the latter is alias analysis: we might want to check whether two
+arbitrary memory references overlap.
+</p>
+<p>Referring back to the examples in the previous section, it makes sense
+to ask whether a memory reference of size &lsquo;<samp>3 + 4<var>x</var></samp>&rsquo; overlaps
+one of size &lsquo;<samp>1 + 5<var>x</var></samp>&rsquo;, but it does not make sense to have a
+subreg in which the outer mode has &lsquo;<samp>3 + 4<var>x</var></samp>&rsquo; bytes and the
+inner mode has &lsquo;<samp>1 + 5<var>x</var></samp>&rsquo; bytes (or vice versa). Such subregs
+are always invalid and should trigger an internal compiler error
+if formed.
+</p>
+<p>The underlying operators are the same in both cases, but the distinction
+affects how they are used.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint" accesskey="1">Comparison functions for <code>poly_int</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons" accesskey="2">Properties of the <code>poly_int</code> comparisons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" accesskey="3">Comparing potentially-unordered <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints" accesskey="4">Comparing ordered <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" accesskey="5">Checking for a <code>poly_int</code> marker value</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints" accesskey="6">Range checks on <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sorting-poly_005fints.html#Sorting-poly_005fints" accesskey="7">Sorting <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="n" rel="next">Arithmetic on <code>poly_int</code>s</a>, Previous: <a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" accesskey="p" rel="previous">Consequences of using <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Comparisons.html b/share/doc/gccint/Comparisons.html
new file mode 100644
index 0000000..caf533f
--- /dev/null
+++ b/share/doc/gccint/Comparisons.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Comparisons</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Comparisons">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Comparisons">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Bit_002dFields.html#Bit_002dFields" rel="next" title="Bit-Fields">
+<link href="Arithmetic.html#Arithmetic" rel="previous" title="Arithmetic">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Comparisons"></a>
+<div class="header">
+<p>
+Next: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="n" rel="next">Bit-Fields</a>, Previous: <a href="Arithmetic.html#Arithmetic" accesskey="p" rel="previous">Arithmetic</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Comparison-Operations"></a>
+<h3 class="section">14.10 Comparison Operations</h3>
+<a name="index-RTL-comparison-operations"></a>
+
+<p>Comparison operators test a relation on two operands and are considered
+to represent a machine-dependent nonzero value described by, but not
+necessarily equal to, <code>STORE_FLAG_VALUE</code> (see <a href="Misc.html#Misc">Misc</a>)
+if the relation holds, or zero if it does not, for comparison operators
+whose results have a &lsquo;MODE_INT&rsquo; mode,
+<code>FLOAT_STORE_FLAG_VALUE</code> (see <a href="Misc.html#Misc">Misc</a>) if the relation holds, or
+zero if it does not, for comparison operators that return floating-point
+values, and a vector of either <code>VECTOR_STORE_FLAG_VALUE</code> (see <a href="Misc.html#Misc">Misc</a>)
+if the relation holds, or of zeros if it does not, for comparison operators
+that return vector results.
+The mode of the comparison operation is independent of the mode
+of the data being compared. If the comparison operation is being tested
+(e.g., the first operand of an <code>if_then_else</code>), the mode must be
+<code>VOIDmode</code>.
+</p>
+<a name="index-condition-codes"></a>
+<p>A comparison operation compares two data
+objects. The mode of the comparison is determined by the operands; they
+must both be valid for a common machine mode. A comparison with both
+operands constant would be invalid as the machine mode could not be
+deduced from it, but such a comparison should never exist in RTL due to
+constant folding.
+</p>
+<p>Usually only one style
+of comparisons is supported on a particular machine, but the combine
+pass will try to merge operations to produce code like
+<code>(eq <var>x</var> <var>y</var>)</code>,
+in case it exists in the context of the particular insn involved.
+</p>
+<p>Inequality comparisons come in two flavors, signed and unsigned. Thus,
+there are distinct expression codes <code>gt</code> and <code>gtu</code> for signed and
+unsigned greater-than. These can produce different results for the same
+pair of integer values: for example, 1 is signed greater-than -1 but not
+unsigned greater-than, because -1 when regarded as unsigned is actually
+<code>0xffffffff</code> which is greater than 1.
+</p>
+<p>The signed comparisons are also used for floating point values. Floating
+point comparisons are distinguished by the machine modes of the operands.
+</p>
+<dl compact="compact">
+<dd><a name="index-eq"></a>
+<a name="index-equal"></a>
+</dd>
+<dt><code>(eq:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p><code>STORE_FLAG_VALUE</code> if the values represented by <var>x</var> and <var>y</var>
+are equal, otherwise 0.
+</p>
+<a name="index-ne"></a>
+<a name="index-not-equal"></a>
+</dd>
+<dt><code>(ne:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p><code>STORE_FLAG_VALUE</code> if the values represented by <var>x</var> and <var>y</var>
+are not equal, otherwise 0.
+</p>
+<a name="index-gt"></a>
+<a name="index-greater-than"></a>
+</dd>
+<dt><code>(gt:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p><code>STORE_FLAG_VALUE</code> if the <var>x</var> is greater than <var>y</var>. If they
+are fixed-point, the comparison is done in a signed sense.
+</p>
+<a name="index-gtu"></a>
+<a name="index-greater-than-1"></a>
+<a name="index-unsigned-greater-than"></a>
+</dd>
+<dt><code>(gtu:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>gt</code> but does unsigned comparison, on fixed-point numbers only.
+</p>
+<a name="index-lt"></a>
+<a name="index-less-than"></a>
+<a name="index-ltu"></a>
+<a name="index-unsigned-less-than"></a>
+</dd>
+<dt><code>(lt:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(ltu:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>gt</code> and <code>gtu</code> but test for &ldquo;less than&rdquo;.
+</p>
+<a name="index-ge"></a>
+<a name="index-greater-than-2"></a>
+<a name="index-geu"></a>
+<a name="index-unsigned-greater-than-1"></a>
+</dd>
+<dt><code>(ge:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(geu:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>gt</code> and <code>gtu</code> but test for &ldquo;greater than or equal&rdquo;.
+</p>
+<a name="index-le"></a>
+<a name="index-less-than-or-equal"></a>
+<a name="index-leu"></a>
+<a name="index-unsigned-less-than-1"></a>
+</dd>
+<dt><code>(le:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dt><code>(leu:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd><p>Like <code>gt</code> and <code>gtu</code> but test for &ldquo;less than or equal&rdquo;.
+</p>
+<a name="index-if_005fthen_005felse"></a>
+</dd>
+<dt><code>(if_then_else <var>cond</var> <var>then</var> <var>else</var>)</code></dt>
+<dd><p>This is not a comparison operation but is listed here because it is
+always used in conjunction with a comparison operation. To be
+precise, <var>cond</var> is a comparison expression. This expression
+represents a choice, according to <var>cond</var>, between the value
+represented by <var>then</var> and the one represented by <var>else</var>.
+</p>
+<p>On most machines, <code>if_then_else</code> expressions are valid only
+to express conditional jumps.
+</p>
+<a name="index-cond"></a>
+</dd>
+<dt><code>(cond [<var>test1</var> <var>value1</var> <var>test2</var> <var>value2</var> &hellip;] <var>default</var>)</code></dt>
+<dd><p>Similar to <code>if_then_else</code>, but more general. Each of <var>test1</var>,
+<var>test2</var>, &hellip; is performed in turn. The result of this expression is
+the <var>value</var> corresponding to the first nonzero test, or <var>default</var> if
+none of the tests are nonzero expressions.
+</p>
+<p>This is currently not valid for instruction patterns and is supported only
+for insn attributes. See <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="n" rel="next">Bit-Fields</a>, Previous: <a href="Arithmetic.html#Arithmetic" accesskey="p" rel="previous">Arithmetic</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Compound-Expressions.html b/share/doc/gccint/Compound-Expressions.html
new file mode 100644
index 0000000..6b870cf
--- /dev/null
+++ b/share/doc/gccint/Compound-Expressions.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Compound Expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Compound Expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Compound Expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Operands.html#Operands" rel="up" title="Operands">
+<link href="Compound-Lvalues.html#Compound-Lvalues" rel="next" title="Compound Lvalues">
+<link href="Operands.html#Operands" rel="previous" title="Operands">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Compound-Expressions"></a>
+<div class="header">
+<p>
+Next: <a href="Compound-Lvalues.html#Compound-Lvalues" accesskey="n" rel="next">Compound Lvalues</a>, Up: <a href="Operands.html#Operands" accesskey="u" rel="up">Operands</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Compound-Expressions-1"></a>
+<h4 class="subsection">12.6.1 Compound Expressions</h4>
+<a name="index-Compound-Expressions"></a>
+
+<p>The left-hand side of a C comma expression is simply moved into a separate
+statement.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Compound-Lvalues.html b/share/doc/gccint/Compound-Lvalues.html
new file mode 100644
index 0000000..0841232
--- /dev/null
+++ b/share/doc/gccint/Compound-Lvalues.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Compound Lvalues</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Compound Lvalues">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Compound Lvalues">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Operands.html#Operands" rel="up" title="Operands">
+<link href="Conditional-Expressions.html#Conditional-Expressions" rel="next" title="Conditional Expressions">
+<link href="Compound-Expressions.html#Compound-Expressions" rel="previous" title="Compound Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Compound-Lvalues"></a>
+<div class="header">
+<p>
+Next: <a href="Conditional-Expressions.html#Conditional-Expressions" accesskey="n" rel="next">Conditional Expressions</a>, Previous: <a href="Compound-Expressions.html#Compound-Expressions" accesskey="p" rel="previous">Compound Expressions</a>, Up: <a href="Operands.html#Operands" accesskey="u" rel="up">Operands</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Compound-Lvalues-1"></a>
+<h4 class="subsection">12.6.2 Compound Lvalues</h4>
+<a name="index-Compound-Lvalues"></a>
+
+<p>Currently compound lvalues involving array and structure field references
+are not broken down; an expression like <code>a.b[2] = 42</code> is not reduced
+any further (though complex array subscripts are). This restriction is a
+workaround for limitations in later optimizers; if we were to convert this
+to
+</p>
+<div class="smallexample">
+<pre class="smallexample">T1 = &amp;a.b;
+T1[2] = 42;
+</pre></div>
+
+<p>alias analysis would not remember that the reference to <code>T1[2]</code> came
+by way of <code>a.b</code>, so it would think that the assignment could alias
+another member of <code>a</code>; this broke <code>struct-alias-1.c</code>. Future
+optimizer improvements may make this limitation unnecessary.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Computing-bounds-on-poly_005fints.html b/share/doc/gccint/Computing-bounds-on-poly_005fints.html
new file mode 100644
index 0000000..e50b842
--- /dev/null
+++ b/share/doc/gccint/Computing-bounds-on-poly_005fints.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Computing bounds on poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Computing bounds on poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Computing bounds on poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Converting-poly_005fints.html#Converting-poly_005fints" rel="next" title="Converting poly_ints">
+<link href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints" rel="previous" title="Alignment of poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Computing-bounds-on-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Converting-poly_005fints.html#Converting-poly_005fints" accesskey="n" rel="next">Converting <code>poly_int</code>s</a>, Previous: <a href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints" accesskey="p" rel="previous">Alignment of <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Computing-bounds-on-poly_005fints-1"></a>
+<h3 class="section">10.6 Computing bounds on <code>poly_int</code>s</h3>
+
+<p><code>poly_int</code> also provides routines for calculating lower and upper bounds:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>constant_lower_bound (<var>a</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>a</var> is nonnegative and return the smallest value it can have.
+</p>
+</dd>
+<dt>&lsquo;<samp>constant_lower_bound_with_limit (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return the least value <var>a</var> can have, given that the context in
+which <var>a</var> appears guarantees that the answer is no less than <var>b</var>.
+In other words, the caller is asserting that <var>a</var> is greater than or
+equal to <var>b</var> even if &lsquo;<samp>known_ge (<var>a</var>, <var>b</var>)</samp>&rsquo; doesn&rsquo;t hold.
+</p>
+</dd>
+<dt>&lsquo;<samp>constant_upper_bound_with_limit (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return the greatest value <var>a</var> can have, given that the context in
+which <var>a</var> appears guarantees that the answer is no greater than <var>b</var>.
+In other words, the caller is asserting that <var>a</var> is less than or equal
+to <var>b</var> even if &lsquo;<samp>known_le (<var>a</var>, <var>b</var>)</samp>&rsquo; doesn&rsquo;t hold.
+</p>
+</dd>
+<dt>&lsquo;<samp>lower_bound (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return a value that is always less than or equal to both <var>a</var> and <var>b</var>.
+It will be the greatest such value for some indeterminate values
+but necessarily for all.
+</p>
+</dd>
+<dt>&lsquo;<samp>upper_bound (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return a value that is always greater than or equal to both <var>a</var> and
+<var>b</var>. It will be the least such value for some indeterminate values
+but necessarily for all.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Concept-Index.html b/share/doc/gccint/Concept-Index.html
new file mode 100644
index 0000000..e326443
--- /dev/null
+++ b/share/doc/gccint/Concept-Index.html
@@ -0,0 +1,5784 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Concept Index</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Concept Index">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Concept Index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Option-Index.html#Option-Index" rel="previous" title="Option Index">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Concept-Index"></a>
+<div class="header">
+<p>
+Previous: <a href="Option-Index.html#Option-Index" accesskey="p" rel="previous">Option Index</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Concept-Index-1"></a>
+<h2 class="unnumbered">Concept Index</h2>
+
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-2"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-3"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-4"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-5"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-6"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-7"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-8"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-9"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-10"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-12"><b>0</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-13"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-14"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-15"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-16"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-17"><b>@</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-19"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-20"><b>_</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-X"><b>X</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="index-cp" border="0">
+<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-1">!</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-_0021-in-constraint">&lsquo;<samp>!</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-2">&quot;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-_0060_0060real_0027_0027-instructions_002c-RTL-SSA">&ldquo;real&rdquo; instructions, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-3">#</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_0023-in-constraint">&lsquo;<samp>#</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-_0023-in-template"><code>#</code> in template</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-_0023pragma"><code>#pragma</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-4">$</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-_0024-in-constraint">&lsquo;<samp>$</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-5">%</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_0025-in-constraint">&lsquo;<samp>%</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-_0025-in-GTY-option">% in GTY option</a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-_0025-in-template">&lsquo;<samp>%</samp>&rsquo; in template</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-6">&amp;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_0026-in-constraint">&lsquo;<samp>&amp;</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-7">(</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-_0028gimple_005fstmt_005fiterator"><code>(gimple_stmt_iterator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-_0028nil_0029">(nil)</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-8">*</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_002a-in-constraint">&lsquo;<samp>*</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-_002a-in-template"><code>*</code> in template</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-_002agimple_005fbuild_005fasm_005fvec"><code>*gimple_build_asm_vec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-_002agimple_005fbuild_005fassign"><code>*gimple_build_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-_002agimple_005fbuild_005fassign-1"><code>*gimple_build_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-_002agimple_005fbuild_005fassign-2"><code>*gimple_build_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-_002agimple_005fbuild_005fassign-3"><code>*gimple_build_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-_002agimple_005fbuild_005fbind"><code>*gimple_build_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-_002agimple_005fbuild_005fcall"><code>*gimple_build_call</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-_002agimple_005fbuild_005fcall_005ffrom_005ftree"><code>*gimple_build_call_from_tree</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-_002agimple_005fbuild_005fcall_005fvec"><code>*gimple_build_call_vec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-_002agimple_005fbuild_005fcatch"><code>*gimple_build_catch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-_002agimple_005fbuild_005fcond"><code>*gimple_build_cond</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-_002agimple_005fbuild_005fcond_005ffrom_005ftree"><code>*gimple_build_cond_from_tree</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-_002agimple_005fbuild_005fdebug_005fbind"><code>*gimple_build_debug_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-_002agimple_005fbuild_005feh_005ffilter"><code>*gimple_build_eh_filter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fGOTO.html#index-_002agimple_005fbuild_005fgoto"><code>*gimple_build_goto</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fLABEL.html#index-_002agimple_005fbuild_005flabel"><code>*gimple_build_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL"><code>GIMPLE_LABEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-_002agimple_005fbuild_005fomp_005fatomic_005fload"><code>*gimple_build_omp_atomic_load</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#index-_002agimple_005fbuild_005fomp_005fatomic_005fstore"><code>*gimple_build_omp_atomic_store</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-_002agimple_005fbuild_005fomp_005fcontinue"><code>*gimple_build_omp_continue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#index-_002agimple_005fbuild_005fomp_005fcritical"><code>*gimple_build_omp_critical</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-_002agimple_005fbuild_005fomp_005ffor"><code>*gimple_build_omp_for</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-_002agimple_005fbuild_005fomp_005fparallel"><code>*gimple_build_omp_parallel</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-_002agimple_005fbuild_005fomp_005fsections"><code>*gimple_build_omp_sections</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#index-_002agimple_005fbuild_005fomp_005fsingle"><code>*gimple_build_omp_single</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRESX.html#index-_002agimple_005fbuild_005fresx"><code>*gimple_build_resx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRETURN.html#index-_002agimple_005fbuild_005freturn"><code>*gimple_build_return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-_002agimple_005fbuild_005fswitch"><code>*gimple_build_switch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-_002agimple_005fbuild_005ftry"><code>*gimple_build_try</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-9">+</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_002b-in-constraint">&lsquo;<samp>+</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-10">-</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-_002dfsection_002danchors"><samp>-fsection-anchors</samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-_002dfsection_002danchors-1"><samp>-fsection-anchors</samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-11">/</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fc-in-RTL-dump">&lsquo;<samp>/c</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002ff-in-RTL-dump">&lsquo;<samp>/f</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fi-in-RTL-dump">&lsquo;<samp>/i</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fj-in-RTL-dump">&lsquo;<samp>/j</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fs-in-RTL-dump">&lsquo;<samp>/s</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fu-in-RTL-dump">&lsquo;<samp>/u</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-_002fv-in-RTL-dump">&lsquo;<samp>/v</samp>&rsquo; in RTL dump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-12">0</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-0-in-constraint">&lsquo;<samp>0</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-13">&lt;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-_003c-in-constraint">&lsquo;<samp>&lt;</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-14">=</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-_003d-in-constraint">&lsquo;<samp>=</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-15">&gt;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-_003e-in-constraint">&lsquo;<samp>&gt;</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-16">?</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-_003f-in-constraint">&lsquo;<samp>?</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-17">@</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Parameterized-Names.html#index-_0040-in-instruction-pattern-names">&lsquo;<samp>@</samp>&rsquo; in instruction pattern names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parameterized-Names.html#Parameterized-Names">Parameterized Names</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-18">\</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-_005c">\</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-19">^</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-_005e-in-constraint">&lsquo;<samp>^</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_symbol-20">_</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fabsvdi2"><code>__absvdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fabsvsi2"><code>__absvsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddda3"><code>__addda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fadddf3"><code>__adddf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadddq3"><code>__adddq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddha3"><code>__addha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddhq3"><code>__addhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddqq3"><code>__addqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddsa3"><code>__addsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005faddsf3"><code>__addsf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddsq3"><code>__addsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddta3"><code>__addta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005faddtf3"><code>__addtf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadduda3"><code>__adduda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddudq3"><code>__addudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadduha3"><code>__adduha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadduhq3"><code>__adduhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadduqq3"><code>__adduqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddusa3"><code>__addusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005faddusq3"><code>__addusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fadduta3"><code>__adduta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005faddvdi3"><code>__addvdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005faddvsi3"><code>__addvsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005faddxf3"><code>__addxf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlda3"><code>__ashlda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashldi3"><code>__ashldi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashldq3"><code>__ashldq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlha3"><code>__ashlha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlhq3"><code>__ashlhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlqq3"><code>__ashlqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlsa3"><code>__ashlsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashlsi3"><code>__ashlsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlsq3"><code>__ashlsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlta3"><code>__ashlta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashlti3"><code>__ashlti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashluda3"><code>__ashluda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashludq3"><code>__ashludq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashluha3"><code>__ashluha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashluhq3"><code>__ashluhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashluqq3"><code>__ashluqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlusa3"><code>__ashlusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashlusq3"><code>__ashlusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashluta3"><code>__ashluta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrda3"><code>__ashrda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashrdi3"><code>__ashrdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrdq3"><code>__ashrdq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrha3"><code>__ashrha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrhq3"><code>__ashrhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrqq3"><code>__ashrqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrsa3"><code>__ashrsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashrsi3"><code>__ashrsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrsq3"><code>__ashrsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fashrta3"><code>__ashrta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fashrti3"><code>__ashrti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fadddd3"><code>__bid_adddd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005faddsd3"><code>__bid_addsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005faddtd3"><code>__bid_addtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fdivdd3"><code>__bid_divdd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fdivsd3"><code>__bid_divsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fdivtd3"><code>__bid_divtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005feqdd2"><code>__bid_eqdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005feqsd2"><code>__bid_eqsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005feqtd2"><code>__bid_eqtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendddtd2"><code>__bid_extendddtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendddtf"><code>__bid_extendddtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendddxf"><code>__bid_extendddxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextenddfdd"><code>__bid_extenddfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextenddftd"><code>__bid_extenddftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsddd2"><code>__bid_extendsddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsddf"><code>__bid_extendsddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsdtd2"><code>__bid_extendsdtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsdtf"><code>__bid_extendsdtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsdxf"><code>__bid_extendsdxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsfdd"><code>__bid_extendsfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsfsd"><code>__bid_extendsfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendsftd"><code>__bid_extendsftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendtftd"><code>__bid_extendtftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fextendxftd"><code>__bid_extendxftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixdddi"><code>__bid_fixdddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixddsi"><code>__bid_fixddsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixsddi"><code>__bid_fixsddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixsdsi"><code>__bid_fixsdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixtddi"><code>__bid_fixtddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixtdsi"><code>__bid_fixtdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunsdddi"><code>__bid_fixunsdddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunsddsi"><code>__bid_fixunsddsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunssddi"><code>__bid_fixunssddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunssdsi"><code>__bid_fixunssdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunstddi"><code>__bid_fixunstddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffixunstdsi"><code>__bid_fixunstdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatdidd"><code>__bid_floatdidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatdisd"><code>__bid_floatdisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatditd"><code>__bid_floatditd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatsidd"><code>__bid_floatsidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatsisd"><code>__bid_floatsisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatsitd"><code>__bid_floatsitd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunsdidd"><code>__bid_floatunsdidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunsdisd"><code>__bid_floatunsdisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunsditd"><code>__bid_floatunsditd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunssidd"><code>__bid_floatunssidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunssisd"><code>__bid_floatunssisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ffloatunssitd"><code>__bid_floatunssitd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgedd2"><code>__bid_gedd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgesd2"><code>__bid_gesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgetd2"><code>__bid_getd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgtdd2"><code>__bid_gtdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgtsd2"><code>__bid_gtsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fgttd2"><code>__bid_gttd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fledd2"><code>__bid_ledd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005flesd2"><code>__bid_lesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fletd2"><code>__bid_letd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fltdd2"><code>__bid_ltdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fltsd2"><code>__bid_ltsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005flttd2"><code>__bid_lttd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fmuldd3"><code>__bid_muldd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fmulsd3"><code>__bid_mulsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fmultd3"><code>__bid_multd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnedd2"><code>__bid_nedd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnegdd2"><code>__bid_negdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnegsd2"><code>__bid_negsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnegtd2"><code>__bid_negtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnesd2"><code>__bid_nesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fnetd2"><code>__bid_netd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fsubdd3"><code>__bid_subdd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fsubsd3"><code>__bid_subsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005fsubtd3"><code>__bid_subtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncdddf"><code>__bid_truncdddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncddsd2"><code>__bid_truncddsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncddsf"><code>__bid_truncddsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncdfsd"><code>__bid_truncdfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncsdsf"><code>__bid_truncsdsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctddd2"><code>__bid_trunctddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctddf"><code>__bid_trunctddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctdsd2"><code>__bid_trunctdsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctdsf"><code>__bid_trunctdsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctdtf"><code>__bid_trunctdtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctdxf"><code>__bid_trunctdxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctfdd"><code>__bid_trunctfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftrunctfsd"><code>__bid_trunctfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncxfdd"><code>__bid_truncxfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005ftruncxfsd"><code>__bid_truncxfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005funorddd2"><code>__bid_unorddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005funordsd2"><code>__bid_unordsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fbid_005funordtd2"><code>__bid_unordtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fbswapdi2"><code>__bswapdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fbswapsi2"><code>__bswapsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-_005f_005fbuiltin_005fclassify_005ftype"><code>__builtin_classify_type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-_005f_005fbuiltin_005fnext_005farg"><code>__builtin_next_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-_005f_005fbuiltin_005fsaveregs"><code>__builtin_saveregs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-routines.html#index-_005f_005fclear_005fcache"><code>__clear_cache</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-routines.html#Miscellaneous-routines">Miscellaneous routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fclzdi2"><code>__clzdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fclzsi2"><code>__clzsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fclzti2"><code>__clzti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpda2"><code>__cmpda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fcmpdf2"><code>__cmpdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fcmpdi2"><code>__cmpdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpdq2"><code>__cmpdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpha2"><code>__cmpha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmphq2"><code>__cmphq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpqq2"><code>__cmpqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpsa2"><code>__cmpsa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fcmpsf2"><code>__cmpsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpsq2"><code>__cmpsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpta2"><code>__cmpta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fcmptf2"><code>__cmptf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fcmpti2"><code>__cmpti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpuda2"><code>__cmpuda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpudq2"><code>__cmpudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpuha2"><code>__cmpuha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpuhq2"><code>__cmpuhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpuqq2"><code>__cmpuqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpusa2"><code>__cmpusa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmpusq2"><code>__cmpusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fcmputa2"><code>__cmputa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-_005f_005fCTOR_005fLIST_005f_005f"><code>__CTOR_LIST__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fctzdi2"><code>__ctzdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fctzsi2"><code>__ctzsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fctzti2"><code>__ctzti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivda3"><code>__divda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivdc3"><code>__divdc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivdf3"><code>__divdf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fdivdi3"><code>__divdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivdq3"><code>__divdq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivha3"><code>__divha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivhq3"><code>__divhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivqq3"><code>__divqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivsa3"><code>__divsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivsc3"><code>__divsc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivsf3"><code>__divsf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fdivsi3"><code>__divsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivsq3"><code>__divsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fdivta3"><code>__divta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivtc3"><code>__divtc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivtf3"><code>__divtf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fdivti3"><code>__divti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivxc3"><code>__divxc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fdivxf3"><code>__divxf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fadddd3"><code>__dpd_adddd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005faddsd3"><code>__dpd_addsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005faddtd3"><code>__dpd_addtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fdivdd3"><code>__dpd_divdd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fdivsd3"><code>__dpd_divsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fdivtd3"><code>__dpd_divtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005feqdd2"><code>__dpd_eqdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005feqsd2"><code>__dpd_eqsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005feqtd2"><code>__dpd_eqtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendddtd2"><code>__dpd_extendddtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendddtf"><code>__dpd_extendddtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendddxf"><code>__dpd_extendddxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextenddfdd"><code>__dpd_extenddfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextenddftd"><code>__dpd_extenddftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsddd2"><code>__dpd_extendsddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsddf"><code>__dpd_extendsddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsdtd2"><code>__dpd_extendsdtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsdtf"><code>__dpd_extendsdtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsdxf"><code>__dpd_extendsdxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsfdd"><code>__dpd_extendsfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsfsd"><code>__dpd_extendsfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendsftd"><code>__dpd_extendsftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendtftd"><code>__dpd_extendtftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fextendxftd"><code>__dpd_extendxftd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixdddi"><code>__dpd_fixdddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixddsi"><code>__dpd_fixddsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixsddi"><code>__dpd_fixsddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixsdsi"><code>__dpd_fixsdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixtddi"><code>__dpd_fixtddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixtdsi"><code>__dpd_fixtdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunsdddi"><code>__dpd_fixunsdddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunsddsi"><code>__dpd_fixunsddsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunssddi"><code>__dpd_fixunssddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunssdsi"><code>__dpd_fixunssdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunstddi"><code>__dpd_fixunstddi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffixunstdsi"><code>__dpd_fixunstdsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatdidd"><code>__dpd_floatdidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatdisd"><code>__dpd_floatdisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatditd"><code>__dpd_floatditd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatsidd"><code>__dpd_floatsidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatsisd"><code>__dpd_floatsisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatsitd"><code>__dpd_floatsitd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunsdidd"><code>__dpd_floatunsdidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunsdisd"><code>__dpd_floatunsdisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunsditd"><code>__dpd_floatunsditd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunssidd"><code>__dpd_floatunssidd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunssisd"><code>__dpd_floatunssisd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ffloatunssitd"><code>__dpd_floatunssitd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgedd2"><code>__dpd_gedd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgesd2"><code>__dpd_gesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgetd2"><code>__dpd_getd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgtdd2"><code>__dpd_gtdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgtsd2"><code>__dpd_gtsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fgttd2"><code>__dpd_gttd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fledd2"><code>__dpd_ledd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005flesd2"><code>__dpd_lesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fletd2"><code>__dpd_letd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fltdd2"><code>__dpd_ltdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fltsd2"><code>__dpd_ltsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005flttd2"><code>__dpd_lttd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fmuldd3"><code>__dpd_muldd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fmulsd3"><code>__dpd_mulsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fmultd3"><code>__dpd_multd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnedd2"><code>__dpd_nedd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnegdd2"><code>__dpd_negdd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnegsd2"><code>__dpd_negsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnegtd2"><code>__dpd_negtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnesd2"><code>__dpd_nesd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fnetd2"><code>__dpd_netd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fsubdd3"><code>__dpd_subdd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fsubsd3"><code>__dpd_subsd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005fsubtd3"><code>__dpd_subtd3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncdddf"><code>__dpd_truncdddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncddsd2"><code>__dpd_truncddsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncddsf"><code>__dpd_truncddsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncdfsd"><code>__dpd_truncdfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncsdsf"><code>__dpd_truncsdsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctddd2"><code>__dpd_trunctddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctddf"><code>__dpd_trunctddf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctdsd2"><code>__dpd_trunctdsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctdsf"><code>__dpd_trunctdsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctdtf"><code>__dpd_trunctdtf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctdxf"><code>__dpd_trunctdxf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctfdd"><code>__dpd_trunctfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftrunctfsd"><code>__dpd_trunctfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncxfdd"><code>__dpd_truncxfdd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005ftruncxfsd"><code>__dpd_truncxfsd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005funorddd2"><code>__dpd_unorddd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005funordsd2"><code>__dpd_unordsd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-_005f_005fdpd_005funordtd2"><code>__dpd_unordtd2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-_005f_005fDTOR_005fLIST_005f_005f"><code>__DTOR_LIST__</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005feqdf2"><code>__eqdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005feqsf2"><code>__eqsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005feqtf2"><code>__eqtf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fextenddftf2"><code>__extenddftf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fextenddfxf2"><code>__extenddfxf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fextendsfdf2"><code>__extendsfdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fextendsftf2"><code>__extendsftf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fextendsfxf2"><code>__extendsfxf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fffsdi2"><code>__ffsdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fffsti2"><code>__ffsti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixdfdi"><code>__fixdfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixdfsi"><code>__fixdfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixdfti"><code>__fixdfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixsfdi"><code>__fixsfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixsfsi"><code>__fixsfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixsfti"><code>__fixsfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixtfdi"><code>__fixtfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixtfsi"><code>__fixtfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixtfti"><code>__fixtfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsdfdi"><code>__fixunsdfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsdfsi"><code>__fixunsdfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsdfti"><code>__fixunsdfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunssfdi"><code>__fixunssfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunssfsi"><code>__fixunssfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunssfti"><code>__fixunssfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunstfdi"><code>__fixunstfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunstfsi"><code>__fixunstfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunstfti"><code>__fixunstfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsxfdi"><code>__fixunsxfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsxfsi"><code>__fixunsxfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixunsxfti"><code>__fixunsxfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixxfdi"><code>__fixxfdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixxfsi"><code>__fixxfsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffixxfti"><code>__fixxfti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatdidf"><code>__floatdidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatdisf"><code>__floatdisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatditf"><code>__floatditf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatdixf"><code>__floatdixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatsidf"><code>__floatsidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatsisf"><code>__floatsisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatsitf"><code>__floatsitf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatsixf"><code>__floatsixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloattidf"><code>__floattidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloattisf"><code>__floattisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloattitf"><code>__floattitf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloattixf"><code>__floattixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatundidf"><code>__floatundidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatundisf"><code>__floatundisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatunditf"><code>__floatunditf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatundixf"><code>__floatundixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatunsidf"><code>__floatunsidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatunsisf"><code>__floatunsisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatunsitf"><code>__floatunsitf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatunsixf"><code>__floatunsixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatuntidf"><code>__floatuntidf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatuntisf"><code>__floatuntisf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatuntitf"><code>__floatuntitf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ffloatuntixf"><code>__floatuntixf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdadf"><code>__fractdadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdadi"><code>__fractdadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdadq"><code>__fractdadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdaha2"><code>__fractdaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdahi"><code>__fractdahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdahq"><code>__fractdahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdaqi"><code>__fractdaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdaqq"><code>__fractdaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdasa2"><code>__fractdasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdasf"><code>__fractdasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdasi"><code>__fractdasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdasq"><code>__fractdasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdata2"><code>__fractdata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdati"><code>__fractdati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdauda"><code>__fractdauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdaudq"><code>__fractdaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdauha"><code>__fractdauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdauhq"><code>__fractdauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdauqq"><code>__fractdauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdausa"><code>__fractdausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdausq"><code>__fractdausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdauta"><code>__fractdauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfda"><code>__fractdfda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfdq"><code>__fractdfdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfha"><code>__fractdfha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfhq"><code>__fractdfhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfqq"><code>__fractdfqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfsa"><code>__fractdfsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfsq"><code>__fractdfsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfta"><code>__fractdfta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfuda"><code>__fractdfuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfudq"><code>__fractdfudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfuha"><code>__fractdfuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfuhq"><code>__fractdfuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfuqq"><code>__fractdfuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfusa"><code>__fractdfusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfusq"><code>__fractdfusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdfuta"><code>__fractdfuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdida"><code>__fractdida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdidq"><code>__fractdidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiha"><code>__fractdiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdihq"><code>__fractdihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiqq"><code>__fractdiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdisa"><code>__fractdisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdisq"><code>__fractdisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdita"><code>__fractdita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiuda"><code>__fractdiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiudq"><code>__fractdiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiuha"><code>__fractdiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiuhq"><code>__fractdiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiuqq"><code>__fractdiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiusa"><code>__fractdiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiusq"><code>__fractdiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdiuta"><code>__fractdiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqda"><code>__fractdqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqdf"><code>__fractdqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqdi"><code>__fractdqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqha"><code>__fractdqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqhi"><code>__fractdqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqhq2"><code>__fractdqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqqi"><code>__fractdqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqqq2"><code>__fractdqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqsa"><code>__fractdqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqsf"><code>__fractdqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqsi"><code>__fractdqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqsq2"><code>__fractdqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqta"><code>__fractdqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqti"><code>__fractdqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdquda"><code>__fractdquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqudq"><code>__fractdqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdquha"><code>__fractdquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdquhq"><code>__fractdquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdquqq"><code>__fractdquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqusa"><code>__fractdqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdqusq"><code>__fractdqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractdquta"><code>__fractdquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthada2"><code>__fracthada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthadf"><code>__fracthadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthadi"><code>__fracthadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthadq"><code>__fracthadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthahi"><code>__fracthahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthahq"><code>__fracthahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthaqi"><code>__fracthaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthaqq"><code>__fracthaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthasa2"><code>__fracthasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthasf"><code>__fracthasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthasi"><code>__fracthasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthasq"><code>__fracthasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthata2"><code>__fracthata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthati"><code>__fracthati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthauda"><code>__fracthauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthaudq"><code>__fracthaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthauha"><code>__fracthauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthauhq"><code>__fracthauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthauqq"><code>__fracthauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthausa"><code>__fracthausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthausq"><code>__fracthausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthauta"><code>__fracthauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthida"><code>__fracthida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthidq"><code>__fracthidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiha"><code>__fracthiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthihq"><code>__fracthihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiqq"><code>__fracthiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthisa"><code>__fracthisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthisq"><code>__fracthisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthita"><code>__fracthita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiuda"><code>__fracthiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiudq"><code>__fracthiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiuha"><code>__fracthiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiuhq"><code>__fracthiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiuqq"><code>__fracthiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiusa"><code>__fracthiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiusq"><code>__fracthiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthiuta"><code>__fracthiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqda"><code>__fracthqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqdf"><code>__fracthqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqdi"><code>__fracthqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqdq2"><code>__fracthqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqha"><code>__fracthqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqhi"><code>__fracthqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqqi"><code>__fracthqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqqq2"><code>__fracthqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqsa"><code>__fracthqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqsf"><code>__fracthqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqsi"><code>__fracthqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqsq2"><code>__fracthqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqta"><code>__fracthqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqti"><code>__fracthqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthquda"><code>__fracthquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqudq"><code>__fracthqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthquha"><code>__fracthquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthquhq"><code>__fracthquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthquqq"><code>__fracthquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqusa"><code>__fracthqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthqusq"><code>__fracthqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracthquta"><code>__fracthquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqida"><code>__fractqida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqidq"><code>__fractqidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiha"><code>__fractqiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqihq"><code>__fractqihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiqq"><code>__fractqiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqisa"><code>__fractqisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqisq"><code>__fractqisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqita"><code>__fractqita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiuda"><code>__fractqiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiudq"><code>__fractqiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiuha"><code>__fractqiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiuhq"><code>__fractqiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiuqq"><code>__fractqiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiusa"><code>__fractqiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiusq"><code>__fractqiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqiuta"><code>__fractqiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqda"><code>__fractqqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqdf"><code>__fractqqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqdi"><code>__fractqqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqdq2"><code>__fractqqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqha"><code>__fractqqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqhi"><code>__fractqqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqhq2"><code>__fractqqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqqi"><code>__fractqqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqsa"><code>__fractqqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqsf"><code>__fractqqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqsi"><code>__fractqqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqsq2"><code>__fractqqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqta"><code>__fractqqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqti"><code>__fractqqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqquda"><code>__fractqquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqudq"><code>__fractqqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqquha"><code>__fractqquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqquhq"><code>__fractqquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqquqq"><code>__fractqquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqusa"><code>__fractqqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqqusq"><code>__fractqqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractqquta"><code>__fractqquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsada2"><code>__fractsada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsadf"><code>__fractsadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsadi"><code>__fractsadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsadq"><code>__fractsadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsaha2"><code>__fractsaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsahi"><code>__fractsahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsahq"><code>__fractsahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsaqi"><code>__fractsaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsaqq"><code>__fractsaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsasf"><code>__fractsasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsasi"><code>__fractsasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsasq"><code>__fractsasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsata2"><code>__fractsata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsati"><code>__fractsati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsauda"><code>__fractsauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsaudq"><code>__fractsaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsauha"><code>__fractsauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsauhq"><code>__fractsauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsauqq"><code>__fractsauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsausa"><code>__fractsausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsausq"><code>__fractsausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsauta"><code>__fractsauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfda"><code>__fractsfda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfdq"><code>__fractsfdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfha"><code>__fractsfha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfhq"><code>__fractsfhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfqq"><code>__fractsfqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfsa"><code>__fractsfsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfsq"><code>__fractsfsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfta"><code>__fractsfta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfuda"><code>__fractsfuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfudq"><code>__fractsfudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfuha"><code>__fractsfuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfuhq"><code>__fractsfuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfuqq"><code>__fractsfuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfusa"><code>__fractsfusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfusq"><code>__fractsfusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsfuta"><code>__fractsfuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsida"><code>__fractsida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsidq"><code>__fractsidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiha"><code>__fractsiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsihq"><code>__fractsihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiqq"><code>__fractsiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsisa"><code>__fractsisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsisq"><code>__fractsisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsita"><code>__fractsita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiuda"><code>__fractsiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiudq"><code>__fractsiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiuha"><code>__fractsiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiuhq"><code>__fractsiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiuqq"><code>__fractsiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiusa"><code>__fractsiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiusq"><code>__fractsiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsiuta"><code>__fractsiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqda"><code>__fractsqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqdf"><code>__fractsqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqdi"><code>__fractsqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqdq2"><code>__fractsqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqha"><code>__fractsqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqhi"><code>__fractsqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqhq2"><code>__fractsqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqqi"><code>__fractsqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqqq2"><code>__fractsqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqsa"><code>__fractsqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqsf"><code>__fractsqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqsi"><code>__fractsqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqta"><code>__fractsqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqti"><code>__fractsqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsquda"><code>__fractsquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqudq"><code>__fractsqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsquha"><code>__fractsquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsquhq"><code>__fractsquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsquqq"><code>__fractsquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqusa"><code>__fractsqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsqusq"><code>__fractsqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractsquta"><code>__fractsquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttada2"><code>__fracttada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttadf"><code>__fracttadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttadi"><code>__fracttadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttadq"><code>__fracttadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttaha2"><code>__fracttaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttahi"><code>__fracttahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttahq"><code>__fracttahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttaqi"><code>__fracttaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttaqq"><code>__fracttaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttasa2"><code>__fracttasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttasf"><code>__fracttasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttasi"><code>__fracttasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttasq"><code>__fracttasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttati"><code>__fracttati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttauda"><code>__fracttauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttaudq"><code>__fracttaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttauha"><code>__fracttauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttauhq"><code>__fracttauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttauqq"><code>__fracttauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttausa"><code>__fracttausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttausq"><code>__fracttausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttauta"><code>__fracttauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttida"><code>__fracttida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttidq"><code>__fracttidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiha"><code>__fracttiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttihq"><code>__fracttihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiqq"><code>__fracttiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttisa"><code>__fracttisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttisq"><code>__fracttisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttita"><code>__fracttita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiuda"><code>__fracttiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiudq"><code>__fracttiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiuha"><code>__fracttiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiuhq"><code>__fracttiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiuqq"><code>__fracttiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiusa"><code>__fracttiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiusq"><code>__fracttiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffracttiuta"><code>__fracttiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudada"><code>__fractudada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudadf"><code>__fractudadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudadi"><code>__fractudadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudadq"><code>__fractudadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudaha"><code>__fractudaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudahi"><code>__fractudahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudahq"><code>__fractudahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudaqi"><code>__fractudaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudaqq"><code>__fractudaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudasa"><code>__fractudasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudasf"><code>__fractudasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudasi"><code>__fractudasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudasq"><code>__fractudasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudata"><code>__fractudata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudati"><code>__fractudati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudaudq"><code>__fractudaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudauha2"><code>__fractudauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudauhq"><code>__fractudauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudauqq"><code>__fractudauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudausa2"><code>__fractudausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudausq"><code>__fractudausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudauta2"><code>__fractudauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqda"><code>__fractudqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqdf"><code>__fractudqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqdi"><code>__fractudqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqdq"><code>__fractudqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqha"><code>__fractudqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqhi"><code>__fractudqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqhq"><code>__fractudqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqqi"><code>__fractudqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqqq"><code>__fractudqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqsa"><code>__fractudqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqsf"><code>__fractudqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqsi"><code>__fractudqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqsq"><code>__fractudqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqta"><code>__fractudqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqti"><code>__fractudqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudquda"><code>__fractudquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudquha"><code>__fractudquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudquhq2"><code>__fractudquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudquqq2"><code>__fractudquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqusa"><code>__fractudqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudqusq2"><code>__fractudqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractudquta"><code>__fractudquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhada"><code>__fractuhada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhadf"><code>__fractuhadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhadi"><code>__fractuhadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhadq"><code>__fractuhadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhaha"><code>__fractuhaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhahi"><code>__fractuhahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhahq"><code>__fractuhahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhaqi"><code>__fractuhaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhaqq"><code>__fractuhaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhasa"><code>__fractuhasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhasf"><code>__fractuhasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhasi"><code>__fractuhasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhasq"><code>__fractuhasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhata"><code>__fractuhata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhati"><code>__fractuhati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhauda2"><code>__fractuhauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhaudq"><code>__fractuhaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhauhq"><code>__fractuhauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhauqq"><code>__fractuhauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhausa2"><code>__fractuhausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhausq"><code>__fractuhausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhauta2"><code>__fractuhauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqda"><code>__fractuhqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqdf"><code>__fractuhqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqdi"><code>__fractuhqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqdq"><code>__fractuhqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqha"><code>__fractuhqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqhi"><code>__fractuhqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqhq"><code>__fractuhqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqqi"><code>__fractuhqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqqq"><code>__fractuhqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqsa"><code>__fractuhqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqsf"><code>__fractuhqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqsi"><code>__fractuhqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqsq"><code>__fractuhqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqta"><code>__fractuhqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqti"><code>__fractuhqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhquda"><code>__fractuhquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqudq2"><code>__fractuhqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhquha"><code>__fractuhquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhquqq2"><code>__fractuhquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqusa"><code>__fractuhqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhqusq2"><code>__fractuhqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuhquta"><code>__fractuhquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdadi"><code>__fractunsdadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdahi"><code>__fractunsdahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdaqi"><code>__fractunsdaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdasi"><code>__fractunsdasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdati"><code>__fractunsdati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdida"><code>__fractunsdida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdidq"><code>__fractunsdidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiha"><code>__fractunsdiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdihq"><code>__fractunsdihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiqq"><code>__fractunsdiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdisa"><code>__fractunsdisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdisq"><code>__fractunsdisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdita"><code>__fractunsdita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiuda"><code>__fractunsdiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiudq"><code>__fractunsdiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiuha"><code>__fractunsdiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiuhq"><code>__fractunsdiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiuqq"><code>__fractunsdiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiusa"><code>__fractunsdiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiusq"><code>__fractunsdiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdiuta"><code>__fractunsdiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdqdi"><code>__fractunsdqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdqhi"><code>__fractunsdqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdqqi"><code>__fractunsdqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdqsi"><code>__fractunsdqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsdqti"><code>__fractunsdqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshadi"><code>__fractunshadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshahi"><code>__fractunshahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshaqi"><code>__fractunshaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshasi"><code>__fractunshasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshati"><code>__fractunshati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshida"><code>__fractunshida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshidq"><code>__fractunshidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiha"><code>__fractunshiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshihq"><code>__fractunshihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiqq"><code>__fractunshiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshisa"><code>__fractunshisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshisq"><code>__fractunshisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshita"><code>__fractunshita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiuda"><code>__fractunshiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiudq"><code>__fractunshiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiuha"><code>__fractunshiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiuhq"><code>__fractunshiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiuqq"><code>__fractunshiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiusa"><code>__fractunshiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiusq"><code>__fractunshiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshiuta"><code>__fractunshiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshqdi"><code>__fractunshqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshqhi"><code>__fractunshqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshqqi"><code>__fractunshqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshqsi"><code>__fractunshqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunshqti"><code>__fractunshqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqida"><code>__fractunsqida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqidq"><code>__fractunsqidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiha"><code>__fractunsqiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqihq"><code>__fractunsqihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiqq"><code>__fractunsqiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqisa"><code>__fractunsqisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqisq"><code>__fractunsqisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqita"><code>__fractunsqita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiuda"><code>__fractunsqiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiudq"><code>__fractunsqiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiuha"><code>__fractunsqiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiuhq"><code>__fractunsqiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiuqq"><code>__fractunsqiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiusa"><code>__fractunsqiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiusq"><code>__fractunsqiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqiuta"><code>__fractunsqiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqqdi"><code>__fractunsqqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqqhi"><code>__fractunsqqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqqqi"><code>__fractunsqqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqqsi"><code>__fractunsqqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsqqti"><code>__fractunsqqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssadi"><code>__fractunssadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssahi"><code>__fractunssahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssaqi"><code>__fractunssaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssasi"><code>__fractunssasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssati"><code>__fractunssati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssida"><code>__fractunssida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssidq"><code>__fractunssidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiha"><code>__fractunssiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssihq"><code>__fractunssihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiqq"><code>__fractunssiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssisa"><code>__fractunssisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssisq"><code>__fractunssisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssita"><code>__fractunssita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiuda"><code>__fractunssiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiudq"><code>__fractunssiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiuha"><code>__fractunssiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiuhq"><code>__fractunssiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiuqq"><code>__fractunssiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiusa"><code>__fractunssiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiusq"><code>__fractunssiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssiuta"><code>__fractunssiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssqdi"><code>__fractunssqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssqhi"><code>__fractunssqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssqqi"><code>__fractunssqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssqsi"><code>__fractunssqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunssqti"><code>__fractunssqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstadi"><code>__fractunstadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstahi"><code>__fractunstahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstaqi"><code>__fractunstaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstasi"><code>__fractunstasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstati"><code>__fractunstati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstida"><code>__fractunstida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstidq"><code>__fractunstidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiha"><code>__fractunstiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstihq"><code>__fractunstihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiqq"><code>__fractunstiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstisa"><code>__fractunstisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstisq"><code>__fractunstisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstita"><code>__fractunstita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiuda"><code>__fractunstiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiudq"><code>__fractunstiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiuha"><code>__fractunstiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiuhq"><code>__fractunstiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiuqq"><code>__fractunstiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiusa"><code>__fractunstiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiusq"><code>__fractunstiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunstiuta"><code>__fractunstiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudadi"><code>__fractunsudadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudahi"><code>__fractunsudahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudaqi"><code>__fractunsudaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudasi"><code>__fractunsudasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudati"><code>__fractunsudati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudqdi"><code>__fractunsudqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudqhi"><code>__fractunsudqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudqqi"><code>__fractunsudqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudqsi"><code>__fractunsudqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsudqti"><code>__fractunsudqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhadi"><code>__fractunsuhadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhahi"><code>__fractunsuhahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhaqi"><code>__fractunsuhaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhasi"><code>__fractunsuhasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhati"><code>__fractunsuhati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhqdi"><code>__fractunsuhqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhqhi"><code>__fractunsuhqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhqqi"><code>__fractunsuhqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhqsi"><code>__fractunsuhqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuhqti"><code>__fractunsuhqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuqqdi"><code>__fractunsuqqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuqqhi"><code>__fractunsuqqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuqqqi"><code>__fractunsuqqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuqqsi"><code>__fractunsuqqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsuqqti"><code>__fractunsuqqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusadi"><code>__fractunsusadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusahi"><code>__fractunsusahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusaqi"><code>__fractunsusaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusasi"><code>__fractunsusasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusati"><code>__fractunsusati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusqdi"><code>__fractunsusqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusqhi"><code>__fractunsusqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusqqi"><code>__fractunsusqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusqsi"><code>__fractunsusqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsusqti"><code>__fractunsusqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsutadi"><code>__fractunsutadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsutahi"><code>__fractunsutahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsutaqi"><code>__fractunsutaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsutasi"><code>__fractunsutasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractunsutati"><code>__fractunsutati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqda"><code>__fractuqqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqdf"><code>__fractuqqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqdi"><code>__fractuqqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqdq"><code>__fractuqqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqha"><code>__fractuqqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqhi"><code>__fractuqqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqhq"><code>__fractuqqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqqi"><code>__fractuqqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqqq"><code>__fractuqqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqsa"><code>__fractuqqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqsf"><code>__fractuqqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqsi"><code>__fractuqqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqsq"><code>__fractuqqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqta"><code>__fractuqqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqti"><code>__fractuqqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqquda"><code>__fractuqquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqudq2"><code>__fractuqqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqquha"><code>__fractuqquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqquhq2"><code>__fractuqquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqusa"><code>__fractuqqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqqusq2"><code>__fractuqqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractuqquta"><code>__fractuqquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusada"><code>__fractusada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusadf"><code>__fractusadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusadi"><code>__fractusadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusadq"><code>__fractusadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusaha"><code>__fractusaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusahi"><code>__fractusahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusahq"><code>__fractusahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusaqi"><code>__fractusaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusaqq"><code>__fractusaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusasa"><code>__fractusasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusasf"><code>__fractusasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusasi"><code>__fractusasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusasq"><code>__fractusasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusata"><code>__fractusata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusati"><code>__fractusati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusauda2"><code>__fractusauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusaudq"><code>__fractusaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusauha2"><code>__fractusauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusauhq"><code>__fractusauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusauqq"><code>__fractusauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusausq"><code>__fractusausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusauta2"><code>__fractusauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqda"><code>__fractusqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqdf"><code>__fractusqdf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqdi"><code>__fractusqdi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqdq"><code>__fractusqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqha"><code>__fractusqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqhi"><code>__fractusqhi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqhq"><code>__fractusqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqqi"><code>__fractusqqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqqq"><code>__fractusqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqsa"><code>__fractusqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqsf"><code>__fractusqsf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqsi"><code>__fractusqsi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqsq"><code>__fractusqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqta"><code>__fractusqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqti"><code>__fractusqti</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusquda"><code>__fractusquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqudq2"><code>__fractusqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusquha"><code>__fractusquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusquhq2"><code>__fractusquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusquqq2"><code>__fractusquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusqusa"><code>__fractusqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractusquta"><code>__fractusquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutada"><code>__fractutada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutadf"><code>__fractutadf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutadi"><code>__fractutadi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutadq"><code>__fractutadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutaha"><code>__fractutaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutahi"><code>__fractutahi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutahq"><code>__fractutahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutaqi"><code>__fractutaqi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutaqq"><code>__fractutaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutasa"><code>__fractutasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutasf"><code>__fractutasf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutasi"><code>__fractutasi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutasq"><code>__fractutasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutata"><code>__fractutata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutati"><code>__fractutati</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutauda2"><code>__fractutauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutaudq"><code>__fractutaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutauha2"><code>__fractutauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutauhq"><code>__fractutauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutauqq"><code>__fractutauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutausa2"><code>__fractutausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005ffractutausq"><code>__fractutausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgedf2"><code>__gedf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgesf2"><code>__gesf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgetf2"><code>__getf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgtdf2"><code>__gtdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgtsf2"><code>__gtsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fgttf2"><code>__gttf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fledf2"><code>__ledf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005flesf2"><code>__lesf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fletf2"><code>__letf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005flshrdi3"><code>__lshrdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005flshrsi3"><code>__lshrsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005flshrti3"><code>__lshrti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshruda3"><code>__lshruda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshrudq3"><code>__lshrudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshruha3"><code>__lshruha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshruhq3"><code>__lshruhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshruqq3"><code>__lshruqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshrusa3"><code>__lshrusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshrusq3"><code>__lshrusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005flshruta3"><code>__lshruta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fltdf2"><code>__ltdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fltsf2"><code>__ltsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005flttf2"><code>__lttf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Collect2.html#index-_005f_005fmain"><code>__main</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Collect2.html#Collect2">Collect2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmoddi3"><code>__moddi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmodsi3"><code>__modsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmodti3"><code>__modti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-routines.html#index-_005f_005fmorestack_005fcurrent_005fsegment"><code>__morestack_current_segment</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-routines.html#Miscellaneous-routines">Miscellaneous routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-routines.html#index-_005f_005fmorestack_005finitial_005fsp"><code>__morestack_initial_sp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-routines.html#Miscellaneous-routines">Miscellaneous routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-routines.html#index-_005f_005fmorestack_005fsegments"><code>__morestack_segments</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-routines.html#Miscellaneous-routines">Miscellaneous routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulda3"><code>__mulda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmuldc3"><code>__muldc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmuldf3"><code>__muldf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmuldi3"><code>__muldi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuldq3"><code>__muldq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulha3"><code>__mulha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulhq3"><code>__mulhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulqq3"><code>__mulqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulsa3"><code>__mulsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmulsc3"><code>__mulsc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmulsf3"><code>__mulsf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmulsi3"><code>__mulsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulsq3"><code>__mulsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulta3"><code>__multa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmultc3"><code>__multc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmultf3"><code>__multf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmulti3"><code>__multi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuluda3"><code>__muluda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuludq3"><code>__muludq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuluha3"><code>__muluha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuluhq3"><code>__muluhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuluqq3"><code>__muluqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulusa3"><code>__mulusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmulusq3"><code>__mulusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fmuluta3"><code>__muluta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmulvdi3"><code>__mulvdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fmulvsi3"><code>__mulvsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmulxc3"><code>__mulxc3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fmulxf3"><code>__mulxf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnedf2"><code>__nedf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegda2"><code>__negda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnegdf2"><code>__negdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fnegdi2"><code>__negdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegdq2"><code>__negdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegha2"><code>__negha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneghq2"><code>__neghq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegqq2"><code>__negqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegsa2"><code>__negsa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnegsf2"><code>__negsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegsq2"><code>__negsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegta2"><code>__negta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnegtf2"><code>__negtf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fnegti2"><code>__negti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneguda2"><code>__neguda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegudq2"><code>__negudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneguha2"><code>__neguha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneguhq2"><code>__neguhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneguqq2"><code>__neguqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegusa2"><code>__negusa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fnegusq2"><code>__negusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fneguta2"><code>__neguta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fnegvdi2"><code>__negvdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fnegvsi2"><code>__negvsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnegxf2"><code>__negxf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnesf2"><code>__nesf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fnetf2"><code>__netf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fparitydi2"><code>__paritydi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fparitysi2"><code>__paritysi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fparityti2"><code>__parityti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fpopcountdi2"><code>__popcountdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fpopcountsi2"><code>__popcountsi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fpopcountti2"><code>__popcountti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fpowidf2"><code>__powidf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fpowisf2"><code>__powisf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fpowitf2"><code>__powitf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fpowixf2"><code>__powixf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdadq"><code>__satfractdadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdaha2"><code>__satfractdaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdahq"><code>__satfractdahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdaqq"><code>__satfractdaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdasa2"><code>__satfractdasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdasq"><code>__satfractdasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdata2"><code>__satfractdata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdauda"><code>__satfractdauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdaudq"><code>__satfractdaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdauha"><code>__satfractdauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdauhq"><code>__satfractdauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdauqq"><code>__satfractdauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdausa"><code>__satfractdausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdausq"><code>__satfractdausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdauta"><code>__satfractdauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfda"><code>__satfractdfda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfdq"><code>__satfractdfdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfha"><code>__satfractdfha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfhq"><code>__satfractdfhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfqq"><code>__satfractdfqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfsa"><code>__satfractdfsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfsq"><code>__satfractdfsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfta"><code>__satfractdfta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfuda"><code>__satfractdfuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfudq"><code>__satfractdfudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfuha"><code>__satfractdfuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfuhq"><code>__satfractdfuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfuqq"><code>__satfractdfuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfusa"><code>__satfractdfusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfusq"><code>__satfractdfusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdfuta"><code>__satfractdfuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdida"><code>__satfractdida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdidq"><code>__satfractdidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiha"><code>__satfractdiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdihq"><code>__satfractdihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiqq"><code>__satfractdiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdisa"><code>__satfractdisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdisq"><code>__satfractdisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdita"><code>__satfractdita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiuda"><code>__satfractdiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiudq"><code>__satfractdiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiuha"><code>__satfractdiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiuhq"><code>__satfractdiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiuqq"><code>__satfractdiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiusa"><code>__satfractdiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiusq"><code>__satfractdiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdiuta"><code>__satfractdiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqda"><code>__satfractdqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqha"><code>__satfractdqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqhq2"><code>__satfractdqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqqq2"><code>__satfractdqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqsa"><code>__satfractdqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqsq2"><code>__satfractdqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqta"><code>__satfractdqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdquda"><code>__satfractdquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqudq"><code>__satfractdqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdquha"><code>__satfractdquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdquhq"><code>__satfractdquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdquqq"><code>__satfractdquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqusa"><code>__satfractdqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdqusq"><code>__satfractdqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractdquta"><code>__satfractdquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthada2"><code>__satfracthada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthadq"><code>__satfracthadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthahq"><code>__satfracthahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthaqq"><code>__satfracthaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthasa2"><code>__satfracthasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthasq"><code>__satfracthasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthata2"><code>__satfracthata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthauda"><code>__satfracthauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthaudq"><code>__satfracthaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthauha"><code>__satfracthauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthauhq"><code>__satfracthauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthauqq"><code>__satfracthauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthausa"><code>__satfracthausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthausq"><code>__satfracthausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthauta"><code>__satfracthauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthida"><code>__satfracthida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthidq"><code>__satfracthidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiha"><code>__satfracthiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthihq"><code>__satfracthihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiqq"><code>__satfracthiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthisa"><code>__satfracthisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthisq"><code>__satfracthisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthita"><code>__satfracthita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiuda"><code>__satfracthiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiudq"><code>__satfracthiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiuha"><code>__satfracthiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiuhq"><code>__satfracthiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiuqq"><code>__satfracthiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiusa"><code>__satfracthiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiusq"><code>__satfracthiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthiuta"><code>__satfracthiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqda"><code>__satfracthqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqdq2"><code>__satfracthqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqha"><code>__satfracthqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqqq2"><code>__satfracthqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqsa"><code>__satfracthqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqsq2"><code>__satfracthqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqta"><code>__satfracthqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthquda"><code>__satfracthquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqudq"><code>__satfracthqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthquha"><code>__satfracthquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthquhq"><code>__satfracthquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthquqq"><code>__satfracthquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqusa"><code>__satfracthqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthqusq"><code>__satfracthqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracthquta"><code>__satfracthquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqida"><code>__satfractqida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqidq"><code>__satfractqidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiha"><code>__satfractqiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqihq"><code>__satfractqihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiqq"><code>__satfractqiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqisa"><code>__satfractqisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqisq"><code>__satfractqisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqita"><code>__satfractqita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiuda"><code>__satfractqiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiudq"><code>__satfractqiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiuha"><code>__satfractqiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiuhq"><code>__satfractqiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiuqq"><code>__satfractqiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiusa"><code>__satfractqiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiusq"><code>__satfractqiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqiuta"><code>__satfractqiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqda"><code>__satfractqqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqdq2"><code>__satfractqqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqha"><code>__satfractqqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqhq2"><code>__satfractqqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqsa"><code>__satfractqqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqsq2"><code>__satfractqqsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqta"><code>__satfractqqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqquda"><code>__satfractqquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqudq"><code>__satfractqqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqquha"><code>__satfractqquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqquhq"><code>__satfractqquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqquqq"><code>__satfractqquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqusa"><code>__satfractqqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqqusq"><code>__satfractqqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractqquta"><code>__satfractqquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsada2"><code>__satfractsada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsadq"><code>__satfractsadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsaha2"><code>__satfractsaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsahq"><code>__satfractsahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsaqq"><code>__satfractsaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsasq"><code>__satfractsasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsata2"><code>__satfractsata2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsauda"><code>__satfractsauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsaudq"><code>__satfractsaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsauha"><code>__satfractsauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsauhq"><code>__satfractsauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsauqq"><code>__satfractsauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsausa"><code>__satfractsausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsausq"><code>__satfractsausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsauta"><code>__satfractsauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfda"><code>__satfractsfda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfdq"><code>__satfractsfdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfha"><code>__satfractsfha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfhq"><code>__satfractsfhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfqq"><code>__satfractsfqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfsa"><code>__satfractsfsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfsq"><code>__satfractsfsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfta"><code>__satfractsfta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfuda"><code>__satfractsfuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfudq"><code>__satfractsfudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfuha"><code>__satfractsfuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfuhq"><code>__satfractsfuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfuqq"><code>__satfractsfuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfusa"><code>__satfractsfusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfusq"><code>__satfractsfusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsfuta"><code>__satfractsfuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsida"><code>__satfractsida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsidq"><code>__satfractsidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiha"><code>__satfractsiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsihq"><code>__satfractsihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiqq"><code>__satfractsiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsisa"><code>__satfractsisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsisq"><code>__satfractsisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsita"><code>__satfractsita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiuda"><code>__satfractsiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiudq"><code>__satfractsiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiuha"><code>__satfractsiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiuhq"><code>__satfractsiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiuqq"><code>__satfractsiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiusa"><code>__satfractsiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiusq"><code>__satfractsiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsiuta"><code>__satfractsiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqda"><code>__satfractsqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqdq2"><code>__satfractsqdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqha"><code>__satfractsqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqhq2"><code>__satfractsqhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqqq2"><code>__satfractsqqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqsa"><code>__satfractsqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqta"><code>__satfractsqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsquda"><code>__satfractsquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqudq"><code>__satfractsqudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsquha"><code>__satfractsquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsquhq"><code>__satfractsquhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsquqq"><code>__satfractsquqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqusa"><code>__satfractsqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsqusq"><code>__satfractsqusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractsquta"><code>__satfractsquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttada2"><code>__satfracttada2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttadq"><code>__satfracttadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttaha2"><code>__satfracttaha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttahq"><code>__satfracttahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttaqq"><code>__satfracttaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttasa2"><code>__satfracttasa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttasq"><code>__satfracttasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttauda"><code>__satfracttauda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttaudq"><code>__satfracttaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttauha"><code>__satfracttauha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttauhq"><code>__satfracttauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttauqq"><code>__satfracttauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttausa"><code>__satfracttausa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttausq"><code>__satfracttausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttauta"><code>__satfracttauta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttida"><code>__satfracttida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttidq"><code>__satfracttidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiha"><code>__satfracttiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttihq"><code>__satfracttihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiqq"><code>__satfracttiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttisa"><code>__satfracttisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttisq"><code>__satfracttisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttita"><code>__satfracttita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiuda"><code>__satfracttiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiudq"><code>__satfracttiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiuha"><code>__satfracttiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiuhq"><code>__satfracttiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiuqq"><code>__satfracttiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiusa"><code>__satfracttiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiusq"><code>__satfracttiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfracttiuta"><code>__satfracttiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudada"><code>__satfractudada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudadq"><code>__satfractudadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudaha"><code>__satfractudaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudahq"><code>__satfractudahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudaqq"><code>__satfractudaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudasa"><code>__satfractudasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudasq"><code>__satfractudasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudata"><code>__satfractudata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudaudq"><code>__satfractudaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudauha2"><code>__satfractudauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudauhq"><code>__satfractudauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudauqq"><code>__satfractudauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudausa2"><code>__satfractudausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudausq"><code>__satfractudausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudauta2"><code>__satfractudauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqda"><code>__satfractudqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqdq"><code>__satfractudqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqha"><code>__satfractudqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqhq"><code>__satfractudqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqqq"><code>__satfractudqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqsa"><code>__satfractudqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqsq"><code>__satfractudqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqta"><code>__satfractudqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudquda"><code>__satfractudquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudquha"><code>__satfractudquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudquhq2"><code>__satfractudquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudquqq2"><code>__satfractudquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqusa"><code>__satfractudqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudqusq2"><code>__satfractudqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractudquta"><code>__satfractudquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhada"><code>__satfractuhada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhadq"><code>__satfractuhadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhaha"><code>__satfractuhaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhahq"><code>__satfractuhahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhaqq"><code>__satfractuhaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhasa"><code>__satfractuhasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhasq"><code>__satfractuhasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhata"><code>__satfractuhata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhauda2"><code>__satfractuhauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhaudq"><code>__satfractuhaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhauhq"><code>__satfractuhauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhauqq"><code>__satfractuhauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhausa2"><code>__satfractuhausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhausq"><code>__satfractuhausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhauta2"><code>__satfractuhauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqda"><code>__satfractuhqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqdq"><code>__satfractuhqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqha"><code>__satfractuhqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqhq"><code>__satfractuhqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqqq"><code>__satfractuhqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqsa"><code>__satfractuhqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqsq"><code>__satfractuhqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqta"><code>__satfractuhqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhquda"><code>__satfractuhquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqudq2"><code>__satfractuhqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhquha"><code>__satfractuhquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhquqq2"><code>__satfractuhquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqusa"><code>__satfractuhqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhqusq2"><code>__satfractuhqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuhquta"><code>__satfractuhquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdida"><code>__satfractunsdida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdidq"><code>__satfractunsdidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiha"><code>__satfractunsdiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdihq"><code>__satfractunsdihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiqq"><code>__satfractunsdiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdisa"><code>__satfractunsdisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdisq"><code>__satfractunsdisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdita"><code>__satfractunsdita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiuda"><code>__satfractunsdiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiudq"><code>__satfractunsdiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiuha"><code>__satfractunsdiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiuhq"><code>__satfractunsdiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiuqq"><code>__satfractunsdiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiusa"><code>__satfractunsdiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiusq"><code>__satfractunsdiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsdiuta"><code>__satfractunsdiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshida"><code>__satfractunshida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshidq"><code>__satfractunshidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiha"><code>__satfractunshiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshihq"><code>__satfractunshihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiqq"><code>__satfractunshiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshisa"><code>__satfractunshisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshisq"><code>__satfractunshisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshita"><code>__satfractunshita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiuda"><code>__satfractunshiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiudq"><code>__satfractunshiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiuha"><code>__satfractunshiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiuhq"><code>__satfractunshiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiuqq"><code>__satfractunshiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiusa"><code>__satfractunshiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiusq"><code>__satfractunshiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunshiuta"><code>__satfractunshiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqida"><code>__satfractunsqida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqidq"><code>__satfractunsqidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiha"><code>__satfractunsqiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqihq"><code>__satfractunsqihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiqq"><code>__satfractunsqiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqisa"><code>__satfractunsqisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqisq"><code>__satfractunsqisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqita"><code>__satfractunsqita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiuda"><code>__satfractunsqiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiudq"><code>__satfractunsqiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiuha"><code>__satfractunsqiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiuhq"><code>__satfractunsqiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiuqq"><code>__satfractunsqiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiusa"><code>__satfractunsqiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiusq"><code>__satfractunsqiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunsqiuta"><code>__satfractunsqiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssida"><code>__satfractunssida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssidq"><code>__satfractunssidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiha"><code>__satfractunssiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssihq"><code>__satfractunssihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiqq"><code>__satfractunssiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssisa"><code>__satfractunssisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssisq"><code>__satfractunssisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssita"><code>__satfractunssita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiuda"><code>__satfractunssiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiudq"><code>__satfractunssiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiuha"><code>__satfractunssiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiuhq"><code>__satfractunssiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiuqq"><code>__satfractunssiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiusa"><code>__satfractunssiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiusq"><code>__satfractunssiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunssiuta"><code>__satfractunssiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstida"><code>__satfractunstida</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstidq"><code>__satfractunstidq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiha"><code>__satfractunstiha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstihq"><code>__satfractunstihq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiqq"><code>__satfractunstiqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstisa"><code>__satfractunstisa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstisq"><code>__satfractunstisq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstita"><code>__satfractunstita</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiuda"><code>__satfractunstiuda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiudq"><code>__satfractunstiudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiuha"><code>__satfractunstiuha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiuhq"><code>__satfractunstiuhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiuqq"><code>__satfractunstiuqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiusa"><code>__satfractunstiusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiusq"><code>__satfractunstiusq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractunstiuta"><code>__satfractunstiuta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqda"><code>__satfractuqqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqdq"><code>__satfractuqqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqha"><code>__satfractuqqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqhq"><code>__satfractuqqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqqq"><code>__satfractuqqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqsa"><code>__satfractuqqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqsq"><code>__satfractuqqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqta"><code>__satfractuqqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqquda"><code>__satfractuqquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqudq2"><code>__satfractuqqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqquha"><code>__satfractuqquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqquhq2"><code>__satfractuqquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqusa"><code>__satfractuqqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqqusq2"><code>__satfractuqqusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractuqquta"><code>__satfractuqquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusada"><code>__satfractusada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusadq"><code>__satfractusadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusaha"><code>__satfractusaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusahq"><code>__satfractusahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusaqq"><code>__satfractusaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusasa"><code>__satfractusasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusasq"><code>__satfractusasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusata"><code>__satfractusata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusauda2"><code>__satfractusauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusaudq"><code>__satfractusaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusauha2"><code>__satfractusauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusauhq"><code>__satfractusauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusauqq"><code>__satfractusauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusausq"><code>__satfractusausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusauta2"><code>__satfractusauta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqda"><code>__satfractusqda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqdq"><code>__satfractusqdq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqha"><code>__satfractusqha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqhq"><code>__satfractusqhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqqq"><code>__satfractusqqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqsa"><code>__satfractusqsa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqsq"><code>__satfractusqsq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqta"><code>__satfractusqta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusquda"><code>__satfractusquda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqudq2"><code>__satfractusqudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusquha"><code>__satfractusquha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusquhq2"><code>__satfractusquhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusquqq2"><code>__satfractusquqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusqusa"><code>__satfractusqusa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractusquta"><code>__satfractusquta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutada"><code>__satfractutada</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutadq"><code>__satfractutadq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutaha"><code>__satfractutaha</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutahq"><code>__satfractutahq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutaqq"><code>__satfractutaqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutasa"><code>__satfractutasa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutasq"><code>__satfractutasq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutata"><code>__satfractutata</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutauda2"><code>__satfractutauda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutaudq"><code>__satfractutaudq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutauha2"><code>__satfractutauha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutauhq"><code>__satfractutauhq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutauqq"><code>__satfractutauqq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutausa2"><code>__satfractutausa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsatfractutausq"><code>__satfractutausq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-routines.html#index-_005f_005fsplitstack_005ffind"><code>__splitstack_find</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-routines.html#Miscellaneous-routines">Miscellaneous routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddda3"><code>__ssaddda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssadddq3"><code>__ssadddq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddha3"><code>__ssaddha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddhq3"><code>__ssaddhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddqq3"><code>__ssaddqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddsa3"><code>__ssaddsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddsq3"><code>__ssaddsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssaddta3"><code>__ssaddta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlda3"><code>__ssashlda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashldq3"><code>__ssashldq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlha3"><code>__ssashlha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlhq3"><code>__ssashlhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlsa3"><code>__ssashlsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlsq3"><code>__ssashlsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssashlta3"><code>__ssashlta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivda3"><code>__ssdivda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivdq3"><code>__ssdivdq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivha3"><code>__ssdivha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivhq3"><code>__ssdivhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivqq3"><code>__ssdivqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivsa3"><code>__ssdivsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivsq3"><code>__ssdivsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssdivta3"><code>__ssdivta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulda3"><code>__ssmulda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmuldq3"><code>__ssmuldq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulha3"><code>__ssmulha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulhq3"><code>__ssmulhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulqq3"><code>__ssmulqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulsa3"><code>__ssmulsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulsq3"><code>__ssmulsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssmulta3"><code>__ssmulta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegda2"><code>__ssnegda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegdq2"><code>__ssnegdq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegha2"><code>__ssnegha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssneghq2"><code>__ssneghq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegqq2"><code>__ssnegqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegsa2"><code>__ssnegsa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegsq2"><code>__ssnegsq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fssnegta2"><code>__ssnegta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubda3"><code>__sssubda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubdq3"><code>__sssubdq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubha3"><code>__sssubha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubhq3"><code>__sssubhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubqq3"><code>__sssubqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubsa3"><code>__sssubsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubsq3"><code>__sssubsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsssubta3"><code>__sssubta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubda3"><code>__subda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fsubdf3"><code>__subdf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubdq3"><code>__subdq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubha3"><code>__subha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubhq3"><code>__subhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubqq3"><code>__subqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubsa3"><code>__subsa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fsubsf3"><code>__subsf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubsq3"><code>__subsq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubta3"><code>__subta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fsubtf3"><code>__subtf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubuda3"><code>__subuda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubudq3"><code>__subudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubuha3"><code>__subuha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubuhq3"><code>__subuhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubuqq3"><code>__subuqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubusa3"><code>__subusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubusq3"><code>__subusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fsubuta3"><code>__subuta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fsubvdi3"><code>__subvdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fsubvsi3"><code>__subvsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005fsubxf3"><code>__subxf3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ftruncdfsf2"><code>__truncdfsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ftrunctfdf2"><code>__trunctfdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ftrunctfsf2"><code>__trunctfsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ftruncxfdf2"><code>__truncxfdf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005ftruncxfsf2"><code>__truncxfsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fucmpdi2"><code>__ucmpdi2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fucmpti2"><code>__ucmpti2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fudivdi3"><code>__udivdi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fudivmoddi4"><code>__udivmoddi4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fudivmodti4"><code>__udivmodti4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fudivsi3"><code>__udivsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fudivti3"><code>__udivti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivuda3"><code>__udivuda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivudq3"><code>__udivudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivuha3"><code>__udivuha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivuhq3"><code>__udivuhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivuqq3"><code>__udivuqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivusa3"><code>__udivusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivusq3"><code>__udivusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fudivuta3"><code>__udivuta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fumoddi3"><code>__umoddi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fumodsi3"><code>__umodsi3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Integer-library-routines.html#index-_005f_005fumodti3"><code>__umodti3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Integer-library-routines.html#Integer-library-routines">Integer library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005funorddf2"><code>__unorddf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005funordsf2"><code>__unordsf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-_005f_005funordtf2"><code>__unordtf2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusadduda3"><code>__usadduda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusaddudq3"><code>__usaddudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusadduha3"><code>__usadduha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusadduhq3"><code>__usadduhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusadduqq3"><code>__usadduqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusaddusa3"><code>__usaddusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusaddusq3"><code>__usaddusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusadduta3"><code>__usadduta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashluda3"><code>__usashluda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashludq3"><code>__usashludq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashluha3"><code>__usashluha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashluhq3"><code>__usashluhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashluqq3"><code>__usashluqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashlusa3"><code>__usashlusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashlusq3"><code>__usashlusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusashluta3"><code>__usashluta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivuda3"><code>__usdivuda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivudq3"><code>__usdivudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivuha3"><code>__usdivuha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivuhq3"><code>__usdivuhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivuqq3"><code>__usdivuqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivusa3"><code>__usdivusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivusq3"><code>__usdivusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusdivuta3"><code>__usdivuta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuluda3"><code>__usmuluda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuludq3"><code>__usmuludq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuluha3"><code>__usmuluha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuluhq3"><code>__usmuluhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuluqq3"><code>__usmuluqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmulusa3"><code>__usmulusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmulusq3"><code>__usmulusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusmuluta3"><code>__usmuluta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusneguda2"><code>__usneguda2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusnegudq2"><code>__usnegudq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusneguha2"><code>__usneguha2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusneguhq2"><code>__usneguhq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusneguqq2"><code>__usneguqq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusnegusa2"><code>__usnegusa2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusnegusq2"><code>__usnegusq2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fusneguta2"><code>__usneguta2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubuda3"><code>__ussubuda3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubudq3"><code>__ussubudq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubuha3"><code>__ussubuha3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubuhq3"><code>__ussubuhq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubuqq3"><code>__ussubuqq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubusa3"><code>__ussubusa3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubusq3"><code>__ussubusq3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-_005f_005fussubuta3"><code>__ussubuta3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Portability.html#index-abort"><code>abort</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Portability.html#Portability">Portability</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-abs"><code>abs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-abs-and-attributes"><code>abs</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-absence_005fset"><code>absence_set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-absm2-instruction-pattern"><code>abs<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-absolute-value">absolute value</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ABSU_005fEXPR"><code>ABSU_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ABS_005fEXPR"><code>ABS_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-access-to-operands">access to operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-access-to-special-operands">access to special operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-accessors">accessors</a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-ACCUMULATE_005fOUTGOING_005fARGS"><code>ACCUMULATE_OUTGOING_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-ACCUMULATE_005fOUTGOING_005fARGS-and-stack-frames"><code>ACCUMULATE_OUTGOING_ARGS</code> and stack frames</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-ACCUM_005fTYPE_005fSIZE"><code>ACCUM_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-acosm2-instruction-pattern"><code>acos<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-ADA_005fLONG_005fTYPE_005fSIZE"><code>ADA_LONG_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Adding-a-new-GIMPLE-statement-code.html#index-Adding-a-new-GIMPLE-statement-code">Adding a new GIMPLE statement code</a>:</td><td>&nbsp;</td><td valign="top"><a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code">Adding a new GIMPLE statement code</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ADDITIONAL_005fREGISTER_005fNAMES"><code>ADDITIONAL_REGISTER_NAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-addm3-instruction-pattern"><code>add<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-addmodecc-instruction-pattern"><code>add<var>mode</var>cc</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-addptrm3-instruction-pattern"><code>addptr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-address-constraints">address constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-addressing-modes">addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-address_005foperand"><code>address_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-address_005foperand-1"><code>address_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-addr_005fdiff_005fvec"><code>addr_diff_vec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-addr_005fdiff_005fvec_002c-length-of"><code>addr_diff_vec</code>, length of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-ADDR_005fEXPR"><code>ADDR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-addr_005fvec"><code>addr_vec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-addr_005fvec_002c-length-of"><code>addr_vec</code>, length of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-addvm4-instruction-pattern"><code>addv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-ADJUST_005fFIELD_005fALIGN"><code>ADJUST_FIELD_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-ADJUST_005fINSN_005fLENGTH"><code>ADJUST_INSN_LENGTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-ADJUST_005fREG_005fALLOC_005fORDER"><code>ADJUST_REG_ALLOC_ORDER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-aggregates-as-return-values">aggregates as return values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alias-analysis.html#index-alias">alias</a>:</td><td>&nbsp;</td><td valign="top"><a href="Alias-analysis.html#Alias-analysis">Alias analysis</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-allocate_005fstack-instruction-pattern"><code>allocate_stack</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-ALL_005fREGS"><code>ALL_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-alternate-entry-points">alternate entry points</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Analyzer.html#index-analyzer">analyzer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer.html#Static-Analyzer">Static Analyzer</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debugging-the-Analyzer.html#index-analyzer_002c-debugging">analyzer, debugging</a>:</td><td>&nbsp;</td><td valign="top"><a href="Debugging-the-Analyzer.html#Debugging-the-Analyzer">Debugging the Analyzer</a></td></tr>
+<tr><td></td><td valign="top"><a href="Analyzer-Internals.html#index-analyzer_002c-internals">analyzer, internals</a>:</td><td>&nbsp;</td><td valign="top"><a href="Analyzer-Internals.html#Analyzer-Internals">Analyzer Internals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-anchored-addresses">anchored addresses</a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-and"><code>and</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-and-and-attributes"><code>and</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-and_002c-canonicalization-of"><code>and</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-andm3-instruction-pattern"><code>and<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ANNOTATE_005fEXPR"><code>ANNOTATE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Annotations.html#index-annotations">annotations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Annotations.html#Annotations">Annotations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-APPLY_005fRESULT_005fSIZE"><code>APPLY_RESULT_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-ARGS_005fGROW_005fDOWNWARD"><code>ARGS_GROW_DOWNWARD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-argument-passing">argument passing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-arguments-in-registers">arguments in registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-arguments-on-stack">arguments on stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-ARG_005fPOINTER_005fCFA_005fOFFSET"><code>ARG_POINTER_CFA_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-ARG_005fPOINTER_005fREGNUM"><code>ARG_POINTER_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-ARG_005fPOINTER_005fREGNUM-and-virtual-registers"><code>ARG_POINTER_REGNUM</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-arg_005fpointer_005frtx"><code>arg_pointer_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-arithmetic-library">arithmetic library</a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-arithmetic-shift">arithmetic shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-arithmetic-shift-with-signed-saturation">arithmetic shift with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-arithmetic-shift-with-unsigned-saturation">arithmetic shift with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-arithmetic_002c-in-RTL">arithmetic, in RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-ARITHMETIC_005fTYPE_005fP"><code>ARITHMETIC_TYPE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-array">array</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-ARRAY_005fRANGE_005fREF"><code>ARRAY_RANGE_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-ARRAY_005fREF"><code>ARRAY_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-ARRAY_005fTYPE"><code>ARRAY_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ashift"><code>ashift</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-ashift-and-attributes"><code>ashift</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ashiftrt"><code>ashiftrt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-ashiftrt-and-attributes"><code>ashiftrt</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ashlm3-instruction-pattern"><code>ashl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ashrm3-instruction-pattern"><code>ashr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-asinm2-instruction-pattern"><code>asin<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-ASM_005fAPP_005fOFF"><code>ASM_APP_OFF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-ASM_005fAPP_005fON"><code>ASM_APP_ON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-ASM_005fCOMMENT_005fSTART"><code>ASM_COMMENT_START</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fCOLD_005fFUNCTION_005fNAME"><code>ASM_DECLARE_COLD_FUNCTION_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fCOLD_005fFUNCTION_005fSIZE"><code>ASM_DECLARE_COLD_FUNCTION_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fFUNCTION_005fNAME"><code>ASM_DECLARE_FUNCTION_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fFUNCTION_005fSIZE"><code>ASM_DECLARE_FUNCTION_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fOBJECT_005fNAME"><code>ASM_DECLARE_OBJECT_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fDECLARE_005fREGISTER_005fGLOBAL"><code>ASM_DECLARE_REGISTER_GLOBAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-ASM_005fFINAL_005fSPEC"><code>ASM_FINAL_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fFINISH_005fDECLARE_005fOBJECT"><code>ASM_FINISH_DECLARE_OBJECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fFORMAT_005fPRIVATE_005fNAME"><code>ASM_FORMAT_PRIVATE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-asm_005ffprintf"><code>asm_fprintf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ASM_005fFPRINTF_005fEXTENSIONS"><code>ASM_FPRINTF_EXTENSIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fGENERATE_005fINTERNAL_005fLABEL"><code>ASM_GENERATE_INTERNAL_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-asm_005finput"><code>asm_input</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-asm_005finput-and-_002fv"><code>asm_input</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-ASM_005fMAYBE_005fOUTPUT_005fENCODED_005fADDR_005fRTX"><code>ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-asm_005fnoperands"><code>asm_noperands</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-ASM_005fNO_005fSKIP_005fIN_005fTEXT"><code>ASM_NO_SKIP_IN_TEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-asm_005foperands-and-_002fv"><code>asm_operands</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-asm_005foperands_002c-RTL-sharing"><code>asm_operands</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assembler.html#index-asm_005foperands_002c-usage"><code>asm_operands</code>, usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assembler.html#Assembler">Assembler</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-ASM_005fOUTPUT_005fADDR_005fDIFF_005fELT"><code>ASM_OUTPUT_ADDR_DIFF_ELT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-ASM_005fOUTPUT_005fADDR_005fVEC_005fELT"><code>ASM_OUTPUT_ADDR_VEC_ELT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-ASM_005fOUTPUT_005fALIGN"><code>ASM_OUTPUT_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fALIGNED_005fBSS"><code>ASM_OUTPUT_ALIGNED_BSS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fALIGNED_005fCOMMON"><code>ASM_OUTPUT_ALIGNED_COMMON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fALIGNED_005fDECL_005fCOMMON"><code>ASM_OUTPUT_ALIGNED_DECL_COMMON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fALIGNED_005fDECL_005fLOCAL"><code>ASM_OUTPUT_ALIGNED_DECL_LOCAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fALIGNED_005fLOCAL"><code>ASM_OUTPUT_ALIGNED_LOCAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-ASM_005fOUTPUT_005fALIGN_005fWITH_005fNOP"><code>ASM_OUTPUT_ALIGN_WITH_NOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-ASM_005fOUTPUT_005fASCII"><code>ASM_OUTPUT_ASCII</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-ASM_005fOUTPUT_005fCASE_005fEND"><code>ASM_OUTPUT_CASE_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-ASM_005fOUTPUT_005fCASE_005fLABEL"><code>ASM_OUTPUT_CASE_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fCOMMON"><code>ASM_OUTPUT_COMMON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fDEBUG_005fLABEL"><code>ASM_OUTPUT_DEBUG_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fDEF"><code>ASM_OUTPUT_DEF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fDEF_005fFROM_005fDECLS"><code>ASM_OUTPUT_DEF_FROM_DECLS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fDATAREL"><code>ASM_OUTPUT_DWARF_DATAREL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fDELTA"><code>ASM_OUTPUT_DWARF_DELTA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fOFFSET"><code>ASM_OUTPUT_DWARF_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fPCREL"><code>ASM_OUTPUT_DWARF_PCREL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fTABLE_005fREF"><code>ASM_OUTPUT_DWARF_TABLE_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-ASM_005fOUTPUT_005fDWARF_005fVMS_005fDELTA"><code>ASM_OUTPUT_DWARF_VMS_DELTA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fEXTERNAL"><code>ASM_OUTPUT_EXTERNAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-ASM_005fOUTPUT_005fFDESC"><code>ASM_OUTPUT_FDESC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fFUNCTION_005fLABEL"><code>ASM_OUTPUT_FUNCTION_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fINTERNAL_005fLABEL"><code>ASM_OUTPUT_INTERNAL_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fLABEL"><code>ASM_OUTPUT_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fLABELREF"><code>ASM_OUTPUT_LABELREF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fLABEL_005fREF"><code>ASM_OUTPUT_LABEL_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Uninitialized-Data.html#index-ASM_005fOUTPUT_005fLOCAL"><code>ASM_OUTPUT_LOCAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Uninitialized-Data.html#Uninitialized-Data">Uninitialized Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-ASM_005fOUTPUT_005fMAX_005fSKIP_005fALIGN"><code>ASM_OUTPUT_MAX_SKIP_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fMEASURED_005fSIZE"><code>ASM_OUTPUT_MEASURED_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ASM_005fOUTPUT_005fOPCODE"><code>ASM_OUTPUT_OPCODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-ASM_005fOUTPUT_005fPOOL_005fEPILOGUE"><code>ASM_OUTPUT_POOL_EPILOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-ASM_005fOUTPUT_005fPOOL_005fPROLOGUE"><code>ASM_OUTPUT_POOL_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ASM_005fOUTPUT_005fREG_005fPOP"><code>ASM_OUTPUT_REG_POP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ASM_005fOUTPUT_005fREG_005fPUSH"><code>ASM_OUTPUT_REG_PUSH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fSIZE_005fDIRECTIVE"><code>ASM_OUTPUT_SIZE_DIRECTIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-ASM_005fOUTPUT_005fSKIP"><code>ASM_OUTPUT_SKIP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-ASM_005fOUTPUT_005fSOURCE_005fFILENAME"><code>ASM_OUTPUT_SOURCE_FILENAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-ASM_005fOUTPUT_005fSPECIAL_005fPOOL_005fENTRY"><code>ASM_OUTPUT_SPECIAL_POOL_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fSYMBOL_005fREF"><code>ASM_OUTPUT_SYMBOL_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fTYPE_005fDIRECTIVE"><code>ASM_OUTPUT_TYPE_DIRECTIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fWEAKREF"><code>ASM_OUTPUT_WEAKREF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fOUTPUT_005fWEAK_005fALIAS"><code>ASM_OUTPUT_WEAK_ALIAS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-ASM_005fPREFERRED_005fEH_005fDATA_005fFORMAT"><code>ASM_PREFERRED_EH_DATA_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-ASM_005fSPEC"><code>ASM_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fWEAKEN_005fDECL"><code>ASM_WEAKEN_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-ASM_005fWEAKEN_005fLABEL"><code>ASM_WEAKEN_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-assembler-format">assembler format</a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Assembler.html#index-assembler-instructions-in-RTL">assembler instructions in RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="Assembler.html#Assembler">Assembler</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-ASSEMBLER_005fDIALECT"><code>ASSEMBLER_DIALECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-assemble_005fname"><code>assemble_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-assemble_005fname_005fraw"><code>assemble_name_raw</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-assigning-attribute-values-to-insns">assigning attribute values to insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-ASSUME_005fEXTENDED_005fUNWIND_005fCONTEXT"><code>ASSUME_EXTENDED_UNWIND_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-asterisk-in-template">asterisk in template</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-AS_005fNEEDS_005fDASH_005fFOR_005fPIPED_005fINPUT"><code>AS_NEEDS_DASH_FOR_PIPED_INPUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atan2m3-instruction-pattern"><code>atan2<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atanm2-instruction-pattern"><code>atan<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-atomic"><code>atomic</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005faddmode-instruction-pattern"><code>atomic_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fadd_005ffetchmode-instruction-pattern"><code>atomic_add_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fadd_005ffetch_005fcmp_005f0mode-instruction-pattern"><code>atomic_add_fetch_cmp_0<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fandmode-instruction-pattern"><code>atomic_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fand_005ffetchmode-instruction-pattern"><code>atomic_and_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fand_005ffetch_005fcmp_005f0mode-instruction-pattern"><code>atomic_and_fetch_cmp_0<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fbit_005ftest_005fand_005fcomplementmode-instruction-pattern"><code>atomic_bit_test_and_complement<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fbit_005ftest_005fand_005fresetmode-instruction-pattern"><code>atomic_bit_test_and_reset<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fbit_005ftest_005fand_005fsetmode-instruction-pattern"><code>atomic_bit_test_and_set<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fcompare_005fand_005fswapmode-instruction-pattern"><code>atomic_compare_and_swap<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fexchangemode-instruction-pattern"><code>atomic_exchange<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005faddmode-instruction-pattern"><code>atomic_fetch_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005fandmode-instruction-pattern"><code>atomic_fetch_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005fnandmode-instruction-pattern"><code>atomic_fetch_nand<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005formode-instruction-pattern"><code>atomic_fetch_or<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005fsubmode-instruction-pattern"><code>atomic_fetch_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ffetch_005fxormode-instruction-pattern"><code>atomic_fetch_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005floadmode-instruction-pattern"><code>atomic_load<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fnandmode-instruction-pattern"><code>atomic_nand<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fnand_005ffetchmode-instruction-pattern"><code>atomic_nand_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005formode-instruction-pattern"><code>atomic_or<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005for_005ffetchmode-instruction-pattern"><code>atomic_or_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005for_005ffetch_005fcmp_005f0mode-instruction-pattern"><code>atomic_or_fetch_cmp_0<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fstoremode-instruction-pattern"><code>atomic_store<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fsubmode-instruction-pattern"><code>atomic_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fsub_005ffetchmode-instruction-pattern"><code>atomic_sub_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fsub_005ffetch_005fcmp_005f0mode-instruction-pattern"><code>atomic_sub_fetch_cmp_0<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005ftest_005fand_005fset-instruction-pattern"><code>atomic_test_and_set</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fxormode-instruction-pattern"><code>atomic_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fxor_005ffetchmode-instruction-pattern"><code>atomic_xor_fetch<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-atomic_005fxor_005ffetch_005fcmp_005f0mode-instruction-pattern"><code>atomic_xor_fetch_cmp_0<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-attr"><code>attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-attr-1"><code>attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-attribute-expressions">attribute expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attr-Example.html#index-attribute-specifications">attribute specifications</a>:</td><td>&nbsp;</td><td valign="top"><a href="Attr-Example.html#Attr-Example">Attr Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attr-Example.html#index-attribute-specifications-example">attribute specifications example</a>:</td><td>&nbsp;</td><td valign="top"><a href="Attr-Example.html#Attr-Example">Attr Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attributes.html#index-attributes">attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Attributes.html#Attributes">Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Attributes.html#index-attributes_002c-defining">attributes, defining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Attributes.html#Defining-Attributes">Defining Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-attributes_002c-target_002dspecific">attributes, target-specific</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-ATTRIBUTE_005fALIGNED_005fVALUE"><code>ATTRIBUTE_ALIGNED_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-attr_005fflag"><code>attr_flag</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Portability.html#index-autoincrement-addressing_002c-availability">autoincrement addressing, availability</a>:</td><td>&nbsp;</td><td valign="top"><a href="Portability.html#Portability">Portability</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-autoincrement_002fdecrement-addressing">autoincrement/decrement addressing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-automata_005foption"><code>automata_option</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-automaton-based-pipeline-description">automaton based pipeline description</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-automaton-based-pipeline-description-1">automaton based pipeline description</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-automaton-based-scheduler">automaton based scheduler</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-avgm3_005fceil-instruction-pattern"><code>avg<var>m</var>3_ceil</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-avgm3_005ffloor-instruction-pattern"><code>avg<var>m</var>3_floor</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-AVOID_005fCCMODE_005fCOPIES"><code>AVOID_CCMODE_COPIES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-backslash">backslash</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-barrier"><code>barrier</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-barrier-and-_002ff"><code>barrier</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-barrier-and-_002fv"><code>barrier</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-BASE_005fREG_005fCLASS"><code>BASE_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-basic-block">basic block</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-basic-blocks_002c-RTL-SSA">basic blocks, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Statements.html#index-Basic-Statements">Basic Statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Statements.html#Basic-Statements">Basic Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Control-Flow.html#index-basic_002dblock_002eh"><code>basic-block.h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Control-Flow.html#Control-Flow">Control Flow</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-basic_005fblock"><code>basic_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-basic_005fblock-1"><code>basic_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-BASIC_005fBLOCK"><code>BASIC_BLOCK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-BB_005fHEAD_002c-BB_005fEND"><code>BB_HEAD, BB_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-bb_005fseq"><code>bb_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BIGGEST_005fALIGNMENT"><code>BIGGEST_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BIGGEST_005fFIELD_005fALIGNMENT"><code>BIGGEST_FIELD_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-BImode"><code>BImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-BIND_005fEXPR"><code>BIND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-BINFO_005fTYPE"><code>BINFO_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bit_002dFields.html#index-bit_002dfields">bit-fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BITFIELD_005fNBYTES_005fLIMITED"><code>BITFIELD_NBYTES_LIMITED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BITS_005fBIG_005fENDIAN"><code>BITS_BIG_ENDIAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bit_002dFields.html#index-BITS_005fBIG_005fENDIAN_002c-effect-on-sign_005fextract"><code>BITS_BIG_ENDIAN</code>, effect on <code>sign_extract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-BITS_005fPER_005fUNIT"><code>BITS_PER_UNIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BITS_005fPER_005fWORD"><code>BITS_PER_WORD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-bitwise-complement">bitwise complement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-bitwise-exclusive_002dor">bitwise exclusive-or</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-bitwise-inclusive_002dor">bitwise inclusive-or</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-bitwise-logical_002dand">bitwise logical-and</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-BIT_005fAND_005fEXPR"><code>BIT_AND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-BIT_005fIOR_005fEXPR"><code>BIT_IOR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-BIT_005fNOT_005fEXPR"><code>BIT_NOT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-BIT_005fXOR_005fEXPR"><code>BIT_XOR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-BLKmode"><code>BLKmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calls.html#index-BLKmode_002c-and-function-return-values"><code>BLKmode</code>, and function return values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calls.html#Calls">Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-blockage-instruction-pattern"><code>blockage</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Blocks.html#index-Blocks">Blocks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Blocks.html#Blocks">Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-BLOCK_005fFOR_005fINSN_002c-gimple_005fbb"><code>BLOCK_FOR_INSN, gimple_bb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-BLOCK_005fREG_005fPADDING"><code>BLOCK_REG_PADDING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-BND32mode"><code>BND32mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-BND64mode"><code>BND64mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-bool"><code>bool</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-BOOLEAN_005fTYPE"><code>BOOLEAN_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-BOOL_005fTYPE_005fSIZE"><code>BOOL_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-branch-prediction">branch prediction</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-BRANCH_005fCOST"><code>BRANCH_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-break_005fout_005fmemory_005frefs"><code>break_out_memory_refs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-BREAK_005fSTMT"><code>BREAK_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-BSS_005fSECTION_005fASM_005fOP"><code>BSS_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-bswap"><code>bswap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-bswapm2-instruction-pattern"><code>bswap<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="BTF-Debug.html#index-BTF_005fDEBUGGING_005fINFO"><code>BTF_DEBUGGING_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="BTF-Debug.html#BTF-Debug">BTF Debug</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-btruncm2-instruction-pattern"><code>btrunc<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build0"><code>build0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build1"><code>build1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build2"><code>build2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build3"><code>build3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build4"><code>build4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build5"><code>build5</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-build6"><code>build6</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-builtin_005flongjmp-instruction-pattern"><code>builtin_longjmp</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-builtin_005fsetjmp_005freceiver-instruction-pattern"><code>builtin_setjmp_receiver</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-builtin_005fsetjmp_005fsetup-instruction-pattern"><code>builtin_setjmp_setup</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-BYTES_005fBIG_005fENDIAN"><code>BYTES_BIG_ENDIAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-BYTES_005fBIG_005fENDIAN_002c-effect-on-subreg"><code>BYTES_BIG_ENDIAN</code>, effect on <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-byte_005fmode"><code>byte_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-C-statements-for-assembler-output">C statements for assembler output</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-cache"><code>cache</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cadd270m3-instruction-pattern"><code>cadd270<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cadd90m3-instruction-pattern"><code>cadd90<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call"><code>call</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-call-1"><code>call</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-call-instruction-pattern"><code>call</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calls.html#index-call-usage"><code>call</code> usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calls.html#Calls">Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_002c-in-call_005finsn"><code>call</code>, in <code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_002c-in-mem"><code>call</code>, in <code>mem</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dclobbered-register">call-clobbered register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dclobbered-register-1">call-clobbered register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dclobbered-register-2">call-clobbered register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dclobbered-register-3">call-clobbered register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dsaved-register">call-saved register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dsaved-register-1">call-saved register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dsaved-register-2">call-saved register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dsaved-register-3">call-saved register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dused-register">call-used register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dused-register-1">call-used register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dused-register-2">call-used register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_002dused-register-3">call-used register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-callback"><code>callback</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-and-Calling.html#index-calling-conventions">calling conventions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-and-Calling.html#Stack-and-Calling">Stack and Calling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calls.html#index-calling-functions-in-RTL">calling functions in RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calls.html#Calls">Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CALL_005fEXPR"><code>CALL_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-call_005finsn"><code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fc"><code>call_insn</code> and &lsquo;<samp>/c</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002ff"><code>call_insn</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fi"><code>call_insn</code> and &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fj"><code>call_insn</code> and &lsquo;<samp>/j</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fs"><code>call_insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fs-1"><code>call_insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fu"><code>call_insn</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fu-1"><code>call_insn</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fu-or-_002fi"><code>call_insn</code> and &lsquo;<samp>/u</samp>&rsquo; or &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-call_005finsn-and-_002fv"><code>call_insn</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-CALL_005fINSN_005fFUNCTION_005fUSAGE"><code>CALL_INSN_FUNCTION_USAGE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-call_005fpop-instruction-pattern"><code>call_pop</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-CALL_005fPOPS_005fARGS"><code>CALL_POPS_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-CALL_005fREALLY_005fUSED_005fREGISTERS"><code>CALL_REALLY_USED_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-CALL_005fUSED_005fREGISTERS"><code>CALL_USED_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-call_005fused_005fregs"><code>call_used_regs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-call_005fvalue-instruction-pattern"><code>call_value</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-call_005fvalue_005fpop-instruction-pattern"><code>call_value_pop</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Configure-Terms.html#index-canadian">canadian</a>:</td><td>&nbsp;</td><td valign="top"><a href="Configure-Terms.html#Configure-Terms">Configure Terms</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-canonicalization-of-instructions">canonicalization of instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-canonicalize_005ffuncptr_005ffor_005fcompare-instruction-pattern"><code>canonicalize_funcptr_for_compare</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-can_005fcreate_005fpseudo_005fp"><code>can_create_pseudo_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-can_005ffallthru"><code>can_fallthru</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-caret">caret</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-caret-1">caret</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-casesi-instruction-pattern"><code>casesi</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-CASE_005fVECTOR_005fMODE"><code>CASE_VECTOR_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-CASE_005fVECTOR_005fPC_005fRELATIVE"><code>CASE_VECTOR_PC_RELATIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-CASE_005fVECTOR_005fSHORTEN_005fMODE"><code>CASE_VECTOR_SHORTEN_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cbranchmode4-instruction-pattern"><code>cbranch<var>mode</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-CC1PLUS_005fSPEC"><code>CC1PLUS_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-CC1_005fSPEC"><code>CC1_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CCmode"><code>CCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-CCmode-1"><code>CCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CDImode"><code>CDImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ceilm2-instruction-pattern"><code>ceil<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CEIL_005fDIV_005fEXPR"><code>CEIL_DIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CEIL_005fMOD_005fEXPR"><code>CEIL_MOD_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-CFA_005fFRAME_005fBASE_005fOFFSET"><code>CFA_FRAME_BASE_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-CFG-verification">CFG verification</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Control-Flow.html#index-CFG_002c-Control-Flow-Graph">CFG, Control Flow Graph</a>:</td><td>&nbsp;</td><td valign="top"><a href="Control-Flow.html#Control-Flow">Control Flow</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-cfghooks_002eh"><code>cfghooks.h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-cgraph_005ffinalize_005ffunction"><code>cgraph_finalize_function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-chain_005fcircular"><code>chain_circular</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-chain_005fnext"><code>chain_next</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-chain_005fprev"><code>chain_prev</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-change_005faddress"><code>change_address</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-CHAR_005fTYPE_005fSIZE"><code>CHAR_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-check_005fraw_005fptrsm-instruction-pattern"><code>check_raw_ptrs<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-check_005fstack-instruction-pattern"><code>check_stack</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-check_005fwar_005fptrsm-instruction-pattern"><code>check_war_ptrs<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CHImode"><code>CHImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-class-definitions_002c-register">class definitions, register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Class-Preferences.html#index-class-preference-constraints">class preference constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Class-Preferences.html#Class-Preferences">Class Preferences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-class_002c-scope">class, scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-classes-of-RTX-codes">classes of RTX codes</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-CLASSTYPE_005fDECLARED_005fCLASS"><code>CLASSTYPE_DECLARED_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-CLASSTYPE_005fHAS_005fMUTABLE"><code>CLASSTYPE_HAS_MUTABLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-CLASSTYPE_005fNON_005fPOD_005fP"><code>CLASSTYPE_NON_POD_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-CLASS_005fMAX_005fNREGS"><code>CLASS_MAX_NREGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CLASS_005fTYPE_005fP"><code>CLASS_TYPE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Cleanups.html#index-Cleanups">Cleanups</a>:</td><td>&nbsp;</td><td valign="top"><a href="Cleanups.html#Cleanups">Cleanups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-CLEANUP_005fDECL"><code>CLEANUP_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-CLEANUP_005fEXPR"><code>CLEANUP_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CLEANUP_005fPOINT_005fEXPR"><code>CLEANUP_POINT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-CLEANUP_005fSTMT"><code>CLEANUP_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-clear_005fcache-instruction-pattern"><code>clear_cache</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-CLEAR_005fINSN_005fCACHE"><code>CLEAR_INSN_CACHE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-CLEAR_005fRATIO"><code>CLEAR_RATIO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-clobber"><code>clobber</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-clrsb"><code>clrsb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-clrsbm2-instruction-pattern"><code>clrsb<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-clz"><code>clz</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-clzm2-instruction-pattern"><code>clz<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-CLZ_005fDEFINED_005fVALUE_005fAT_005fZERO"><code>CLZ_DEFINED_VALUE_AT_ZERO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmlam4-instruction-pattern"><code>cmla<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmla_005fconjm4-instruction-pattern"><code>cmla_conj<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmlsm4-instruction-pattern"><code>cmls<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmls_005fconjm4-instruction-pattern"><code>cmls_conj<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmpmemm-instruction-pattern"><code>cmpmem<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmpstrm-instruction-pattern"><code>cmpstr<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmpstrnm-instruction-pattern"><code>cmpstrn<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmulm4-instruction-pattern"><code>cmul<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cmul_005fconjm4-instruction-pattern"><code>cmul_conj<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-code-generation-RTL-sequences">code generation RTL sequences</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Code-Iterators.html#index-code-iterators-in-_002emd-files">code iterators in <samp>.md</samp> files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Code-Iterators.html#Code-Iterators">Code Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-codes_002c-RTL-expression">codes, RTL expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-code_005flabel"><code>code_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-CODE_005fLABEL"><code>CODE_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-code_005flabel-and-_002fi"><code>code_label</code> and &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-code_005flabel-and-_002fv"><code>code_label</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-CODE_005fLABEL_005fNUMBER"><code>CODE_LABEL_NUMBER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-COImode"><code>COImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-COLLECT2_005fHOST_005fINITIALIZATION"><code>COLLECT2_HOST_INITIALIZATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-COLLECT_005fEXPORT_005fLIST"><code>COLLECT_EXPORT_LIST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-COLLECT_005fSHARED_005fFINI_005fFUNC"><code>COLLECT_SHARED_FINI_FUNC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-COLLECT_005fSHARED_005fINIT_005fFUNC"><code>COLLECT_SHARED_INIT_FUNC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Options.html#index-command_002dline-options_002c-guidelines-for">command-line options, guidelines for</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Options.html#Guidelines-for-Options">Guidelines for Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-commit_005fedge_005finsertions"><code>commit_edge_insertions</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-compare"><code>compare</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-compare_002c-canonicalization-of"><code>compare</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-COMPARE_005fMAX_005fPIECES"><code>COMPARE_MAX_PIECES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-comparison_005foperator"><code>comparison_operator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Passes.html#index-compiler-passes-and-files">compiler passes and files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Passes.html#Passes">Passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-complement_002c-bitwise">complement, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-COMPLEX_005fCST"><code>COMPLEX_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COMPLEX_005fEXPR"><code>COMPLEX_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-complex_005fmode"><code>complex_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-COMPLEX_005fTYPE"><code>COMPLEX_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-COMPONENT_005fREF"><code>COMPONENT_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compound-Expressions.html#index-Compound-Expressions">Compound Expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compound-Expressions.html#Compound-Expressions">Compound Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Compound-Lvalues.html#index-Compound-Lvalues">Compound Lvalues</a>:</td><td>&nbsp;</td><td valign="top"><a href="Compound-Lvalues.html#Compound-Lvalues">Compound Lvalues</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COMPOUND_005fEXPR"><code>COMPOUND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COMPOUND_005fLITERAL_005fEXPR"><code>COMPOUND_LITERAL_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COMPOUND_005fLITERAL_005fEXPR_005fDECL"><code>COMPOUND_LITERAL_EXPR_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COMPOUND_005fLITERAL_005fEXPR_005fDECL_005fEXPR"><code>COMPOUND_LITERAL_EXPR_DECL_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-computed-jump">computed jump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-computing-the-length-of-an-insn">computing the length of an insn</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-concat"><code>concat</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-concatn"><code>concatn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-cond"><code>cond</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-cond-and-attributes"><code>cond</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Condition-Code.html#index-condition-code-status">condition code status</a>:</td><td>&nbsp;</td><td valign="top"><a href="Condition-Code.html#Condition-Code">Condition Code</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-condition-codes">condition codes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Execution.html#index-conditional-execution">conditional execution</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Expressions.html#index-Conditional-Expressions">Conditional Expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Expressions.html#Conditional-Expressions">Conditional Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-conditions_002c-in-patterns">conditions, in patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005faddmode-instruction-pattern"><code>cond_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fandmode-instruction-pattern"><code>cond_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fashlmode-instruction-pattern"><code>cond_ashl<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fashrmode-instruction-pattern"><code>cond_ashr<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fdivmode-instruction-pattern"><code>cond_div<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-cond_005fexec"><code>cond_exec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-COND_005fEXPR"><code>COND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffmamode-instruction-pattern"><code>cond_fma<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffmaxmode-instruction-pattern"><code>cond_fmax<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffminmode-instruction-pattern"><code>cond_fmin<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffmsmode-instruction-pattern"><code>cond_fms<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffnmamode-instruction-pattern"><code>cond_fnma<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005ffnmsmode-instruction-pattern"><code>cond_fnms<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fiormode-instruction-pattern"><code>cond_ior<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005flshrmode-instruction-pattern"><code>cond_lshr<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fmodmode-instruction-pattern"><code>cond_mod<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fmulmode-instruction-pattern"><code>cond_mul<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fsmaxmode-instruction-pattern"><code>cond_smax<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fsminmode-instruction-pattern"><code>cond_smin<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fsubmode-instruction-pattern"><code>cond_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fudivmode-instruction-pattern"><code>cond_udiv<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fumaxmode-instruction-pattern"><code>cond_umax<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fuminmode-instruction-pattern"><code>cond_umin<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fumodmode-instruction-pattern"><code>cond_umod<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cond_005fxormode-instruction-pattern"><code>cond_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-configuration-file">configuration file</a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-configuration-file-1">configuration file</a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Configure-Terms.html#index-configure-terms">configure terms</a>:</td><td>&nbsp;</td><td valign="top"><a href="Configure-Terms.html#Configure-Terms">Configure Terms</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CONJ_005fEXPR"><code>CONJ_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const"><code>const</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const0_005frtx"><code>const0_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST0_005fRTX"><code>CONST0_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const1_005frtx"><code>const1_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST1_005fRTX"><code>CONST1_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const2_005frtx"><code>const2_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST2_005fRTX"><code>CONST2_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Attributes.html#index-constant-attributes">constant attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Attributes.html#Constant-Attributes">Constant Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-constant-definitions">constant definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-constants-in-constraints">constants in constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-CONSTANT_005fADDRESS_005fP"><code>CONSTANT_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-CONSTANT_005fP"><code>CONSTANT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-CONSTANT_005fPOOL_005fADDRESS_005fP"><code>CONSTANT_POOL_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-CONSTANT_005fPOOL_005fBEFORE_005fFUNCTION"><code>CONSTANT_POOL_BEFORE_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-constm1_005frtx"><code>constm1_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-constraint-modifier-characters">constraint modifier characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-constraint_002c-matching">constraint, matching</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constraints.html#index-constraints">constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constraints.html#Constraints">Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-constraints_002c-defining">constraints, defining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Constraints.html#index-constraints_002c-machine-specific">constraints, machine specific</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Constraints.html#Machine-Constraints">Machine Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-constraints_002c-testing">constraints, testing</a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-constraint_005fnum"><code>constraint_num</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-constraint_005fsatisfied_005fp"><code>constraint_satisfied_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CONSTRUCTOR"><code>CONSTRUCTOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Collect2.html#index-constructors_002c-automatic-calls">constructors, automatic calls</a>:</td><td>&nbsp;</td><td valign="top"><a href="Collect2.html#Collect2">Collect2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-constructors_002c-output-of">constructors, output of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-CONST_005fDECL"><code>CONST_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fdouble"><code>const_double</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-const_005fdouble_002c-RTL-sharing"><code>const_double</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST_005fDOUBLE_005fLOW"><code>CONST_DOUBLE_LOW</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-const_005fdouble_005foperand"><code>const_double_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fdouble_005fzero"><code>const_double_zero</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005ffixed"><code>const_fixed</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fint"><code>const_int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-const_005fint-and-attribute-tests"><code>const_int</code> and attribute tests</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-const_005fint-and-attributes"><code>const_int</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-const_005fint_002c-RTL-sharing"><code>const_int</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-const_005fint_005foperand"><code>const_int_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fpoly_005fint"><code>const_poly_int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-const_005fpoly_005fint_002c-RTL-sharing"><code>const_poly_int</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fstring"><code>const_string</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-const_005fstring-and-attributes"><code>const_string</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005ftrue_005frtx"><code>const_true_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-const_005fvector"><code>const_vector</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-const_005fvector_002c-RTL-sharing"><code>const_vector</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST_005fWIDE_005fINT"><code>CONST_WIDE_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST_005fWIDE_005fINT_005fELT"><code>CONST_WIDE_INT_ELT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST_005fWIDE_005fINT_005fNUNITS"><code>CONST_WIDE_INT_NUNITS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-CONST_005fWIDE_005fINT_005fVEC"><code>CONST_WIDE_INT_VEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-container">container</a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-CONTINUE_005fSTMT"><code>CONTINUE_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Contributors.html#index-contributors">contributors</a>:</td><td>&nbsp;</td><td valign="top"><a href="Contributors.html#Contributors">Contributors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-controlling-register-usage">controlling register usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-controlling-the-compilation-driver">controlling the compilation driver</a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-conventions_002c-run_002dtime">conventions, run-time</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-conversions">conversions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-CONVERT_005fEXPR"><code>CONVERT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-copysignm3-instruction-pattern"><code>copysign<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-copy_005frtx"><code>copy_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-copy_005frtx_005fif_005fshared"><code>copy_rtx_if_shared</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cosm2-instruction-pattern"><code>cos<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-costs-of-instructions">costs of instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-CPLUSPLUS_005fCPP_005fSPEC"><code>CPLUSPLUS_CPP_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-CPP_005fSPEC"><code>CPP_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CPSImode"><code>CPSImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cpymemm-instruction-pattern"><code>cpymem<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CP_005fINTEGRAL_005fTYPE"><code>CP_INTEGRAL_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-cp_005fnamespace_005fdecls"><code>cp_namespace_decls</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CP_005fTYPE_005fCONST_005fNON_005fVOLATILE_005fP"><code>CP_TYPE_CONST_NON_VOLATILE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CP_005fTYPE_005fCONST_005fP"><code>CP_TYPE_CONST_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-cp_005ftype_005fquals"><code>cp_type_quals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-cp_005ftype_005fquals-1"><code>cp_type_quals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CP_005fTYPE_005fRESTRICT_005fP"><code>CP_TYPE_RESTRICT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-CP_005fTYPE_005fVOLATILE_005fP"><code>CP_TYPE_VOLATILE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CQImode"><code>CQImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-cross-compilation-and-floating-point">cross compilation and floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-CROSSING_005fJUMP_005fP"><code>CROSSING_JUMP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-crtl_002d_003eargs_002epops_005fargs"><code>crtl-&gt;args.pops_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-crtl_002d_003eargs_002epretend_005fargs_005fsize"><code>crtl-&gt;args.pretend_args_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-crtl_002d_003eoutgoing_005fargs_005fsize"><code>crtl-&gt;outgoing_args_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-CRTSTUFF_005fT_005fCFLAGS"><code>CRTSTUFF_T_CFLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-CRTSTUFF_005fT_005fCFLAGS_005fS"><code>CRTSTUFF_T_CFLAGS_S</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-CRT_005fCALL_005fSTATIC_005fFUNCTION"><code>CRT_CALL_STATIC_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CSImode"><code>CSImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-cstoremode4-instruction-pattern"><code>cstore<var>mode</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="CTF-Debug.html#index-CTF_005fDEBUGGING_005fINFO"><code>CTF_DEBUGGING_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="CTF-Debug.html#CTF-Debug">CTF Debug</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-CTImode"><code>CTImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ctrapMM4-instruction-pattern"><code>ctrap<var>MM</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ctz"><code>ctz</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ctzm2-instruction-pattern"><code>ctz<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-CTZ_005fDEFINED_005fVALUE_005fAT_005fZERO"><code>CTZ_DEFINED_VALUE_AT_ZERO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-CUMULATIVE_005fARGS"><code>CUMULATIVE_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-current_005ffunction_005fis_005fleaf"><code>current_function_is_leaf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-current_005ffunction_005fuses_005fonly_005fleaf_005fregs"><code>current_function_uses_only_leaf_regs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Execution.html#index-current_005finsn_005fpredicate"><code>current_insn_predicate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-C_005fCOMMON_005fOVERRIDE_005fOPTIONS"><code>C_COMMON_OVERRIDE_OPTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-c_005fregister_005fpragma"><code>c_register_pragma</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-c_005fregister_005fpragma_005fwith_005fexpansion"><code>c_register_pragma_with_expansion</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DAmode"><code>DAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-data-bypass">data bypass</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-data-bypass-1">data bypass</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-data-dependence-delays">data dependence delays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dependency-analysis.html#index-Data-Dependency-Analysis">Data Dependency Analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dependency-analysis.html#Dependency-analysis">Dependency analysis</a></td></tr>
+<tr><td></td><td valign="top"><a href="Per_002dFunction-Data.html#index-data-structures">data structures</a>:</td><td>&nbsp;</td><td valign="top"><a href="Per_002dFunction-Data.html#Per_002dFunction-Data">Per-Function Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-DATA_005fABI_005fALIGNMENT"><code>DATA_ABI_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-DATA_005fALIGNMENT"><code>DATA_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-DATA_005fSECTION_005fASM_005fOP"><code>DATA_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-DBR_005fOUTPUT_005fSEQEND"><code>DBR_OUTPUT_SEQEND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-dbr_005fsequence_005flength"><code>dbr_sequence_length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DCmode"><code>DCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DDmode"><code>DDmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-De-Morgan_0027s-law">De Morgan&rsquo;s law</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole.html#index-dead_005for_005fset_005fp"><code>dead_or_set_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole.html#define_005fpeephole">define_peephole</a></td></tr>
+<tr><td></td><td valign="top"><a href="All-Debuggers.html#index-DEBUGGER_005fARG_005fOFFSET"><code>DEBUGGER_ARG_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="All-Debuggers.html#All-Debuggers">All Debuggers</a></td></tr>
+<tr><td></td><td valign="top"><a href="All-Debuggers.html#index-DEBUGGER_005fAUTO_005fOFFSET"><code>DEBUGGER_AUTO_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="All-Debuggers.html#All-Debuggers">All Debuggers</a></td></tr>
+<tr><td></td><td valign="top"><a href="All-Debuggers.html#index-DEBUGGER_005fREGNO"><code>DEBUGGER_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="All-Debuggers.html#All-Debuggers">All Debuggers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-debug_005fexpr"><code>debug_expr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-DEBUG_005fEXPR_005fDECL"><code>DEBUG_EXPR_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-debug_005fimplicit_005fptr"><code>debug_implicit_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-debug_005finsn"><code>debug_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-debug_005fmarker"><code>debug_marker</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-debug_005fparameter_005fref"><code>debug_parameter_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-decimal-float-library">decimal float library</a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-declaration">declaration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Declarations.html#index-declarations_002c-RTL">declarations, RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-DECLARE_005fLIBRARY_005fRENAMES"><code>DECLARE_LIBRARY_RENAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-DECL_005fALIGN"><code>DECL_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fANTICIPATED"><code>DECL_ANTICIPATED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fARGUMENTS"><code>DECL_ARGUMENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fARRAY_005fDELETE_005fOPERATOR_005fP"><code>DECL_ARRAY_DELETE_OPERATOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Working-with-declarations.html#index-DECL_005fARTIFICIAL"><code>DECL_ARTIFICIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Working-with-declarations.html#Working-with-declarations">Working with declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fARTIFICIAL-1"><code>DECL_ARTIFICIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fARTIFICIAL-2"><code>DECL_ARTIFICIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fASSEMBLER_005fNAME"><code>DECL_ASSEMBLER_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fASSEMBLER_005fNAME-1"><code>DECL_ASSEMBLER_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attributes.html#index-DECL_005fATTRIBUTES"><code>DECL_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Attributes.html#Attributes">Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fBASE_005fCONSTRUCTOR_005fP"><code>DECL_BASE_CONSTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCOMPLETE_005fCONSTRUCTOR_005fP"><code>DECL_COMPLETE_CONSTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCOMPLETE_005fDESTRUCTOR_005fP"><code>DECL_COMPLETE_DESTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCONSTRUCTOR_005fP"><code>DECL_CONSTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCONST_005fMEMFUNC_005fP"><code>DECL_CONST_MEMFUNC_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-DECL_005fCONTEXT"><code>DECL_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCONV_005fFN_005fP"><code>DECL_CONV_FN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fCOPY_005fCONSTRUCTOR_005fP"><code>DECL_COPY_CONSTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fDESTRUCTOR_005fP"><code>DECL_DESTRUCTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-DECL_005fEXTERNAL"><code>DECL_EXTERNAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fEXTERNAL-1"><code>DECL_EXTERNAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fEXTERN_005fC_005fFUNCTION_005fP"><code>DECL_EXTERN_C_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fFUNCTION_005fMEMBER_005fP"><code>DECL_FUNCTION_MEMBER_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fFUNCTION_005fSPECIFIC_005fOPTIMIZATION"><code>DECL_FUNCTION_SPECIFIC_OPTIMIZATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fFUNCTION_005fSPECIFIC_005fOPTIMIZATION-1"><code>DECL_FUNCTION_SPECIFIC_OPTIMIZATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fFUNCTION_005fSPECIFIC_005fTARGET"><code>DECL_FUNCTION_SPECIFIC_TARGET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fFUNCTION_005fSPECIFIC_005fTARGET-1"><code>DECL_FUNCTION_SPECIFIC_TARGET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fGLOBAL_005fCTOR_005fP"><code>DECL_GLOBAL_CTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fGLOBAL_005fDTOR_005fP"><code>DECL_GLOBAL_DTOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-DECL_005fINITIAL"><code>DECL_INITIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fINITIAL-1"><code>DECL_INITIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fLINKONCE_005fP"><code>DECL_LINKONCE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fLOCAL_005fFUNCTION_005fP"><code>DECL_LOCAL_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fMAIN_005fP"><code>DECL_MAIN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Working-with-declarations.html#index-DECL_005fNAME"><code>DECL_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Working-with-declarations.html#Working-with-declarations">Working with declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fNAME-1"><code>DECL_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fNAME-2"><code>DECL_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-DECL_005fNAME-3"><code>DECL_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-DECL_005fNAMESPACE_005fALIAS"><code>DECL_NAMESPACE_ALIAS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-DECL_005fNAMESPACE_005fSTD_005fP"><code>DECL_NAMESPACE_STD_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fNONCONVERTING_005fP"><code>DECL_NONCONVERTING_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fNONSTATIC_005fMEMBER_005fFUNCTION_005fP"><code>DECL_NONSTATIC_MEMBER_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fNON_005fTHUNK_005fFUNCTION_005fP"><code>DECL_NON_THUNK_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fOVERLOADED_005fOPERATOR_005fP"><code>DECL_OVERLOADED_OPERATOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fPURE_005fP"><code>DECL_PURE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fRESULT"><code>DECL_RESULT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-DECL_005fSAVED_005fTREE"><code>DECL_SAVED_TREE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-DECL_005fSIZE"><code>DECL_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fSTATIC_005fFUNCTION_005fP"><code>DECL_STATIC_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-DECL_005fSTMT"><code>DECL_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-DECL_005fSTMT_005fDECL"><code>DECL_STMT_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fTHUNK_005fP"><code>DECL_THUNK_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-DECL_005fVIRTUAL_005fP"><code>DECL_VIRTUAL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-DECL_005fVOLATILE_005fMEMFUNC_005fP"><code>DECL_VOLATILE_MEMFUNC_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-default"><code>default</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-default_005ffile_005fstart"><code>default_file_start</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="All-Debuggers.html#index-DEFAULT_005fGDB_005fEXTENSIONS"><code>DEFAULT_GDB_EXTENSIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="All-Debuggers.html#All-Debuggers">All Debuggers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-DEFAULT_005fINCOMING_005fFRAME_005fSP_005fOFFSET"><code>DEFAULT_INCOMING_FRAME_SP_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-DEFAULT_005fPCC_005fSTRUCT_005fRETURN"><code>DEFAULT_PCC_STRUCT_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-DEFAULT_005fSIGNED_005fCHAR"><code>DEFAULT_SIGNED_CHAR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005faddress_005fconstraint"><code>define_address_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-define_005fasm_005fattributes"><code>define_asm_attributes</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Attributes.html#index-define_005fattr"><code>define_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Attributes.html#Defining-Attributes">Defining Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005fautomaton"><code>define_automaton</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005fbypass"><code>define_bypass</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Code-Iterators.html#index-define_005fcode_005fattr"><code>define_code_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Code-Iterators.html#Code-Iterators">Code Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Code-Iterators.html#index-define_005fcode_005fiterator"><code>define_code_iterator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Code-Iterators.html#Code-Iterators">Code Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Execution.html#index-define_005fcond_005fexec"><code>define_cond_exec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-define_005fconstants"><code>define_constants</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005fconstraint"><code>define_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005fcpu_005funit"><code>define_cpu_unit</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-define_005fc_005fenum"><code>define_c_enum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Delay-Slots.html#index-define_005fdelay"><code>define_delay</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Delay-Slots.html#Delay-Slots">Delay Slots</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-define_005fenum"><code>define_enum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Attributes.html#index-define_005fenum_005fattr"><code>define_enum_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Attributes.html#Defining-Attributes">Defining Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-define_005fenum_005fattr-1"><code>define_enum_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-define_005fexpand"><code>define_expand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-define_005finsn"><code>define_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Example.html#index-define_005finsn-example"><code>define_insn</code> example</a>:</td><td>&nbsp;</td><td valign="top"><a href="Example.html#Example">Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-define_005finsn_005fand_005frewrite"><code>define_insn_and_rewrite</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-define_005finsn_005fand_005fsplit"><code>define_insn_and_split</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005finsn_005freservation"><code>define_insn_reservation</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Int-Iterators.html#index-define_005fint_005fattr"><code>define_int_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Int-Iterators.html#Int-Iterators">Int Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Int-Iterators.html#index-define_005fint_005fiterator"><code>define_int_iterator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Int-Iterators.html#Int-Iterators">Int Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005fmemory_005fconstraint"><code>define_memory_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Substitutions.html#index-define_005fmode_005fattr"><code>define_mode_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Substitutions.html#Substitutions">Substitutions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Mode-Iterators.html#index-define_005fmode_005fiterator"><code>define_mode_iterator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators">Defining Mode Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole.html#index-define_005fpeephole"><code>define_peephole</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole.html#define_005fpeephole">define_peephole</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole2.html#index-define_005fpeephole2"><code>define_peephole2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole2.html#define_005fpeephole2">define_peephole2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Predicates.html#index-define_005fpredicate"><code>define_predicate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Predicates.html#Defining-Predicates">Defining Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005fquery_005fcpu_005funit"><code>define_query_cpu_unit</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005fregister_005fconstraint"><code>define_register_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005frelaxed_005fmemory_005fconstraint"><code>define_relaxed_memory_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-define_005freservation"><code>define_reservation</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-define_005fspecial_005fmemory_005fconstraint"><code>define_special_memory_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Predicates.html#index-define_005fspecial_005fpredicate"><code>define_special_predicate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Predicates.html#Defining-Predicates">Defining Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-define_005fsplit"><code>define_split</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Subst.html#index-define_005fsubst">define_subst</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Subst.html#Define-Subst">Define Subst</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Subst-Example.html#index-define_005fsubst-1">define_subst</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Subst-Example.html#Define-Subst-Example">Define Subst Example</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Subst-Pattern-Matching.html#index-define_005fsubst-2">define_subst</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching">Define Subst Pattern Matching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Subst-Output-Template.html#index-define_005fsubst-3">define_subst</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Subst-Output-Template.html#Define-Subst-Output-Template">Define Subst Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Subst.html#index-define_005fsubst-4"><code>define_subst</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Subst.html#Define-Subst">Define Subst</a></td></tr>
+<tr><td></td><td valign="top"><a href="Subst-Iterators.html#index-define_005fsubst-5"><code>define_subst</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Subst-Iterators.html#Subst-Iterators">Subst Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Subst-Iterators.html#index-define_005fsubst_005fattr"><code>define_subst_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Subst-Iterators.html#Subst-Iterators">Subst Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Subst-Iterators.html#index-define_005fsubst_005fattr-1"><code>define_subst_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Subst-Iterators.html#Subst-Iterators">Subst Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Attributes.html#index-defining-attributes-and-their-values">defining attributes and their values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Attributes.html#Defining-Attributes">Defining Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Define-Constraints.html#index-defining-constraints">defining constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Define-Constraints.html#Define-Constraints">Define Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Jump-Patterns.html#index-defining-jump-instruction-patterns">defining jump instruction patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Jump-Patterns.html#Jump-Patterns">Jump Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Looping-Patterns.html#index-defining-looping-instruction-patterns">defining looping instruction patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Looping-Patterns.html#Looping-Patterns">Looping Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Peephole-Definitions.html#index-defining-peephole-optimizers">defining peephole optimizers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Peephole-Definitions.html#Peephole-Definitions">Peephole Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Predicates.html#index-defining-predicates">defining predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Predicates.html#Defining-Predicates">Defining Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-defining-RTL-sequences-for-code-generation">defining RTL sequences for code generation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Access-Lists.html#index-degenerate-phi-node_002c-RTL-SSA">degenerate phi node, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists">RTL SSA Access Lists</a></td></tr>
+<tr><td></td><td valign="top"><a href="Delay-Slots.html#index-delay-slots_002c-defining">delay slots, defining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Delay-Slots.html#Delay-Slots">Delay Slots</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-deletable"><code>deletable</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-DELETE_005fIF_005fORDINARY"><code>DELETE_IF_ORDINARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dependent-Patterns.html#index-Dependent-Patterns">Dependent Patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dependent-Patterns.html#Dependent-Patterns">Dependent Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-desc"><code>desc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-descriptors-for-nested-functions">descriptors for nested functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-destructors_002c-output-of">destructors, output of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-deterministic-finite-state-automaton">deterministic finite state automaton</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-deterministic-finite-state-automaton-1">deterministic finite state automaton</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DFmode"><code>DFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics-guidelines_002c-fix_002dit-hints">diagnostics guidelines, fix-it hints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics_002c-actionable">diagnostics, actionable</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics_002c-false-positive">diagnostics, false positive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics_002c-guidelines-for">diagnostics, guidelines for</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics_002c-locations">diagnostics, locations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-diagnostics_002c-true-positive">diagnostics, true positive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-digits-in-constraint">digits in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DImode"><code>DImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Including-Patterns.html#index-directory-options-_002emd">directory options .md</a>:</td><td>&nbsp;</td><td valign="top"><a href="Including-Patterns.html#Including-Patterns">Including Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-DIR_005fSEPARATOR"><code>DIR_SEPARATOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-DIR_005fSEPARATOR_005f2"><code>DIR_SEPARATOR_2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-disabling-certain-registers">disabling certain registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-dispatch-table">dispatch table</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-div"><code>div</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-div-and-attributes"><code>div</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-division">division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-division-1">division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-division-2">division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-divm3-instruction-pattern"><code>div<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-divmodm4-instruction-pattern"><code>divmod<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-dollar-sign">dollar sign</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-DOLLARS_005fIN_005fIDENTIFIERS"><code>DOLLARS_IN_IDENTIFIERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-doloop_005fbegin-instruction-pattern"><code>doloop_begin</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-doloop_005fend-instruction-pattern"><code>doloop_end</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-DONE"><code>DONE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-DONE-1"><code>DONE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole2.html#index-DONE-2"><code>DONE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole2.html#define_005fpeephole2">define_peephole2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-DONT_005fUSE_005fBUILTIN_005fSETJMP"><code>DONT_USE_BUILTIN_SETJMP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-DOUBLE_005fTYPE_005fSIZE"><code>DOUBLE_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-DO_005fBODY"><code>DO_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-DO_005fCOND"><code>DO_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-DO_005fSTMT"><code>DO_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-DQmode"><code>DQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-driver">driver</a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-DRIVER_005fSELF_005fSPECS"><code>DRIVER_SELF_SPECS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-examples.html#index-dump-examples">dump examples</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-examples.html#Dump-examples">Dump examples</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-setup.html#index-dump-setup">dump setup</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-setup.html#Dump-setup">Dump setup</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-types.html#index-dump-types">dump types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-types.html#Dump-types">Dump types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-output-verbosity.html#index-dump-verbosity">dump verbosity</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-output-verbosity.html#Dump-output-verbosity">Dump output verbosity</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-DUMPFILE_005fFORMAT"><code>DUMPFILE_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-types.html#index-dump_005fbasic_005fblock"><code>dump_basic_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-types.html#Dump-types">Dump types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-types.html#index-dump_005fgeneric_005fexpr"><code>dump_generic_expr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-types.html#Dump-types">Dump types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-types.html#index-dump_005fgimple_005fstmt"><code>dump_gimple_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-types.html#Dump-types">Dump types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-types.html#index-dump_005fprintf"><code>dump_printf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-types.html#Dump-types">Dump types</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-DWARF2_005fASM_005fLINE_005fDEBUG_005fINFO"><code>DWARF2_ASM_LINE_DEBUG_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-DWARF2_005fASM_005fVIEW_005fDEBUG_005fINFO"><code>DWARF2_ASM_VIEW_DEBUG_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-DWARF2_005fDEBUGGING_005fINFO"><code>DWARF2_DEBUGGING_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-DWARF2_005fFRAME_005fINFO"><code>DWARF2_FRAME_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-DWARF2_005fFRAME_005fREG_005fOUT"><code>DWARF2_FRAME_REG_OUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-DWARF2_005fUNWIND_005fINFO"><code>DWARF2_UNWIND_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-DWARF_005fALT_005fFRAME_005fRETURN_005fCOLUMN"><code>DWARF_ALT_FRAME_RETURN_COLUMN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-DWARF_005fCIE_005fDATA_005fALIGNMENT"><code>DWARF_CIE_DATA_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-DWARF_005fFRAME_005fREGISTERS"><code>DWARF_FRAME_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-DWARF_005fFRAME_005fREGNUM"><code>DWARF_FRAME_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-DWARF_005fLAZY_005fREGISTER_005fVALUE"><code>DWARF_LAZY_REGISTER_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-DWARF_005fREG_005fTO_005fUNWIND_005fCOLUMN"><code>DWARF_REG_TO_UNWIND_COLUMN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-DWARF_005fVERSION_005fDEFAULT"><code>DWARF_VERSION_DEFAULT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-DWARF_005fZERO_005fREG"><code>DWARF_ZERO_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-DYNAMIC_005fCHAIN_005fADDRESS"><code>DYNAMIC_CHAIN_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-E-in-constraint">&lsquo;<samp>E</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-earlyclobber-operand">earlyclobber operand</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-edge"><code>edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-edge-in-the-flow-graph">edge in the flow graph</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-edge-iterators">edge iterators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-edge-splitting">edge splitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-EDGE_005fABNORMAL"><code>EDGE_ABNORMAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-EDGE_005fABNORMAL_002c-EDGE_005fABNORMAL_005fCALL"><code>EDGE_ABNORMAL, EDGE_ABNORMAL_CALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-EDGE_005fABNORMAL_002c-EDGE_005fEH"><code>EDGE_ABNORMAL, EDGE_EH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-EDGE_005fABNORMAL_002c-EDGE_005fSIBCALL"><code>EDGE_ABNORMAL, EDGE_SIBCALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-EDGE_005fFALLTHRU_002c-force_005fnonfallthru"><code>EDGE_FALLTHRU, force_nonfallthru</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-EDOM_002c-implicit-usage"><code>EDOM</code>, implicit usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-EH_005fFRAME_005fSECTION_005fNAME"><code>EH_FRAME_SECTION_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-EH_005fFRAME_005fTHROUGH_005fCOLLECT2"><code>EH_FRAME_THROUGH_COLLECT2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-eh_005freturn-instruction-pattern"><code>eh_return</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-EH_005fRETURN_005fDATA_005fREGNO"><code>EH_RETURN_DATA_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-EH_005fRETURN_005fHANDLER_005fRTX"><code>EH_RETURN_HANDLER_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-EH_005fRETURN_005fSTACKADJ_005fRTX"><code>EH_RETURN_STACKADJ_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-EH_005fTABLES_005fCAN_005fBE_005fREAD_005fONLY"><code>EH_TABLES_CAN_BE_READ_ONLY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-EH_005fUSES"><code>EH_USES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fedge"><code>ei_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fend_005fp"><code>ei_end_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005flast"><code>ei_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fnext"><code>ei_next</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fone_005fbefore_005fend_005fp"><code>ei_one_before_end_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fprev"><code>ei_prev</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fsafe_005fedge"><code>ei_safe_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-ei_005fstart"><code>ei_start</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Elimination.html#index-ELIMINABLE_005fREGS"><code>ELIMINABLE_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Elimination.html#Elimination">Elimination</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-ELSE_005fCLAUSE"><code>ELSE_CLAUSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-Embedded-C">Embedded C</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Empty-Statements.html#index-Empty-Statements">Empty Statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Empty-Statements.html#Empty-Statements">Empty Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-EMPTY_005fCLASS_005fEXPR"><code>EMPTY_CLASS_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-EMPTY_005fFIELD_005fBOUNDARY"><code>EMPTY_FIELD_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-Emulated-TLS">Emulated TLS</a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Disable-Insn-Alternatives.html#index-enabled">enabled</a>:</td><td>&nbsp;</td><td valign="top"><a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives">Disable Insn Alternatives</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-ENDFILE_005fSPEC"><code>ENDFILE_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Portability.html#index-endianness">endianness</a>:</td><td>&nbsp;</td><td valign="top"><a href="Portability.html#Portability">Portability</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-ENTRY_005fBLOCK_005fPTR_002c-EXIT_005fBLOCK_005fPTR"><code>ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-entry_005fvalue"><code>entry_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-enum-reg_005fclass"><code>enum reg_class</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-ENUMERAL_005fTYPE"><code>ENUMERAL_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-enumerations">enumerations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-epilogue">epilogue</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-epilogue-instruction-pattern"><code>epilogue</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-EPILOGUE_005fUSES"><code>EPILOGUE_USES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-eq"><code>eq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-eq-and-attributes"><code>eq</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-equal">equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-eq_005fattr"><code>eq_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-EQ_005fEXPR"><code>EQ_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-errno_002c-implicit-usage"><code>errno</code>, implicit usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-EXACT_005fDIV_005fEXPR"><code>EXACT_DIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-examining-SSA_005fNAMEs">examining SSA_NAMEs</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-exception-handling">exception handling</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-exception-handling-1">exception handling</a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-exception_005freceiver-instruction-pattern"><code>exception_receiver</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-exclamation-point">exclamation point</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-exclusion_005fset"><code>exclusion_set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-exclusive_002dor_002c-bitwise">exclusive-or, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-EXIT_005fEXPR"><code>EXIT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-EXIT_005fIGNORE_005fSTACK"><code>EXIT_IGNORE_STACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-exp10m2-instruction-pattern"><code>exp10<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-exp2m2-instruction-pattern"><code>exp2<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-expander-definitions">expander definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-expm1m2-instruction-pattern"><code>expm1<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-expm2-instruction-pattern"><code>exp<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-trees.html#index-expression">expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-trees.html#Expression-trees">Expression trees</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-expression-codes">expression codes</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Working-with-declarations.html#index-EXPR_005fFILENAME"><code>EXPR_FILENAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Working-with-declarations.html#Working-with-declarations">Working with declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Working-with-declarations.html#index-EXPR_005fLINENO"><code>EXPR_LINENO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Working-with-declarations.html#Working-with-declarations">Working with declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-expr_005flist"><code>expr_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-EXPR_005fSTMT"><code>EXPR_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-EXPR_005fSTMT_005fEXPR"><code>EXPR_STMT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-extended-basic-blocks_002c-RTL-SSA">extended basic blocks, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extendmn2-instruction-pattern"><code>extend<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-extensible-constraints">extensible constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extract_005flast_005fm-instruction-pattern"><code>extract_last_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-EXTRA_005fSPECS"><code>EXTRA_SPECS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extv-instruction-pattern"><code>extv</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extvm-instruction-pattern"><code>extv<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extvmisalignm-instruction-pattern"><code>extvmisalign<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extzv-instruction-pattern"><code>extzv</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extzvm-instruction-pattern"><code>extzv<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-extzvmisalignm-instruction-pattern"><code>extzvmisalign<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-F-in-constraint">&lsquo;<samp>F</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-FAIL"><code>FAIL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-FAIL-1"><code>FAIL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole2.html#index-FAIL-2"><code>FAIL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole2.html#define_005fpeephole2">define_peephole2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-fall_002dthru"><code>fall-thru</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-false-positive">false positive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-FATAL_005fEXIT_005fCODE"><code>FATAL_EXIT_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="GNU-Free-Documentation-License.html#index-FDL_002c-GNU-Free-Documentation-License">FDL, GNU Free Documentation License</a>:</td><td>&nbsp;</td><td valign="top"><a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-features_002c-optional_002c-in-system-conventions">features, optional, in system conventions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-feclearexceptm-instruction-pattern"><code>feclearexcept<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fegetroundm-instruction-pattern"><code>fegetround<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-feraiseexceptm-instruction-pattern"><code>feraiseexcept<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ffs"><code>ffs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ffsm2-instruction-pattern"><code>ffs<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-FIELD_005fDECL"><code>FIELD_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Passes.html#index-files-and-passes-of-the-compiler">files and passes of the compiler</a>:</td><td>&nbsp;</td><td valign="top"><a href="Passes.html#Passes">Passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Files.html#index-files_002c-generated">files, generated</a>:</td><td>&nbsp;</td><td valign="top"><a href="Files.html#Files">Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-file_005fend_005findicate_005fexec_005fstack"><code>file_end_indicate_exec_stack</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-final_005fabsence_005fset"><code>final_absence_set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-FINAL_005fPRESCAN_005fINSN"><code>FINAL_PRESCAN_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-final_005fpresence_005fset"><code>final_presence_set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-final_005fsequence"><code>final_sequence</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-FIND_005fBASE_005fTERM"><code>FIND_BASE_TERM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-finite-state-automaton-minimization">finite state automaton minimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-FINI_005fARRAY_005fSECTION_005fASM_005fOP"><code>FINI_ARRAY_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-FINI_005fSECTION_005fASM_005fOP"><code>FINI_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-FIRST_005fPARM_005fOFFSET"><code>FIRST_PARM_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-FIRST_005fPARM_005fOFFSET-and-virtual-registers"><code>FIRST_PARM_OFFSET</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-FIRST_005fPSEUDO_005fREGISTER"><code>FIRST_PSEUDO_REGISTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Registers.html#index-FIRST_005fSTACK_005fREG"><code>FIRST_STACK_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Registers.html#Stack-Registers">Stack Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-FIRST_005fVIRTUAL_005fREGISTER"><code>FIRST_VIRTUAL_REGISTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-fix"><code>fix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-fix_002dit-hints">fix-it hints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-fixed-register">fixed register</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-fixed_002dpoint-fractional-library">fixed-point fractional library</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-FIXED_005fCONVERT_005fEXPR"><code>FIXED_CONVERT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-FIXED_005fCST"><code>FIXED_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-FIXED_005fPOINT_005fTYPE"><code>FIXED_POINT_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-FIXED_005fREGISTERS"><code>FIXED_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-fixed_005fregs"><code>fixed_regs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-fixed_005fsize_005fmode"><code>fixed_size_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fixmn2-instruction-pattern"><code>fix<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fixunsmn2-instruction-pattern"><code>fixuns<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fixuns_005ftruncmn2-instruction-pattern"><code>fixuns_trunc<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fix_005ftruncmn2-instruction-pattern"><code>fix_trunc<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-FIX_005fTRUNC_005fEXPR"><code>FIX_TRUNC_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-flags-in-RTL-expression">flags in RTL expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-float"><code>float</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-floating-point-and-cross-compilation">floating point and cross compilation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-floatmn2-instruction-pattern"><code>float<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-floatunsmn2-instruction-pattern"><code>floatuns<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-FLOAT_005fEXPR"><code>FLOAT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-float_005fextend"><code>float_extend</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-FLOAT_005fLIB_005fCOMPARE_005fRETURNS_005fBOOL"><code>FLOAT_LIB_COMPARE_RETURNS_BOOL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-FLOAT_005fSTORE_005fFLAG_005fVALUE"><code>FLOAT_STORE_FLAG_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-float_005ftruncate"><code>float_truncate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-FLOAT_005fTYPE_005fSIZE"><code>FLOAT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-FLOAT_005fWORDS_005fBIG_005fENDIAN"><code>FLOAT_WORDS_BIG_ENDIAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-FLOAT_005fWORDS_005fBIG_005fENDIAN_002c-_0028lack-of_0029-effect-on-subreg"><code>FLOAT_WORDS_BIG_ENDIAN</code>, (lack of) effect on <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-floorm2-instruction-pattern"><code>floor<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-FLOOR_005fDIV_005fEXPR"><code>FLOOR_DIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-FLOOR_005fMOD_005fEXPR"><code>FLOOR_MOD_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alias-analysis.html#index-flow_002dinsensitive-alias-analysis">flow-insensitive alias analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Alias-analysis.html#Alias-analysis">Alias analysis</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alias-analysis.html#index-flow_002dsensitive-alias-analysis">flow-sensitive alias analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Alias-analysis.html#Alias-analysis">Alias analysis</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-fma"><code>fma</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fmam4-instruction-pattern"><code>fma<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fmaxm3-instruction-pattern"><code>fmax<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fminm3-instruction-pattern"><code>fmin<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fmodm3-instruction-pattern"><code>fmod<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fmsm4-instruction-pattern"><code>fms<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fnmam4-instruction-pattern"><code>fnma<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fnmsm4-instruction-pattern"><code>fnms<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fold_005fextract_005flast_005fm-instruction-pattern"><code>fold_extract_last_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fold_005fleft_005fplus_005fm-instruction-pattern"><code>fold_left_plus_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-FORCE_005fCODE_005fSECTION_005fALIGN"><code>FORCE_CODE_SECTION_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-force_005freg"><code>force_reg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-FOR_005fBODY"><code>FOR_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-FOR_005fCOND"><code>FOR_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-FOR_005fEXPR"><code>FOR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-FOR_005fINIT_005fSTMT"><code>FOR_INIT_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-FOR_005fSTMT"><code>FOR_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-for_005fuser"><code>for_user</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#index-fractional-types">fractional types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">Fixed-point fractional library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fractmn2-instruction-pattern"><code>fract<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-fractunsmn2-instruction-pattern"><code>fractuns<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-fract_005fconvert"><code>fract_convert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-FRACT_005fTYPE_005fSIZE"><code>FRACT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-frame-layout">frame layout</a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-FRAME_005fADDR_005fRTX"><code>FRAME_ADDR_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-FRAME_005fGROWS_005fDOWNWARD"><code>FRAME_GROWS_DOWNWARD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-FRAME_005fGROWS_005fDOWNWARD-and-virtual-registers"><code>FRAME_GROWS_DOWNWARD</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-FRAME_005fPOINTER_005fCFA_005fOFFSET"><code>FRAME_POINTER_CFA_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-frame_005fpointer_005fneeded"><code>frame_pointer_needed</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-FRAME_005fPOINTER_005fREGNUM"><code>FRAME_POINTER_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-FRAME_005fPOINTER_005fREGNUM-and-virtual-registers"><code>FRAME_POINTER_REGNUM</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-frame_005fpointer_005frtx"><code>frame_pointer_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-frame_005frelated"><code>frame_related</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-frame_005frelated_002c-in-insn_002c-call_005finsn_002c-jump_005finsn_002c-barrier_002c-and-set"><code>frame_related</code>, in <code>insn</code>, <code>call_insn</code>, <code>jump_insn</code>, <code>barrier</code>, and <code>set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-frame_005frelated_002c-in-mem"><code>frame_related</code>, in <code>mem</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-frame_005frelated_002c-in-reg"><code>frame_related</code>, in <code>reg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-frame_005frelated_002c-in-symbol_005fref"><code>frame_related</code>, in <code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-frequency_002c-count_002c-BB_005fFREQ_005fBASE"><code>frequency, count, BB_FREQ_BASE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ftruncm2-instruction-pattern"><code>ftrunc<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions.html#index-function">function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions.html#Functions">Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-function-1">function</a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-function-call-conventions">function call conventions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-function-entry-and-exit">function entry and exit</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-function-entry-point_002c-alternate-function-entry-point">function entry point, alternate function entry point</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-function-properties">function properties</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calls.html#index-function_002dcall-insns">function-call insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calls.html#Calls">Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-functions_002c-leaf">functions, leaf</a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-FUNCTION_005fARG_005fREGNO_005fP"><code>FUNCTION_ARG_REGNO_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-FUNCTION_005fBOUNDARY"><code>FUNCTION_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions.html#index-FUNCTION_005fDECL"><code>FUNCTION_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions.html#Functions">Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-FUNCTION_005fDECL-1"><code>FUNCTION_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-FUNCTION_005fMODE"><code>FUNCTION_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-FUNCTION_005fPROFILER"><code>FUNCTION_PROFILER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-FUNCTION_005fTYPE"><code>FUNCTION_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-FUNCTION_005fVALUE"><code>FUNCTION_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-FUNCTION_005fVALUE_005fREGNO_005fP"><code>FUNCTION_VALUE_REGNO_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-fundamental-type">fundamental type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-fused-multiply_002dadd">fused multiply-add</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-G">G</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-G-in-constraint">&lsquo;<samp>G</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-g-in-constraint">&lsquo;<samp>g</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Invoking-the-garbage-collector.html#index-garbage-collector_002c-invocation">garbage collector, invocation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector">Invoking the garbage collector</a></td></tr>
+<tr><td></td><td valign="top"><a href="Troubleshooting.html#index-garbage-collector_002c-troubleshooting">garbage collector, troubleshooting</a>:</td><td>&nbsp;</td><td valign="top"><a href="Troubleshooting.html#Troubleshooting">Troubleshooting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-gather_005floadmn-instruction-pattern"><code>gather_load<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Portability.html#index-GCC-and-portability">GCC and portability</a>:</td><td>&nbsp;</td><td valign="top"><a href="Portability.html#Portability">Portability</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-GCC_005fDRIVER_005fHOST_005fINITIALIZATION"><code>GCC_DRIVER_HOST_INITIALIZATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-gcov_005ftype"><code>gcov_type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-ge"><code>ge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-ge-and-attributes"><code>ge</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-gencodes"><code>gencodes</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-general_005foperand"><code>general_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-GENERAL_005fREGS"><code>GENERAL_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Files.html#index-generated-files">generated files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Files.html#Files">Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-generating-assembler-output">generating assembler output</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-generating-insns">generating insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-GENERIC">GENERIC</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="GENERIC.html#index-GENERIC-1">GENERIC</a>:</td><td>&nbsp;</td><td valign="top"><a href="GENERIC.html#GENERIC">GENERIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-generic-predicates">generic predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-genflags"><code>genflags</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-GEN_005fERRNO_005fRTX"><code>GEN_ERRNO_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-get_005fattr"><code>get_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-get_005fattr_005flength"><code>get_attr_length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fCLASS_005fNARROWEST_005fMODE"><code>GET_CLASS_NARROWEST_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-GET_005fCODE"><code>GET_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-get_005finsns"><code>get_insns</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-get_005flast_005finsn"><code>get_last_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE"><code>GET_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fALIGNMENT"><code>GET_MODE_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fBITSIZE"><code>GET_MODE_BITSIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fCLASS"><code>GET_MODE_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fFBIT"><code>GET_MODE_FBIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fIBIT"><code>GET_MODE_IBIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fMASK"><code>GET_MODE_MASK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fNAME"><code>GET_MODE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fNUNITS"><code>GET_MODE_NUNITS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fSIZE"><code>GET_MODE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fUNIT_005fSIZE"><code>GET_MODE_UNIT_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-GET_005fMODE_005fWIDER_005fMODE"><code>GET_MODE_WIDER_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-GET_005fRTX_005fCLASS"><code>GET_RTX_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-GET_005fRTX_005fFORMAT"><code>GET_RTX_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-GET_005fRTX_005fLENGTH"><code>GET_RTX_LENGTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-get_005fthread_005fpointermode-instruction-pattern"><code>get_thread_pointer<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-geu"><code>geu</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-geu-and-attributes"><code>geu</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-GE_005fEXPR"><code>GE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Information.html#index-GGC">GGC</a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Information.html#Type-Information">Type Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Invoking-the-garbage-collector.html#index-ggc_005fcollect"><code>ggc_collect</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector">Invoking the garbage collector</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-GIMPLE">GIMPLE</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Gimplification-pass.html#index-GIMPLE-1">GIMPLE</a>:</td><td>&nbsp;</td><td valign="top"><a href="Gimplification-pass.html#Gimplification-pass">Gimplification pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE.html#index-GIMPLE-2">GIMPLE</a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE.html#GIMPLE">GIMPLE</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tuple-representation.html#index-gimple">gimple</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tuple-representation.html#Tuple-representation">Tuple representation</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-GIMPLE-API">GIMPLE API</a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="Class-hierarchy-of-GIMPLE-statements.html#index-GIMPLE-class-hierarchy">GIMPLE class hierarchy</a>:</td><td>&nbsp;</td><td valign="top"><a href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements">Class hierarchy of GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-Exception-Handling.html#index-GIMPLE-Exception-Handling">GIMPLE Exception Handling</a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling">GIMPLE Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-instruction-set.html#index-GIMPLE-instruction-set">GIMPLE instruction set</a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-instruction-set.html#GIMPLE-instruction-set">GIMPLE instruction set</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-GIMPLE-sequences">GIMPLE sequences</a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-GIMPLE-statement-iterators">GIMPLE statement iterators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-GIMPLE-statement-iterators-1">GIMPLE statement iterators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005faddresses_005ftaken"><code>gimple_addresses_taken</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-GIMPLE_005fASM"><code>GIMPLE_ASM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fclobber_005fop"><code>gimple_asm_clobber_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005finput_005fop"><code>gimple_asm_input_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fnclobbers"><code>gimple_asm_nclobbers</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fninputs"><code>gimple_asm_ninputs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fnoutputs"><code>gimple_asm_noutputs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005foutput_005fop"><code>gimple_asm_output_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fset_005fclobber_005fop"><code>gimple_asm_set_clobber_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fset_005finput_005fop"><code>gimple_asm_set_input_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fset_005foutput_005fop"><code>gimple_asm_set_output_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fset_005fvolatile"><code>gimple_asm_set_volatile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fstring"><code>gimple_asm_string</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASM.html#index-gimple_005fasm_005fvolatile_005fp"><code>gimple_asm_volatile_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASM.html#GIMPLE_005fASM"><code>GIMPLE_ASM</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fassign_005fcast_005fp"><code>gimple_assign_cast_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005fcast_005fp-1"><code>gimple_assign_cast_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005flhs"><code>gimple_assign_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005flhs_005fptr"><code>gimple_assign_lhs_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs1"><code>gimple_assign_rhs1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs1_005fptr"><code>gimple_assign_rhs1_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs2"><code>gimple_assign_rhs2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs2_005fptr"><code>gimple_assign_rhs2_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs3"><code>gimple_assign_rhs3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs3_005fptr"><code>gimple_assign_rhs3_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs_005fclass"><code>gimple_assign_rhs_class</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005frhs_005fcode"><code>gimple_assign_rhs_code</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005fset_005flhs"><code>gimple_assign_set_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005fset_005frhs1"><code>gimple_assign_set_rhs1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005fset_005frhs2"><code>gimple_assign_set_rhs2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimple_005fassign_005fset_005frhs3"><code>gimple_assign_set_rhs3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fbb"><code>gimple_bb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fadd_005fseq"><code>gimple_bind_add_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fadd_005fstmt"><code>gimple_bind_add_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fappend_005fvars"><code>gimple_bind_append_vars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fblock"><code>gimple_bind_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fbody"><code>gimple_bind_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fset_005fblock"><code>gimple_bind_set_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fset_005fbody"><code>gimple_bind_set_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fset_005fvars"><code>gimple_bind_set_vars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fBIND.html#index-gimple_005fbind_005fvars"><code>gimple_bind_vars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND"><code>GIMPLE_BIND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fblock"><code>gimple_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild-1"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild-2"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild-3"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild-4"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fbuild-5"><code>gimple_build</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fbuild_005fdebug_005fbegin_005fstmt"><code>gimple_build_debug_begin_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fbuild_005fdebug_005finline_005fentry"><code>gimple_build_debug_inline_entry</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fNOP.html#index-gimple_005fbuild_005fnop"><code>gimple_build_nop</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP"><code>GIMPLE_NOP</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fMASTER.html#index-gimple_005fbuild_005fomp_005fmaster"><code>gimple_build_omp_master</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER"><code>GIMPLE_OMP_MASTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fORDERED.html#index-gimple_005fbuild_005fomp_005fordered"><code>gimple_build_omp_ordered</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED"><code>GIMPLE_OMP_ORDERED</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#index-gimple_005fbuild_005fomp_005freturn"><code>gimple_build_omp_return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#index-gimple_005fbuild_005fomp_005fsection"><code>gimple_build_omp_section</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fbuild_005fomp_005fsections_005fswitch"><code>gimple_build_omp_sections_switch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-gimple_005fbuild_005fwce"><code>gimple_build_wce</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005farg"><code>gimple_call_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005farg_005fptr"><code>gimple_call_arg_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fchain"><code>gimple_call_chain</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fcopy_005fskip_005fargs"><code>gimple_call_copy_skip_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005ffn"><code>gimple_call_fn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005ffndecl"><code>gimple_call_fndecl</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005flhs"><code>gimple_call_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005flhs_005fptr"><code>gimple_call_lhs_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fnoreturn_005fp"><code>gimple_call_noreturn_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fnum_005fargs"><code>gimple_call_num_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005freturn_005ftype"><code>gimple_call_return_type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005farg"><code>gimple_call_set_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005fchain"><code>gimple_call_set_chain</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005ffn"><code>gimple_call_set_fn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005ffndecl"><code>gimple_call_set_fndecl</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005flhs"><code>gimple_call_set_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005fset_005ftail"><code>gimple_call_set_tail</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCALL.html#index-gimple_005fcall_005ftail_005fp"><code>gimple_call_tail_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL"><code>GIMPLE_CALL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-gimple_005fcatch_005fhandler"><code>gimple_catch_handler</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-gimple_005fcatch_005fset_005fhandler"><code>gimple_catch_set_handler</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-gimple_005fcatch_005fset_005ftypes"><code>gimple_catch_set_types</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-gimple_005fcatch_005ftypes"><code>gimple_catch_types</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCATCH.html#index-gimple_005fcatch_005ftypes_005fptr"><code>gimple_catch_types_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH"><code>GIMPLE_CATCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fcode"><code>gimple_code</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-GIMPLE_005fCOND"><code>GIMPLE_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fcode"><code>gimple_cond_code</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005ffalse_005flabel"><code>gimple_cond_false_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005flhs"><code>gimple_cond_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fmake_005ffalse"><code>gimple_cond_make_false</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fmake_005ftrue"><code>gimple_cond_make_true</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005frhs"><code>gimple_cond_rhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fset_005fcode"><code>gimple_cond_set_code</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fset_005ffalse_005flabel"><code>gimple_cond_set_false_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fset_005flhs"><code>gimple_cond_set_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fset_005frhs"><code>gimple_cond_set_rhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005fset_005ftrue_005flabel"><code>gimple_cond_set_true_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fCOND.html#index-gimple_005fcond_005ftrue_005flabel"><code>gimple_cond_true_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND"><code>GIMPLE_COND</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fconvert"><code>gimple_convert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fcopy"><code>gimple_copy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-GIMPLE_005fDEBUG_005fBEGIN_005fSTMT"><code>GIMPLE_DEBUG_BEGIN_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fdebug_005fbegin_005fstmt_005fp"><code>gimple_debug_begin_stmt_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-GIMPLE_005fDEBUG_005fBIND"><code>GIMPLE_DEBUG_BIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fget_005fvalue"><code>gimple_debug_bind_get_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fget_005fvalue_005fptr"><code>gimple_debug_bind_get_value_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fget_005fvar"><code>gimple_debug_bind_get_var</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fhas_005fvalue_005fp"><code>gimple_debug_bind_has_value_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fdebug_005fbind_005fp"><code>gimple_debug_bind_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005freset_005fvalue"><code>gimple_debug_bind_reset_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fset_005fvalue"><code>gimple_debug_bind_set_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-gimple_005fdebug_005fbind_005fset_005fvar"><code>gimple_debug_bind_set_var</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fDEBUG.html#index-GIMPLE_005fDEBUG_005fINLINE_005fENTRY"><code>GIMPLE_DEBUG_INLINE_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fdebug_005finline_005fentry_005fp"><code>gimple_debug_inline_entry_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fdebug_005fnonbind_005fmarker_005fp"><code>gimple_debug_nonbind_marker_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fdef_005fops"><code>gimple_def_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005ffilter_005ffailure"><code>gimple_eh_filter_failure</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005ffilter_005fset_005ffailure"><code>gimple_eh_filter_set_failure</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005ffilter_005fset_005ftypes"><code>gimple_eh_filter_set_types</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005ffilter_005ftypes"><code>gimple_eh_filter_types</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005ffilter_005ftypes_005fptr"><code>gimple_eh_filter_types_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005fmust_005fnot_005fthrow_005ffndecl"><code>gimple_eh_must_not_throw_fndecl</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#index-gimple_005feh_005fmust_005fnot_005fthrow_005fset_005ffndecl"><code>gimple_eh_must_not_throw_set_fndecl</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER"><code>GIMPLE_EH_FILTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fexpr_005fcode"><code>gimple_expr_code</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fGOTO.html#index-GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fGOTO.html#index-gimple_005fgoto_005fdest"><code>gimple_goto_dest</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fGOTO.html#index-gimple_005fgoto_005fset_005fdest"><code>gimple_goto_set_dest</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fhas_005fmem_005fops"><code>gimple_has_mem_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fhas_005fops"><code>gimple_has_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fhas_005fvolatile_005fops"><code>gimple_has_volatile_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fLABEL.html#index-GIMPLE_005fLABEL"><code>GIMPLE_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL"><code>GIMPLE_LABEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fLABEL.html#index-gimple_005flabel_005flabel"><code>gimple_label_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL"><code>GIMPLE_LABEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fLABEL.html#index-gimple_005flabel_005fset_005flabel"><code>gimple_label_set_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL"><code>GIMPLE_LABEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005floaded_005fsyms"><code>gimple_loaded_syms</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005flocus"><code>gimple_locus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005flocus_005fempty_005fp"><code>gimple_locus_empty_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fmodified_005fp"><code>gimple_modified_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fNOP.html#index-GIMPLE_005fNOP"><code>GIMPLE_NOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP"><code>GIMPLE_NOP</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fNOP.html#index-gimple_005fnop_005fp"><code>gimple_nop_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP"><code>GIMPLE_NOP</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fno_005fwarning_005fp"><code>gimple_no_warning_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fnum_005fops"><code>gimple_num_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fnum_005fops-1"><code>gimple_num_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-gimple_005fomp_005fatomic_005fload_005flhs"><code>gimple_omp_atomic_load_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-gimple_005fomp_005fatomic_005fload_005frhs"><code>gimple_omp_atomic_load_rhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-gimple_005fomp_005fatomic_005fload_005fset_005flhs"><code>gimple_omp_atomic_load_set_lhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#index-gimple_005fomp_005fatomic_005fload_005fset_005frhs"><code>gimple_omp_atomic_load_set_rhs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#index-GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#index-gimple_005fomp_005fatomic_005fstore_005fset_005fval"><code>gimple_omp_atomic_store_set_val</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#index-gimple_005fomp_005fatomic_005fstore_005fval"><code>gimple_omp_atomic_store_val</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fbody"><code>gimple_omp_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fcontrol_005fdef"><code>gimple_omp_continue_control_def</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fcontrol_005fdef_005fptr"><code>gimple_omp_continue_control_def_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fcontrol_005fuse"><code>gimple_omp_continue_control_use</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fcontrol_005fuse_005fptr"><code>gimple_omp_continue_control_use_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fset_005fcontrol_005fdef"><code>gimple_omp_continue_set_control_def</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#index-gimple_005fomp_005fcontinue_005fset_005fcontrol_005fuse"><code>gimple_omp_continue_set_control_use</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#index-GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#index-gimple_005fomp_005fcritical_005fname"><code>gimple_omp_critical_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#index-gimple_005fomp_005fcritical_005fname_005fptr"><code>gimple_omp_critical_name_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#index-gimple_005fomp_005fcritical_005fset_005fname"><code>gimple_omp_critical_set_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fclauses"><code>gimple_omp_for_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fclauses_005fptr"><code>gimple_omp_for_clauses_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fcond"><code>gimple_omp_for_cond</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005ffinal"><code>gimple_omp_for_final</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005ffinal_005fptr"><code>gimple_omp_for_final_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fincr"><code>gimple_omp_for_incr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fincr_005fptr"><code>gimple_omp_for_incr_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005findex"><code>gimple_omp_for_index</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005findex_005fptr"><code>gimple_omp_for_index_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005finitial"><code>gimple_omp_for_initial</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005finitial_005fptr"><code>gimple_omp_for_initial_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fpre_005fbody"><code>gimple_omp_for_pre_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005fclauses"><code>gimple_omp_for_set_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005fcond"><code>gimple_omp_for_set_cond</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005ffinal"><code>gimple_omp_for_set_final</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005fincr"><code>gimple_omp_for_set_incr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005findex"><code>gimple_omp_for_set_index</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005finitial"><code>gimple_omp_for_set_initial</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#index-gimple_005fomp_005ffor_005fset_005fpre_005fbody"><code>gimple_omp_for_set_pre_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fMASTER.html#index-GIMPLE_005fOMP_005fMASTER"><code>GIMPLE_OMP_MASTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER"><code>GIMPLE_OMP_MASTER</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fORDERED.html#index-GIMPLE_005fOMP_005fORDERED"><code>GIMPLE_OMP_ORDERED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED"><code>GIMPLE_OMP_ORDERED</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fchild_005ffn"><code>gimple_omp_parallel_child_fn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fchild_005ffn_005fptr"><code>gimple_omp_parallel_child_fn_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fclauses"><code>gimple_omp_parallel_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fclauses_005fptr"><code>gimple_omp_parallel_clauses_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fcombined_005fp"><code>gimple_omp_parallel_combined_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fdata_005farg"><code>gimple_omp_parallel_data_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fdata_005farg_005fptr"><code>gimple_omp_parallel_data_arg_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fset_005fchild_005ffn"><code>gimple_omp_parallel_set_child_fn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fset_005fclauses"><code>gimple_omp_parallel_set_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fset_005fcombined_005fp"><code>gimple_omp_parallel_set_combined_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fparallel_005fset_005fdata_005farg"><code>gimple_omp_parallel_set_data_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#index-GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#index-gimple_005fomp_005freturn_005fnowait_005fp"><code>gimple_omp_return_nowait_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#index-gimple_005fomp_005freturn_005fset_005fnowait"><code>gimple_omp_return_set_nowait</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#index-GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fclauses"><code>gimple_omp_sections_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fclauses_005fptr"><code>gimple_omp_sections_clauses_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fcontrol"><code>gimple_omp_sections_control</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fcontrol_005fptr"><code>gimple_omp_sections_control_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fset_005fclauses"><code>gimple_omp_sections_set_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#index-gimple_005fomp_005fsections_005fset_005fcontrol"><code>gimple_omp_sections_set_control</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#index-gimple_005fomp_005fsection_005flast_005fp"><code>gimple_omp_section_last_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#index-gimple_005fomp_005fsection_005fset_005flast"><code>gimple_omp_section_set_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#index-gimple_005fomp_005fset_005fbody"><code>gimple_omp_set_body</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#index-GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#index-gimple_005fomp_005fsingle_005fclauses"><code>gimple_omp_single_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#index-gimple_005fomp_005fsingle_005fclauses_005fptr"><code>gimple_omp_single_clauses_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#index-gimple_005fomp_005fsingle_005fset_005fclauses"><code>gimple_omp_single_set_clauses</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fop"><code>gimple_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fop-1"><code>gimple_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-gimple_005fops"><code>gimple_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fops-1"><code>gimple_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fop_005fptr"><code>gimple_op_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005farg"><code>gimple_phi_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-gimple_005fphi_005farg-1"><code>gimple_phi_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-gimple_005fphi_005farg_005fdef"><code>gimple_phi_arg_def</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-gimple_005fphi_005farg_005fedge"><code>gimple_phi_arg_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fcapacity"><code>gimple_phi_capacity</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fnum_005fargs"><code>gimple_phi_num_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-gimple_005fphi_005fnum_005fargs-1"><code>gimple_phi_num_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fresult"><code>gimple_phi_result</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-gimple_005fphi_005fresult-1"><code>gimple_phi_result</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fresult_005fptr"><code>gimple_phi_result_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fset_005farg"><code>gimple_phi_set_arg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fPHI.html#index-gimple_005fphi_005fset_005fresult"><code>gimple_phi_set_result</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fplf"><code>gimple_plf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRESX.html#index-GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRESX.html#index-gimple_005fresx_005fregion"><code>gimple_resx_region</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRESX.html#index-gimple_005fresx_005fset_005fregion"><code>gimple_resx_set_region</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRETURN.html#index-GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRETURN.html#index-gimple_005freturn_005fretval"><code>gimple_return_retval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fRETURN.html#index-gimple_005freturn_005fset_005fretval"><code>gimple_return_set_retval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fadd_005fseq"><code>gimple_seq_add_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fadd_005fstmt"><code>gimple_seq_add_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005falloc"><code>gimple_seq_alloc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fcopy"><code>gimple_seq_copy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fdeep_005fcopy"><code>gimple_seq_deep_copy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fempty_005fp"><code>gimple_seq_empty_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005ffirst"><code>gimple_seq_first</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005finit"><code>gimple_seq_init</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005flast"><code>gimple_seq_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005freverse"><code>gimple_seq_reverse</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fset_005ffirst"><code>gimple_seq_set_first</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fset_005flast"><code>gimple_seq_set_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-gimple_005fseq_005fsingleton_005fp"><code>gimple_seq_singleton_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fblock"><code>gimple_set_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fdef_005fops"><code>gimple_set_def_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fhas_005fvolatile_005fops"><code>gimple_set_has_volatile_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005flocus"><code>gimple_set_locus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fop"><code>gimple_set_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fplf"><code>gimple_set_plf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fuse_005fops"><code>gimple_set_use_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fvdef_005fops"><code>gimple_set_vdef_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fvisited"><code>gimple_set_visited</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fset_005fvuse_005fops"><code>gimple_set_vuse_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify-1"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify-2"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify-3"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify-4"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-API.html#index-gimple_005fsimplify-5"><code>gimple_simplify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-API.html#GIMPLE-API">GIMPLE API</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tuple-representation.html#index-gimple_005fstatement_005fwith_005fops">gimple_statement_with_ops</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tuple-representation.html#Tuple-representation">Tuple representation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fstored_005fsyms"><code>gimple_stored_syms</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fdefault_005flabel"><code>gimple_switch_default_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005findex"><code>gimple_switch_index</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005flabel"><code>gimple_switch_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fnum_005flabels"><code>gimple_switch_num_labels</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fset_005fdefault_005flabel"><code>gimple_switch_set_default_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fset_005findex"><code>gimple_switch_set_index</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fset_005flabel"><code>gimple_switch_set_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fSWITCH.html#index-gimple_005fswitch_005fset_005fnum_005flabels"><code>gimple_switch_set_num_labels</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fcatch_005fis_005fcleanup"><code>gimple_try_catch_is_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fcleanup"><code>gimple_try_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005feval"><code>gimple_try_eval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fkind"><code>gimple_try_kind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fset_005fcatch_005fis_005fcleanup"><code>gimple_try_set_catch_is_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fset_005fcleanup"><code>gimple_try_set_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fTRY.html#index-gimple_005ftry_005fset_005feval"><code>gimple_try_set_eval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fuse_005fops"><code>gimple_use_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fvdef_005fops"><code>gimple_vdef_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fvisited_005fp"><code>gimple_visited_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-gimple_005fvuse_005fops"><code>gimple_vuse_ops</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-gimple_005fwce_005fcleanup"><code>gimple_wce_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-gimple_005fwce_005fcleanup_005feh_005fonly"><code>gimple_wce_cleanup_eh_only</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-gimple_005fwce_005fset_005fcleanup"><code>gimple_wce_set_cleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-gimple_005fwce_005fset_005fcleanup_005feh_005fonly"><code>gimple_wce_set_cleanup_eh_only</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#index-GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-gimplification">gimplification</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Gimplification-pass.html#index-gimplification-1">gimplification</a>:</td><td>&nbsp;</td><td valign="top"><a href="Gimplification-pass.html#Gimplification-pass">Gimplification pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-gimplifier">gimplifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE_005fASSIGN.html#index-gimplify_005fassign"><code>gimplify_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN"><code>GIMPLE_ASSIGN</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Gimplification-pass.html#index-gimplify_005fexpr"><code>gimplify_expr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Gimplification-pass.html#Gimplification-pass">Gimplification pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Gimplification-pass.html#index-gimplify_005ffunction_005ftree"><code>gimplify_function_tree</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Gimplification-pass.html#Gimplification-pass">Gimplification pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-GLOBAL_005fINIT_005fPRIORITY"><code>GLOBAL_INIT_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-global_005fregs"><code>global_regs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-GO_005fIF_005fLEGITIMATE_005fADDRESS"><code>GO_IF_LEGITIMATE_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-greater-than">greater than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-greater-than-1">greater than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-greater-than-2">greater than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fafter_005flabels"><code>gsi_after_labels</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fbb"><code>gsi_bb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fcommit_005fedge_005finserts"><code>gsi_commit_edge_inserts</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fcommit_005fedge_005finserts-1"><code>gsi_commit_edge_inserts</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fcommit_005fone_005fedge_005finsert"><code>gsi_commit_one_edge_insert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fend_005fp"><code>gsi_end_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fend_005fp-1"><code>gsi_end_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005ffor_005fstmt"><code>gsi_for_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fafter"><code>gsi_insert_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005finsert_005fafter-1"><code>gsi_insert_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fbefore"><code>gsi_insert_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005finsert_005fbefore-1"><code>gsi_insert_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fon_005fedge"><code>gsi_insert_on_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005finsert_005fon_005fedge-1"><code>gsi_insert_on_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fon_005fedge_005fimmediate"><code>gsi_insert_on_edge_immediate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fseq_005fafter"><code>gsi_insert_seq_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fseq_005fbefore"><code>gsi_insert_seq_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005finsert_005fseq_005fon_005fedge"><code>gsi_insert_seq_on_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flast"><code>gsi_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005flast-1"><code>gsi_last</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flast_005fbb"><code>gsi_last_bb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flink_005fafter"><code>gsi_link_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flink_005fbefore"><code>gsi_link_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flink_005fseq_005fafter"><code>gsi_link_seq_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005flink_005fseq_005fbefore"><code>gsi_link_seq_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fmove_005fafter"><code>gsi_move_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fmove_005fbefore"><code>gsi_move_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fmove_005fto_005fbb_005fend"><code>gsi_move_to_bb_end</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fnext"><code>gsi_next</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fnext-1"><code>gsi_next</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fone_005fbefore_005fend_005fp"><code>gsi_one_before_end_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fprev"><code>gsi_prev</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fprev-1"><code>gsi_prev</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fremove"><code>gsi_remove</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fremove-1"><code>gsi_remove</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005freplace"><code>gsi_replace</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fseq"><code>gsi_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fsplit_005fseq_005fafter"><code>gsi_split_seq_after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fsplit_005fseq_005fbefore"><code>gsi_split_seq_before</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fstart"><code>gsi_start</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-gsi_005fstart-1"><code>gsi_start</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fstart_005fbb"><code>gsi_start_bb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fstmt"><code>gsi_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-gsi_005fstmt_005fptr"><code>gsi_stmt_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-gt"><code>gt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-gt-and-attributes"><code>gt</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-gtu"><code>gtu</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-gtu-and-attributes"><code>gtu</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Information.html#index-GTY"><code>GTY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Information.html#Type-Information">Type Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-GT_005fEXPR"><code>GT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-guidelines-for-diagnostics">guidelines for diagnostics</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Options.html#index-guidelines-for-options">guidelines for options</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Options.html#Guidelines-for-Options">Guidelines for Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="User-Experience-Guidelines.html#index-guidelines_002c-user-experience">guidelines, user experience</a>:</td><td>&nbsp;</td><td valign="top"><a href="User-Experience-Guidelines.html#User-Experience-Guidelines">User Experience Guidelines</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-H">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-H-in-constraint">&lsquo;<samp>H</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-HAmode"><code>HAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-HANDLER"><code>HANDLER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-HANDLER_005fBODY"><code>HANDLER_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-HANDLER_005fPARMS"><code>HANDLER_PARMS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-HANDLE_005fPRAGMA_005fPACK_005fWITH_005fEXPANSION"><code>HANDLE_PRAGMA_PACK_WITH_EXPANSION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-hard-registers">hard registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-HARD_005fFRAME_005fPOINTER_005fIS_005fARG_005fPOINTER"><code>HARD_FRAME_POINTER_IS_ARG_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-HARD_005fFRAME_005fPOINTER_005fIS_005fFRAME_005fPOINTER"><code>HARD_FRAME_POINTER_IS_FRAME_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-HARD_005fFRAME_005fPOINTER_005fREGNUM"><code>HARD_FRAME_POINTER_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Caller-Saves.html#index-HARD_005fREGNO_005fCALLER_005fSAVE_005fMODE"><code>HARD_REGNO_CALLER_SAVE_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Caller-Saves.html#Caller-Saves">Caller Saves</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-HARD_005fREGNO_005fNREGS_005fHAS_005fPADDING"><code>HARD_REGNO_NREGS_HAS_PADDING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-HARD_005fREGNO_005fNREGS_005fWITH_005fPADDING"><code>HARD_REGNO_NREGS_WITH_PADDING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-HARD_005fREGNO_005fRENAME_005fOK"><code>HARD_REGNO_RENAME_OK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-HAS_005fINIT_005fSECTION"><code>HAS_INIT_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-HAS_005fLONG_005fCOND_005fBRANCH"><code>HAS_LONG_COND_BRANCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-HAS_005fLONG_005fUNCOND_005fBRANCH"><code>HAS_LONG_UNCOND_BRANCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-HAVE_005fDOS_005fBASED_005fFILE_005fSYSTEM"><code>HAVE_DOS_BASED_FILE_SYSTEM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPOST_005fDECREMENT"><code>HAVE_POST_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPOST_005fINCREMENT"><code>HAVE_POST_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPOST_005fMODIFY_005fDISP"><code>HAVE_POST_MODIFY_DISP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPOST_005fMODIFY_005fREG"><code>HAVE_POST_MODIFY_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPRE_005fDECREMENT"><code>HAVE_PRE_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPRE_005fINCREMENT"><code>HAVE_PRE_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPRE_005fMODIFY_005fDISP"><code>HAVE_PRE_MODIFY_DISP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-HAVE_005fPRE_005fMODIFY_005fREG"><code>HAVE_PRE_MODIFY_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-HCmode"><code>HCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-HFmode"><code>HFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-high"><code>high</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-high_002dpart-multiplication">high-part multiplication</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-HImode"><code>HImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-HImode_002c-in-insn"><code>HImode</code>, in <code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-HONOR_005fREG_005fALLOC_005fORDER"><code>HONOR_REG_ALLOC_ORDER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Config.html#index-host-configuration">host configuration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Config.html#Host-Config">Host Config</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-host-functions">host functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-host-hooks">host hooks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Fragment.html#index-host-makefile-fragment">host makefile fragment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Fragment.html#Host-Fragment">Host Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-HOST_005fBIT_005fBUCKET"><code>HOST_BIT_BUCKET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-HOST_005fEXECUTABLE_005fSUFFIX"><code>HOST_EXECUTABLE_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-HOST_005fHOOKS_005fEXTRA_005fSIGNALS"><code>HOST_HOOKS_EXTRA_SIGNALS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-HOST_005fHOOKS_005fGT_005fPCH_005fALLOC_005fGRANULARITY"><code>HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-HOST_005fHOOKS_005fGT_005fPCH_005fGET_005fADDRESS"><code>HOST_HOOKS_GT_PCH_GET_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Common.html#index-HOST_005fHOOKS_005fGT_005fPCH_005fUSE_005fADDRESS"><code>HOST_HOOKS_GT_PCH_USE_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Common.html#Host-Common">Host Common</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-HOST_005fLACKS_005fINODE_005fNUMBERS"><code>HOST_LACKS_INODE_NUMBERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-HOST_005fLONG_005fFORMAT"><code>HOST_LONG_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-HOST_005fLONG_005fLONG_005fFORMAT"><code>HOST_LONG_LONG_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-HOST_005fOBJECT_005fSUFFIX"><code>HOST_OBJECT_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-HOST_005fPTR_005fPRINTF"><code>HOST_PTR_PRINTF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-HOT_005fTEXT_005fSECTION_005fNAME"><code>HOT_TEXT_SECTION_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-HQmode"><code>HQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-i-in-constraint">&lsquo;<samp>i</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-I-in-constraint">&lsquo;<samp>I</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-identifier">identifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-IDENTIFIER_005fLENGTH"><code>IDENTIFIER_LENGTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-IDENTIFIER_005fNODE"><code>IDENTIFIER_NODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-IDENTIFIER_005fOPNAME_005fP"><code>IDENTIFIER_OPNAME_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-IDENTIFIER_005fPOINTER"><code>IDENTIFIER_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-IDENTIFIER_005fTYPENAME_005fP"><code>IDENTIFIER_TYPENAME_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Decimal-float-library-routines.html#index-IEEE-754_002d2008">IEEE 754-2008</a>:</td><td>&nbsp;</td><td valign="top"><a href="Decimal-float-library-routines.html#Decimal-float-library-routines">Decimal float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMACHDEP_005fINIT"><code>IFCVT_MACHDEP_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMODIFY_005fCANCEL"><code>IFCVT_MODIFY_CANCEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMODIFY_005fFINAL"><code>IFCVT_MODIFY_FINAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMODIFY_005fINSN"><code>IFCVT_MODIFY_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMODIFY_005fMULTIPLE_005fTESTS"><code>IFCVT_MODIFY_MULTIPLE_TESTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-IFCVT_005fMODIFY_005fTESTS"><code>IFCVT_MODIFY_TESTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-IF_005fCOND"><code>IF_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-IF_005fSTMT"><code>IF_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-if_005fthen_005felse"><code>if_then_else</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-if_005fthen_005felse-and-attributes"><code>if_then_else</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-if_005fthen_005felse-usage"><code>if_then_else</code> usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-IMAGPART_005fEXPR"><code>IMAGPART_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-Immediate-Uses">Immediate Uses</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-immediate_005foperand"><code>immediate_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-IMMEDIATE_005fPREFIX"><code>IMMEDIATE_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Including-Patterns.html#index-include"><code>include</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Including-Patterns.html#Including-Patterns">Including Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-INCLUDE_005fDEFAULTS"><code>INCLUDE_DEFAULTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-inclusive_002dor_002c-bitwise">inclusive-or, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-INCOMING_005fFRAME_005fSP_005fOFFSET"><code>INCOMING_FRAME_SP_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-INCOMING_005fREGNO"><code>INCOMING_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-INCOMING_005fREG_005fPARM_005fSTACK_005fSPACE"><code>INCOMING_REG_PARM_STACK_SPACE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-INCOMING_005fRETURN_005fADDR_005fRTX"><code>INCOMING_RETURN_ADDR_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-INCOMING_005fSTACK_005fBOUNDARY"><code>INCOMING_STACK_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-INDEX_005fREG_005fCLASS"><code>INDEX_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-indirect_005fjump-instruction-pattern"><code>indirect_jump</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-indirect_005foperand"><code>indirect_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-INDIRECT_005fREF"><code>INDIRECT_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-initialization-routines">initialization routines</a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Elimination.html#index-INITIAL_005fELIMINATION_005fOFFSET"><code>INITIAL_ELIMINATION_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Elimination.html#Elimination">Elimination</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-INITIAL_005fFRAME_005fADDRESS_005fRTX"><code>INITIAL_FRAME_ADDRESS_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-INIT_005fARRAY_005fSECTION_005fASM_005fOP"><code>INIT_ARRAY_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-INIT_005fCUMULATIVE_005fARGS"><code>INIT_CUMULATIVE_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-INIT_005fCUMULATIVE_005fINCOMING_005fARGS"><code>INIT_CUMULATIVE_INCOMING_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-INIT_005fCUMULATIVE_005fLIBCALL_005fARGS"><code>INIT_CUMULATIVE_LIBCALL_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-INIT_005fENVIRONMENT"><code>INIT_ENVIRONMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Per_002dFunction-Data.html#index-INIT_005fEXPANDERS"><code>INIT_EXPANDERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Per_002dFunction-Data.html#Per_002dFunction-Data">Per-Function Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-INIT_005fEXPR"><code>INIT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Per_002dFunction-Data.html#index-init_005fmachine_005fstatus"><code>init_machine_status</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Per_002dFunction-Data.html#Per_002dFunction-Data">Per-Function Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-init_005fone_005flibfunc"><code>init_one_libfunc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-INIT_005fSECTION_005fASM_005fOP"><code>INIT_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-INIT_005fSECTION_005fASM_005fOP-1"><code>INIT_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-inlining">inlining</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-insert_005finsn_005fon_005fedge"><code>insert_insn_on_edge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-insn"><code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002ff"><code>insn</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002fj"><code>insn</code> and &lsquo;<samp>/j</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002fs"><code>insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002fs-1"><code>insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002fu"><code>insn</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-insn-and-_002fv"><code>insn</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Attributes.html#index-insn-attributes">insn attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-insn-canonicalization">insn canonicalization</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Including-Patterns.html#index-insn-includes">insn includes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Including-Patterns.html#Including-Patterns">Including Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-insn-lengths_002c-computing">insn lengths, computing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-insn-notes_002c-notes">insn notes, notes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-insn-splitting">insn splitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Defining-Attributes.html#index-insn_002dattr_002eh"><code>insn-attr.h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Defining-Attributes.html#Defining-Attributes">Defining Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-insns">insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-insns_002c-generating">insns, generating</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-insns_002c-recognizing">insns, recognizing</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-INSN_005fANNULLED_005fBRANCH_005fP"><code>INSN_ANNULLED_BRANCH_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-INSN_005fCODE"><code>INSN_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-INSN_005fDELETED_005fP"><code>INSN_DELETED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-INSN_005fFROM_005fTARGET_005fP"><code>INSN_FROM_TARGET_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-insn_005flist"><code>insn_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-INSN_005fREFERENCES_005fARE_005fDELAYED"><code>INSN_REFERENCES_ARE_DELAYED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-INSN_005fSETS_005fARE_005fDELAYED"><code>INSN_SETS_ARE_DELAYED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-INSN_005fUID"><code>INSN_UID</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-INSN_005fVAR_005fLOCATION"><code>INSN_VAR_LOCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Attributes.html#index-instruction-attributes">instruction attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-instruction-latency-time">instruction latency time</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-instruction-latency-time-1">instruction latency time</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-instruction-latency-time-2">instruction latency time</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-instruction-patterns">instruction patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-instruction-splitting">instruction splitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Instructions.html#index-instructions_002c-RTL-SSA">instructions, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">RTL SSA Instructions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-insv-instruction-pattern"><code>insv</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-insvm-instruction-pattern"><code>insv<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-insvmisalignm-instruction-pattern"><code>insvmisalign<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Int-Iterators.html#index-int-iterators-in-_002emd-files">int iterators in <samp>.md</samp> files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Int-Iterators.html#Int-Iterators">Int Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT16_005fTYPE"><code>INT16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT32_005fTYPE"><code>INT32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT64_005fTYPE"><code>INT64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT8_005fTYPE"><code>INT8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-INTEGER_005fCST"><code>INTEGER_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-INTEGER_005fTYPE"><code>INTEGER_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="IPA-passes.html#index-inter_002dprocedural-optimization-passes">inter-procedural optimization passes</a>:</td><td>&nbsp;</td><td valign="top"><a href="IPA-passes.html#IPA-passes">IPA passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dependent-Patterns.html#index-Interdependence-of-Patterns">Interdependence of Patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dependent-Patterns.html#Dependent-Patterns">Dependent Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-interfacing-to-GCC-output">interfacing to GCC output</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-interlock-delays">interlock delays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-intermediate-representation-lowering">intermediate representation lowering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INTMAX_005fTYPE"><code>INTMAX_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INTPTR_005fTYPE"><code>INTPTR_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="index.html#index-introduction">introduction</a>:</td><td>&nbsp;</td><td valign="top"><a href="index.html#Top">Top</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fFAST16_005fTYPE"><code>INT_FAST16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fFAST32_005fTYPE"><code>INT_FAST32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fFAST64_005fTYPE"><code>INT_FAST64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fFAST8_005fTYPE"><code>INT_FAST8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fLEAST16_005fTYPE"><code>INT_LEAST16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fLEAST32_005fTYPE"><code>INT_LEAST32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fLEAST64_005fTYPE"><code>INT_LEAST64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fLEAST8_005fTYPE"><code>INT_LEAST8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-INT_005fTYPE_005fSIZE"><code>INT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-INVOKE_005f_005fmain"><code>INVOKE__main</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-in_005fstruct"><code>in_struct</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-in_005fstruct_002c-in-code_005flabel-and-note"><code>in_struct</code>, in <code>code_label</code> and <code>note</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-in_005fstruct_002c-in-insn-and-jump_005finsn-and-call_005finsn"><code>in_struct</code>, in <code>insn</code> and <code>jump_insn</code> and <code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-in_005fstruct_002c-in-insn_002c-call_005finsn_002c-jump_005finsn-and-jump_005ftable_005fdata"><code>in_struct</code>, in <code>insn</code>, <code>call_insn</code>, <code>jump_insn</code> and <code>jump_table_data</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-in_005fstruct_002c-in-subreg"><code>in_struct</code>, in <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ior"><code>ior</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-ior-and-attributes"><code>ior</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-ior_002c-canonicalization-of"><code>ior</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-iorm3-instruction-pattern"><code>ior<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="IPA-passes.html#index-IPA-passes">IPA passes</a>:</td><td>&nbsp;</td><td valign="top"><a href="IPA-passes.html#IPA-passes">IPA passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-IRA_005fHARD_005fREGNO_005fADD_005fCOST_005fMULTIPLIER"><code>IRA_HARD_REGNO_ADD_COST_MULTIPLIER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-issignalingm2-instruction-pattern"><code>issignaling<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-is_005fa"><code>is_a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-IS_005fASM_005fLOGICAL_005fLINE_005fSEPARATOR"><code>IS_ASM_LOGICAL_LINE_SEPARATOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005faddressable"><code>is_gimple_addressable</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fasm_005fval"><code>is_gimple_asm_val</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fassign"><code>is_gimple_assign</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fcall"><code>is_gimple_call</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fcall_005faddr"><code>is_gimple_call_addr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fconstant"><code>is_gimple_constant</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fdebug"><code>is_gimple_debug</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fip_005finvariant"><code>is_gimple_ip_invariant</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fip_005finvariant_005faddress"><code>is_gimple_ip_invariant_address</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fmem_005fref_005faddr"><code>is_gimple_mem_ref_addr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fmin_005finvariant"><code>is_gimple_min_invariant</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fomp"><code>is_gimple_omp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-is_005fgimple_005fval"><code>is_gimple_val</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Iterators.html#index-iterators-in-_002emd-files">iterators in <samp>.md</samp> files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Iterators.html#Iterators">Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-evolutions.html#index-IV-analysis-on-GIMPLE">IV analysis on GIMPLE</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-evolutions.html#Scalar-evolutions">Scalar evolutions</a></td></tr>
+<tr><td></td><td valign="top"><a href="loop_002div.html#index-IV-analysis-on-RTL">IV analysis on RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="loop_002div.html#loop_002div">loop-iv</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-JMP_005fBUF_005fSIZE"><code>JMP_BUF_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump"><code>jump</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-jump-instruction-pattern"><code>jump</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Jump-Patterns.html#index-jump-instruction-patterns">jump instruction patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Jump-Patterns.html#Jump-Patterns">Jump Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-jump-instructions-and-set">jump instructions and <code>set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_002c-in-call_005finsn"><code>jump</code>, in <code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_002c-in-insn"><code>jump</code>, in <code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_002c-in-mem"><code>jump</code>, in <code>mem</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Jumps.html#index-Jumps">Jumps</a>:</td><td>&nbsp;</td><td valign="top"><a href="Jumps.html#Jumps">Jumps</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-JUMP_005fALIGN"><code>JUMP_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-jump_005finsn"><code>jump_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002ff"><code>jump_insn</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002fj"><code>jump_insn</code> and &lsquo;<samp>/j</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002fs"><code>jump_insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002fs-1"><code>jump_insn</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002fu"><code>jump_insn</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005finsn-and-_002fv"><code>jump_insn</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-JUMP_005fLABEL"><code>JUMP_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-JUMP_005fTABLES_005fIN_005fTEXT_005fSECTION"><code>JUMP_TABLES_IN_TEXT_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-jump_005ftable_005fdata"><code>jump_table_data</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005ftable_005fdata-and-_002fs"><code>jump_table_data</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-jump_005ftable_005fdata-and-_002fv"><code>jump_table_data</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-LABEL_005fALIGN"><code>LABEL_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-LABEL_005fALIGN_005fAFTER_005fBARRIER"><code>LABEL_ALIGN_AFTER_BARRIER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-LABEL_005fALTERNATE_005fNAME"><code>LABEL_ALTERNATE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-LABEL_005fALT_005fENTRY_005fP"><code>LABEL_ALT_ENTRY_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-LABEL_005fDECL"><code>LABEL_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-LABEL_005fKIND"><code>LABEL_KIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-LABEL_005fNUSES"><code>LABEL_NUSES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-LABEL_005fPRESERVE_005fP"><code>LABEL_PRESERVE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-label_005fref"><code>label_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-label_005fref-and-_002fv"><code>label_ref</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-label_005fref_002c-RTL-sharing"><code>label_ref</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-LABEL_005fREF_005fNONLOCAL_005fP"><code>LABEL_REF_NONLOCAL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Language_002ddependent-trees.html#index-language_002ddependent-trees">language-dependent trees</a>:</td><td>&nbsp;</td><td valign="top"><a href="Language_002ddependent-trees.html#Language_002ddependent-trees">Language-dependent trees</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-language_002dindependent-intermediate-representation">language-independent intermediate representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Gimplification-pass.html#index-lang_005fhooks_002egimplify_005fexpr"><code>lang_hooks.gimplify_expr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Gimplification-pass.html#Gimplification-pass">Gimplification pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-lang_005fhooks_002eparse_005ffile"><code>lang_hooks.parse_file</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-large-return-values">large return values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Registers.html#index-LAST_005fSTACK_005fREG"><code>LAST_STACK_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Registers.html#Stack-Registers">Stack Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-LAST_005fVIRTUAL_005fREGISTER"><code>LAST_VIRTUAL_REGISTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Late-IPA-passes.html#index-late-IPA-passes">late IPA passes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Late-IPA-passes.html#Late-IPA-passes">Late IPA passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-lceilmn2"><code>lceil<var>m</var><var>n</var>2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="LCSSA.html#index-LCSSA">LCSSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="LCSSA.html#LCSSA">LCSSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-LDD_005fSUFFIX"><code>LDD_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ldexpm3-instruction-pattern"><code>ldexp<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-LD_005fFINI_005fSWITCH"><code>LD_FINI_SWITCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-LD_005fINIT_005fSWITCH"><code>LD_INIT_SWITCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-le"><code>le</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-le-and-attributes"><code>le</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-leaf-functions">leaf functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-leaf_005ffunction_005fp"><code>leaf_function_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-LEAF_005fREGISTERS"><code>LEAF_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Leaf-Functions.html#index-LEAF_005fREG_005fREMAP"><code>LEAF_REG_REMAP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-left-rotate">left rotate</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-left-shift">left shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="PIC.html#index-LEGITIMATE_005fPIC_005fOPERAND_005fP"><code>LEGITIMATE_PIC_OPERAND_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PIC.html#PIC">PIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-LEGITIMIZE_005fRELOAD_005fADDRESS"><code>LEGITIMIZE_RELOAD_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-length"><code>length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-len_005fload_005fm-instruction-pattern"><code>len_load_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-len_005fstore_005fm-instruction-pattern"><code>len_store_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-less-than">less than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-less-than-or-equal">less than or equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-leu"><code>leu</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-leu-and-attributes"><code>leu</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-LE_005fEXPR"><code>LE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-lfloormn2"><code>lfloor<var>m</var><var>n</var>2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-LIB2FUNCS_005fEXTRA"><code>LIB2FUNCS_EXTRA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-LIBCALL_005fVALUE"><code>LIBCALL_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-libgcc_002ea"><samp>libgcc.a</samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-LIBGCC2_005fCFLAGS"><code>LIBGCC2_CFLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LIBGCC2_005fGNU_005fPREFIX"><code>LIBGCC2_GNU_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-LIBGCC2_005fUNWIND_005fATTRIBUTE"><code>LIBGCC2_UNWIND_ATTRIBUTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LIBGCC_005fSPEC"><code>LIBGCC_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-library-subroutine-names">library subroutine names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-LIBRARY_005fPATH_005fENV"><code>LIBRARY_PATH_ENV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LIB_005fSPEC"><code>LIB_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-LIMIT_005fRELOAD_005fCLASS"><code>LIMIT_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LINK_005fCOMMAND_005fSPEC"><code>LINK_COMMAND_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LINK_005fEH_005fSPEC"><code>LINK_EH_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LINK_005fGCC_005fC_005fSEQUENCE_005fSPEC"><code>LINK_GCC_C_SEQUENCE_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LINK_005fLIBGCC_005fSPECIAL_005f1"><code>LINK_LIBGCC_SPECIAL_1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LINK_005fSPEC"><code>LINK_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-list">list</a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Liveness-information.html#index-Liveness-representation">Liveness representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Liveness-information.html#Liveness-information">Liveness information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-load-address-instruction">load address instruction</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-LOAD_005fEXTEND_005fOP"><code>LOAD_EXTEND_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-load_005fmultiple-instruction-pattern"><code>load_multiple</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-Local-Register-Allocator-_0028LRA_0029">Local Register Allocator (LRA)</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-LOCAL_005fALIGNMENT"><code>LOCAL_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-LOCAL_005fCLASS_005fP"><code>LOCAL_CLASS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-LOCAL_005fDECL_005fALIGNMENT"><code>LOCAL_DECL_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-LOCAL_005fINCLUDE_005fDIR"><code>LOCAL_INCLUDE_DIR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-LOCAL_005fLABEL_005fPREFIX"><code>LOCAL_LABEL_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-LOCAL_005fREGNO"><code>LOCAL_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-location-information">location information</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-log10m2-instruction-pattern"><code>log10<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-log1pm2-instruction-pattern"><code>log1p<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-log2m2-instruction-pattern"><code>log2<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-logbm2-instruction-pattern"><code>logb<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Logical-Operators.html#index-Logical-Operators">Logical Operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Logical-Operators.html#Logical-Operators">Logical Operators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-logical_002dand_002c-bitwise">logical-and, bitwise</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-LOGICAL_005fOP_005fNON_005fSHORT_005fCIRCUIT"><code>LOGICAL_OP_NON_SHORT_CIRCUIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-logm2-instruction-pattern"><code>log<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-longjmp-and-automatic-variables"><code>longjmp</code> and automatic variables</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fACCUM_005fTYPE_005fSIZE"><code>LONG_ACCUM_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fDOUBLE_005fTYPE_005fSIZE"><code>LONG_DOUBLE_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fFRACT_005fTYPE_005fSIZE"><code>LONG_FRACT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fLONG_005fACCUM_005fTYPE_005fSIZE"><code>LONG_LONG_ACCUM_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fLONG_005fFRACT_005fTYPE_005fSIZE"><code>LONG_LONG_FRACT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fLONG_005fTYPE_005fSIZE"><code>LONG_LONG_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-LONG_005fTYPE_005fSIZE"><code>LONG_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-representation.html#index-Loop-analysis">Loop analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-representation.html#Loop-representation">Loop representation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-manipulation.html#index-Loop-manipulation">Loop manipulation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-manipulation.html#Loop-manipulation">Loop manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-querying.html#index-Loop-querying">Loop querying</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-querying.html#Loop-querying">Loop querying</a></td></tr>
+<tr><td></td><td valign="top"><a href="Loop-representation.html#index-Loop-representation">Loop representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Loop-representation.html#Loop-representation">Loop representation</a></td></tr>
+<tr><td></td><td valign="top"><a href="LCSSA.html#index-Loop_002dclosed-SSA-form">Loop-closed SSA form</a>:</td><td>&nbsp;</td><td valign="top"><a href="LCSSA.html#LCSSA">LCSSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Looping-Patterns.html#index-looping-instruction-patterns">looping instruction patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Looping-Patterns.html#Looping-Patterns">Looping Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Alignment-Output.html#index-LOOP_005fALIGN"><code>LOOP_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Alignment-Output.html#Alignment-Output">Alignment Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-LOOP_005fEXPR"><code>LOOP_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-lowering_002c-language_002ddependent-intermediate-representation">lowering, language-dependent intermediate representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-lo_005fsum"><code>lo_sum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-lrintmn2"><code>lrint<var>m</var><var>n</var>2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-lroundmn2"><code>lround<var>m</var><var>n</var>2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-lshiftrt"><code>lshiftrt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-lshiftrt-and-attributes"><code>lshiftrt</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-LSHIFT_005fEXPR"><code>LSHIFT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-lshrm3-instruction-pattern"><code>lshr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-lt"><code>lt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-lt-and-attributes"><code>lt</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-LTGT_005fEXPR"><code>LTGT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="LTO.html#index-lto">lto</a>:</td><td>&nbsp;</td><td valign="top"><a href="LTO.html#LTO">LTO</a></td></tr>
+<tr><td></td><td valign="top"><a href="LTO.html#index-ltrans">ltrans</a>:</td><td>&nbsp;</td><td valign="top"><a href="LTO.html#LTO">LTO</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-ltu"><code>ltu</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-LT_005fEXPR"><code>LT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-m-in-constraint">&lsquo;<samp>m</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-machine-attributes">machine attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Macros.html#index-machine-description-macros">machine description macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Macros.html#Target-Macros">Target Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Desc.html#index-machine-descriptions">machine descriptions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Desc.html#Machine-Desc">Machine Desc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-machine-mode-conversions">machine mode conversions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-machine-mode-wrapper-classes">machine mode wrapper classes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-machine-modes">machine modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Constraints.html#index-machine-specific-constraints">machine specific constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Constraints.html#Machine-Constraints">Machine Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-machine_002dindependent-predicates">machine-independent predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-machine_005fmode"><code>machine_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-MACH_005fDEP_005fSECTION_005fASM_005fFLAG"><code>MACH_DEP_SECTION_ASM_FLAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Macros.html#index-macros_002c-target-description">macros, target description</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Macros.html#Target-Macros">Target Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-maddmn4-instruction-pattern"><code>madd<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Fragments.html#index-makefile-fragment">makefile fragment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Fragments.html#Fragments">Fragments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Makefile.html#index-makefile-targets">makefile targets</a>:</td><td>&nbsp;</td><td valign="top"><a href="Makefile.html#Makefile">Makefile</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-MAKE_005fDECL_005fONE_005fONLY"><code>MAKE_DECL_ONE_ONLY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expander-Definitions.html#index-make_005fsafe_005ffrom"><code>make_safe_from</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MALLOC_005fABI_005fALIGNMENT"><code>MALLOC_ABI_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="GGC-Roots.html#index-marking-roots">marking roots</a>:</td><td>&nbsp;</td><td valign="top"><a href="GGC-Roots.html#GGC-Roots">GGC Roots</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-maskloadmn-instruction-pattern"><code>maskload<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-maskstoremn-instruction-pattern"><code>maskstore<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mask_005ffold_005fleft_005fplus_005fm-instruction-pattern"><code>mask_fold_left_plus_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mask_005fgather_005floadmn-instruction-pattern"><code>mask_gather_load<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-MASK_005fRETURN_005fADDR"><code>MASK_RETURN_ADDR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mask_005fscatter_005fstoremn-instruction-pattern"><code>mask_scatter_store<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Match-and-Simplify.html#index-Match-and-Simplify">Match and Simplify</a>:</td><td>&nbsp;</td><td valign="top"><a href="Match-and-Simplify.html#Match-and-Simplify">Match and Simplify</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-matching-constraint">matching constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-matching-operands">matching operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005fdup"><code>match_dup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole2.html#index-match_005fdup-1"><code>match_dup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole2.html#define_005fpeephole2">define_peephole2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-match_005fdup-and-attributes"><code>match_dup</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005foperand"><code>match_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-match_005foperand-and-attributes"><code>match_operand</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005foperator"><code>match_operator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005fop_005fdup"><code>match_op_dup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005fparallel"><code>match_parallel</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005fpar_005fdup"><code>match_par_dup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-match_005fscratch"><code>match_scratch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole2.html#index-match_005fscratch-1"><code>match_scratch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole2.html#define_005fpeephole2">define_peephole2</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-match_005ftest-and-attributes"><code>match_test</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-math-library">math library</a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-math_002c-in-RTL">math, in RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-matherr"><code>matherr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-MATH_005fLIBRARY"><code>MATH_LIBRARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-maxm3-instruction-pattern"><code>max<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MAX_005fBITSIZE_005fMODE_005fANY_005fINT"><code>MAX_BITSIZE_MODE_ANY_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MAX_005fBITSIZE_005fMODE_005fANY_005fMODE"><code>MAX_BITSIZE_MODE_ANY_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MAX_005fBITS_005fPER_005fWORD"><code>MAX_BITS_PER_WORD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-MAX_005fCONDITIONAL_005fEXECUTE"><code>MAX_CONDITIONAL_EXECUTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MAX_005fFIXED_005fMODE_005fSIZE"><code>MAX_FIXED_MODE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-MAX_005fMOVE_005fMAX"><code>MAX_MOVE_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MAX_005fOFILE_005fALIGNMENT"><code>MAX_OFILE_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-MAX_005fREGS_005fPER_005fADDRESS"><code>MAX_REGS_PER_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MAX_005fSTACK_005fALIGNMENT"><code>MAX_STACK_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-maybe_005fundef"><code>maybe_undef</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-may_005ftrap_005fp_002c-tree_005fcould_005ftrap_005fp"><code>may_trap_p, tree_could_trap_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-mcount"><code>mcount</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-MD_005fEXEC_005fPREFIX"><code>MD_EXEC_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-MD_005fFALLBACK_005fFRAME_005fSTATE_005fFOR"><code>MD_FALLBACK_FRAME_STATE_FOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-MD_005fHANDLE_005fUNWABI"><code>MD_HANDLE_UNWABI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-MD_005fSTARTFILE_005fPREFIX"><code>MD_STARTFILE_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-MD_005fSTARTFILE_005fPREFIX_005f1"><code>MD_STARTFILE_PREFIX_1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-mem"><code>mem</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-mem-and-_002fc"><code>mem</code> and &lsquo;<samp>/c</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-mem-and-_002ff"><code>mem</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-mem-and-_002fj"><code>mem</code> and &lsquo;<samp>/j</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-mem-and-_002fu"><code>mem</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-mem-and-_002fv"><code>mem</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-mem_002c-RTL-sharing"><code>mem</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Memory-model.html#index-memory-model">memory model</a>:</td><td>&nbsp;</td><td valign="top"><a href="Memory-model.html#Memory-model">Memory model</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-memory-reference_002c-nonoffsettable">memory reference, nonoffsettable</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-memory-references-in-constraints">memory references in constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-memory_005fbarrier-instruction-pattern"><code>memory_barrier</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-memory_005fblockage-instruction-pattern"><code>memory_blockage</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-MEMORY_005fMOVE_005fCOST"><code>MEMORY_MOVE_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-memory_005foperand"><code>memory_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fADDR_005fSPACE"><code>MEM_ADDR_SPACE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fALIAS_005fSET"><code>MEM_ALIAS_SET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fALIGN"><code>MEM_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fEXPR"><code>MEM_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-MEM_005fKEEP_005fALIAS_005fSET_005fP"><code>MEM_KEEP_ALIAS_SET_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-MEM_005fNOTRAP_005fP"><code>MEM_NOTRAP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fOFFSET"><code>MEM_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fOFFSET_005fKNOWN_005fP"><code>MEM_OFFSET_KNOWN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-MEM_005fPOINTER"><code>MEM_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-MEM_005fREADONLY_005fP"><code>MEM_READONLY_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-MEM_005fREF"><code>MEM_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fSIZE"><code>MEM_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-MEM_005fSIZE_005fKNOWN_005fP"><code>MEM_SIZE_KNOWN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mem_005fthread_005ffence-instruction-pattern"><code>mem_thread_fence</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-MEM_005fVOLATILE_005fP"><code>MEM_VOLATILE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-METHOD_005fTYPE"><code>METHOD_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MINIMUM_005fALIGNMENT"><code>MINIMUM_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MINIMUM_005fATOMIC_005fALIGNMENT"><code>MINIMUM_ATOMIC_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-minm3-instruction-pattern"><code>min<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-minus"><code>minus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-minus-and-attributes"><code>minus</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-minus_002c-canonicalization-of"><code>minus</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-MINUS_005fEXPR"><code>MINUS_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-MIN_005fUNITS_005fPER_005fWORD"><code>MIN_UNITS_PER_WORD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="MIPS-Coprocessors.html#index-MIPS-coprocessor_002ddefinition-macros">MIPS coprocessor-definition macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="MIPS-Coprocessors.html#MIPS-Coprocessors">MIPS Coprocessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-Register-Hooks.html#index-miscellaneous-register-hooks">miscellaneous register hooks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks">Miscellaneous Register Hooks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mnemonic-Attribute.html#index-mnemonic-attribute">mnemonic attribute</a>:</td><td>&nbsp;</td><td valign="top"><a href="Mnemonic-Attribute.html#Mnemonic-Attribute">Mnemonic Attribute</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-mod"><code>mod</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-mod-and-attributes"><code>mod</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-mode-classes">mode classes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Iterators.html#index-mode-iterators-in-_002emd-files">mode iterators in <samp>.md</samp> files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Iterators.html#Mode-Iterators">Mode Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-mode-switching">mode switching</a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fACCUM"><code>MODE_ACCUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-MODE_005fBASE_005fREG_005fCLASS"><code>MODE_BASE_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-MODE_005fBASE_005fREG_005fREG_005fCLASS"><code>MODE_BASE_REG_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fCC"><code>MODE_CC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-MODE_005fCC-1"><code>MODE_CC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-MODE_005fCODE_005fBASE_005fREG_005fCLASS"><code>MODE_CODE_BASE_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fCOMPLEX_005fFLOAT"><code>MODE_COMPLEX_FLOAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fCOMPLEX_005fINT"><code>MODE_COMPLEX_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fDECIMAL_005fFLOAT"><code>MODE_DECIMAL_FLOAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fFLOAT"><code>MODE_FLOAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fFRACT"><code>MODE_FRACT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fINT"><code>MODE_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fOPAQUE"><code>MODE_OPAQUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fPARTIAL_005fINT"><code>MODE_PARTIAL_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fPOINTER_005fBOUNDS"><code>MODE_POINTER_BOUNDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fRANDOM"><code>MODE_RANDOM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fUACCUM"><code>MODE_UACCUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-MODE_005fUFRACT"><code>MODE_UFRACT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Modifiers.html#index-modifiers-in-constraints">modifiers in constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Modifiers.html#Modifiers">Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-MODIFY_005fEXPR"><code>MODIFY_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-modm3-instruction-pattern"><code>mod<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-modulo-scheduling">modulo scheduling</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-MOVE_005fMAX"><code>MOVE_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-MOVE_005fMAX_005fPIECES"><code>MOVE_MAX_PIECES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-MOVE_005fRATIO"><code>MOVE_RATIO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movm-instruction-pattern"><code>mov<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movmemm-instruction-pattern"><code>movmem<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movmisalignm-instruction-pattern"><code>movmisalign<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movmodecc-instruction-pattern"><code>mov<var>mode</var>cc</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movstr-instruction-pattern"><code>movstr</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-movstrictm-instruction-pattern"><code>movstrict<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-msubmn4-instruction-pattern"><code>msub<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mulhisi3-instruction-pattern"><code>mulhisi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mulm3-instruction-pattern"><code>mul<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mulqihi3-instruction-pattern"><code>mulqihi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mulsidi3-instruction-pattern"><code>mulsidi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-mult"><code>mult</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-mult-and-attributes"><code>mult</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-mult_002c-canonicalization-of"><code>mult</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-mult_002c-canonicalization-of-1"><code>mult</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTIARCH_005fDIRNAME"><code>MULTIARCH_DIRNAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-MULTILIB_005fDEFAULTS"><code>MULTILIB_DEFAULTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fDIRNAMES"><code>MULTILIB_DIRNAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fEXCEPTIONS"><code>MULTILIB_EXCEPTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fEXTRA_005fOPTS"><code>MULTILIB_EXTRA_OPTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fMATCHES"><code>MULTILIB_MATCHES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fOPTIONS"><code>MULTILIB_OPTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fOSDIRNAMES"><code>MULTILIB_OSDIRNAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fREQUIRED"><code>MULTILIB_REQUIRED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-MULTILIB_005fREUSE"><code>MULTILIB_REUSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-multiple-alternative-constraints">multiple alternative constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-MULTIPLE_005fSYMBOL_005fSPACES"><code>MULTIPLE_SYMBOL_SPACES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-multiplication">multiplication</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-multiplication-high-part">multiplication high part</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-multiplication-with-signed-saturation">multiplication with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-multiplication-with-unsigned-saturation">multiplication with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-MULT_005fEXPR"><code>MULT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-MULT_005fHIGHPART_005fEXPR"><code>MULT_HIGHPART_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-mulvm4-instruction-pattern"><code>mulv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-n-in-constraint">&lsquo;<samp>n</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Identifiers.html#index-name">name</a>:</td><td>&nbsp;</td><td valign="top"><a href="Identifiers.html#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-named-address-spaces">named address spaces</a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-named-patterns-and-conditions">named patterns and conditions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-names_002c-pattern">names, pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-namespace_002c-scope">namespace, scope</a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-NAMESPACE_005fDECL"><code>NAMESPACE_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Namespaces.html#index-NAMESPACE_005fDECL-1"><code>NAMESPACE_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Namespaces.html#Namespaces">Namespaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-NATIVE_005fSYSTEM_005fHEADER_005fCOMPONENT"><code>NATIVE_SYSTEM_HEADER_COMPONENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-ne"><code>ne</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-ne-and-attributes"><code>ne</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-nearbyintm2-instruction-pattern"><code>nearbyint<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-neg"><code>neg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-neg-and-attributes"><code>neg</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-neg_002c-canonicalization-of"><code>neg</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-NEGATE_005fEXPR"><code>NEGATE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-negation">negation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-negation-with-signed-saturation">negation with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-negation-with-unsigned-saturation">negation with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-negm2-instruction-pattern"><code>neg<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-negmodecc-instruction-pattern"><code>neg<var>mode</var>cc</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-negvm3-instruction-pattern"><code>negv<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-nested-functions_002c-support-for">nested functions, support for</a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-nested_005fptr"><code>nested_ptr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-next_005fbb_002c-prev_005fbb_002c-FOR_005fEACH_005fBB_002c-FOR_005fALL_005fBB"><code>next_bb, prev_bb, FOR_EACH_BB, FOR_ALL_BB</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NEXT_005fINSN"><code>NEXT_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-NEXT_005fOBJC_005fRUNTIME"><code>NEXT_OBJC_RUNTIME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-NE_005fEXPR"><code>NE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-nil">nil</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-NM_005fFLAGS"><code>NM_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-nondeterministic-finite-state-automaton">nondeterministic finite state automaton</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-nonimmediate_005foperand"><code>nonimmediate_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-nonlocal-goto-handler">nonlocal goto handler</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-nonlocal_005fgoto-instruction-pattern"><code>nonlocal_goto</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-nonlocal_005fgoto_005freceiver-instruction-pattern"><code>nonlocal_goto_receiver</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-nonmemory_005foperand"><code>nonmemory_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-nonoffsettable-memory-reference">nonoffsettable memory reference</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-NON_005fLVALUE_005fEXPR"><code>NON_LVALUE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-nop-instruction-pattern"><code>nop</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-NOP_005fEXPR"><code>NOP_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-normal-predicates">normal predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-not"><code>not</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-not-and-attributes"><code>not</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-not-equal">not equal</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-not_002c-canonicalization-of"><code>not</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-note"><code>note</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-note-and-_002fi"><code>note</code> and &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-note-and-_002fv"><code>note</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-NOTE_005fINSN_005fBASIC_005fBLOCK"><code>NOTE_INSN_BASIC_BLOCK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-NOTE_005fINSN_005fBASIC_005fBLOCK-1"><code>NOTE_INSN_BASIC_BLOCK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fBEGIN_005fSTMT"><code>NOTE_INSN_BEGIN_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fBLOCK_005fBEG"><code>NOTE_INSN_BLOCK_BEG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fBLOCK_005fEND"><code>NOTE_INSN_BLOCK_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fDELETED"><code>NOTE_INSN_DELETED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fDELETED_005fLABEL"><code>NOTE_INSN_DELETED_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fEH_005fREGION_005fBEG"><code>NOTE_INSN_EH_REGION_BEG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fEH_005fREGION_005fEND"><code>NOTE_INSN_EH_REGION_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fFUNCTION_005fBEG"><code>NOTE_INSN_FUNCTION_BEG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fINLINE_005fENTRY"><code>NOTE_INSN_INLINE_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fINSN_005fVAR_005fLOCATION"><code>NOTE_INSN_VAR_LOCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fLINE_005fNUMBER"><code>NOTE_LINE_NUMBER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fSOURCE_005fFILE"><code>NOTE_SOURCE_FILE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-NOTE_005fVAR_005fLOCATION"><code>NOTE_VAR_LOCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-notmodecc-instruction-pattern"><code>not<var>mode</var>cc</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-NO_005fDOLLAR_005fIN_005fLABEL"><code>NO_DOLLAR_IN_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-NO_005fDOT_005fIN_005fLABEL"><code>NO_DOT_IN_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-NO_005fFUNCTION_005fCSE"><code>NO_FUNCTION_CSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-NO_005fPROFILE_005fCOUNTERS"><code>NO_PROFILE_COUNTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-NO_005fREGS"><code>NO_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Number-of-iterations.html#index-Number-of-iterations-analysis">Number of iterations analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Number-of-iterations.html#Number-of-iterations">Number of iterations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-NUM_005fMACHINE_005fMODES"><code>NUM_MACHINE_MODES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-NUM_005fMODES_005fFOR_005fMODE_005fSWITCHING"><code>NUM_MODES_FOR_MODE_SWITCHING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Overview-of-poly_005fint.html#index-NUM_005fPOLY_005fINT_005fCOEFFS"><code>NUM_POLY_INT_COEFFS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">Overview of <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-N_005fREG_005fCLASSES"><code>N_REG_CLASSES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-o-in-constraint">&lsquo;<samp>o</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fCACHE"><code>OACC_CACHE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fDATA"><code>OACC_DATA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fDECLARE"><code>OACC_DECLARE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fENTER_005fDATA"><code>OACC_ENTER_DATA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fEXIT_005fDATA"><code>OACC_EXIT_DATA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fHOST_005fDATA"><code>OACC_HOST_DATA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fKERNELS"><code>OACC_KERNELS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fLOOP"><code>OACC_LOOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fPARALLEL"><code>OACC_PARALLEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fSERIAL"><code>OACC_SERIAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenACC.html#index-OACC_005fUPDATE"><code>OACC_UPDATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenACC.html#OpenACC">OpenACC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-OBJC_005fGEN_005fMETHOD_005fLABEL"><code>OBJC_GEN_METHOD_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-OBJC_005fJBLEN"><code>OBJC_JBLEN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-OBJECT_005fFORMAT_005fCOFF"><code>OBJECT_FORMAT_COFF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-offsettable-address">offsettable address</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-OFFSET_005fTYPE"><code>OFFSET_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-OImode"><code>OImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fATOMIC"><code>OMP_ATOMIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fCLAUSE"><code>OMP_CLAUSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fCONTINUE"><code>OMP_CONTINUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fCRITICAL"><code>OMP_CRITICAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fDISTRIBUTE"><code>OMP_DISTRIBUTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fFOR"><code>OMP_FOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fLOOP"><code>OMP_LOOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fMASTER"><code>OMP_MASTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fORDERED"><code>OMP_ORDERED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fPARALLEL"><code>OMP_PARALLEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fRETURN"><code>OMP_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fSECTION"><code>OMP_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fSECTIONS"><code>OMP_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fSIMD"><code>OMP_SIMD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fSINGLE"><code>OMP_SINGLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="OpenMP.html#index-OMP_005fTASKLOOP"><code>OMP_TASKLOOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="OpenMP.html#OpenMP">OpenMP</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-one_005fcmplm2-instruction-pattern"><code>one_cmpl<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-OPAQUE_005fTYPE"><code>OPAQUE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-operand-access">operand access</a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-Operand-Access-Routines">Operand Access Routines</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constraints.html#index-operand-constraints">operand constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constraints.html#Constraints">Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-Operand-Iterators">Operand Iterators</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-operand-predicates">operand predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-operand-substitution">operand substitution</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Operands.html#index-Operands">Operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Operands.html#Operands">Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-operands">operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-operands-1"><code>operands</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-operator-predicates">operator predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Options.html#index-optc_002dgen_002eawk">&lsquo;<samp>optc-gen.awk</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Options.html#Options">Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fALL"><code>OPTGROUP_ALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fINLINE"><code>OPTGROUP_INLINE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fIPA"><code>OPTGROUP_IPA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fLOOP"><code>OPTGROUP_LOOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fOMP"><code>OPTGROUP_OMP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fOTHER"><code>OPTGROUP_OTHER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-OPTGROUP_005fVEC"><code>OPTGROUP_VEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-info.html#index-optimization-dumps">optimization dumps</a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-info.html#Optimization-info">Optimization info</a></td></tr>
+<tr><td></td><td valign="top"><a href="Optimization-groups.html#index-optimization-groups">optimization groups</a>:</td><td>&nbsp;</td><td valign="top"><a href="Optimization-groups.html#Optimization-groups">Optimization groups</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dump-files-and-streams.html#index-optimization-info-file-names">optimization info file names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Dump-files-and-streams.html#Dump-files-and-streams">Dump files and streams</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tree-SSA.html#index-Optimization-infrastructure-for-GIMPLE">Optimization infrastructure for GIMPLE</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tree-SSA.html#Tree-SSA">Tree SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-OPTIMIZE_005fMODE_005fSWITCHING"><code>OPTIMIZE_MODE_SWITCHING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Options.html#index-option-specification-files">option specification files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Options.html#Options">Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-optional-hardware-or-system-features">optional hardware or system features</a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Including-Patterns.html#index-options_002c-directory-search">options, directory search</a>:</td><td>&nbsp;</td><td valign="top"><a href="Including-Patterns.html#Including-Patterns">Including Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Options.html#index-options_002c-guidelines-for">options, guidelines for</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Options.html#Guidelines-for-Options">Guidelines for Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-OPTION_005fDEFAULT_005fSPECS"><code>OPTION_DEFAULT_SPECS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-opt_005fmode"><code>opt_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-order-of-register-allocation">order of register allocation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-ordered_005fcomparison_005foperator"><code>ordered_comparison_operator</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ORDERED_005fEXPR"><code>ORDERED_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pattern-Ordering.html#index-Ordering-of-Patterns">Ordering of Patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pattern-Ordering.html#Pattern-Ordering">Pattern Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-ORIGINAL_005fREGNO"><code>ORIGINAL_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-other-register-constraints">other register constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-outgoing_005fargs_005fsize"><code>outgoing_args_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-OUTGOING_005fREGNO"><code>OUTGOING_REGNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-OUTGOING_005fREG_005fPARM_005fSTACK_005fSPACE"><code>OUTGOING_REG_PARM_STACK_SPACE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-output-of-assembler-code">output of assembler code</a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-output-statements">output statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-output-templates">output templates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-output_005fasm_005finsn"><code>output_asm_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-OUTPUT_005fQUOTED_005fSTRING"><code>OUTPUT_QUOTED_STRING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-OVERLAPPING_005fREGISTER_005fNAMES"><code>OVERLAPPING_REGISTER_NAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-OVERLOAD"><code>OVERLOAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-OVERRIDE_005fABI_005fFORMAT"><code>OVERRIDE_ABI_FORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-OVL_005fCURRENT"><code>OVL_CURRENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-OVL_005fNEXT"><code>OVL_NEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-p-in-constraint">&lsquo;<samp>p</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-PAD_005fVARARGS_005fDOWN"><code>PAD_VARARGS_DOWN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-parallel"><code>parallel</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-parameters_002c-c_002b_002b-abi">parameters, c++ abi</a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-parameters_002c-d-abi">parameters, d abi</a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-parameters_002c-miscellaneous">parameters, miscellaneous</a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="PCH-Target.html#index-parameters_002c-precompiled-headers">parameters, precompiled headers</a>:</td><td>&nbsp;</td><td valign="top"><a href="PCH-Target.html#PCH-Target">PCH Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-parity"><code>parity</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-paritym2-instruction-pattern"><code>parity<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-PARM_005fBOUNDARY"><code>PARM_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-PARM_005fDECL"><code>PARM_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-PARSE_005fLDD_005fOUTPUT"><code>PARSE_LDD_OUTPUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Passes.html#index-pass-dumps">pass dumps</a>:</td><td>&nbsp;</td><td valign="top"><a href="Passes.html#Passes">Passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Passes.html#index-passes-and-files-of-the-compiler">passes and files of the compiler</a>:</td><td>&nbsp;</td><td valign="top"><a href="Passes.html#Passes">Passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-passing-arguments">passing arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-pass_005fduplicate_005fcomputed_005fgotos"><code>pass_duplicate_computed_gotos</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-PATH_005fSEPARATOR"><code>PATH_SEPARATOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-PATTERN"><code>PATTERN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-pattern-conditions">pattern conditions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-pattern-names">pattern names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Pattern-Ordering.html#index-Pattern-Ordering">Pattern Ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="Pattern-Ordering.html#Pattern-Ordering">Pattern Ordering</a></td></tr>
+<tr><td></td><td valign="top"><a href="Patterns.html#index-patterns">patterns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Patterns.html#Patterns">Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-pc"><code>pc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Lengths.html#index-pc-and-attributes"><code>pc</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-pc_002c-RTL-sharing"><code>pc</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-PCC_005fBITFIELD_005fTYPE_005fMATTERS"><code>PCC_BITFIELD_TYPE_MATTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-PCC_005fSTATIC_005fSTRUCT_005fRETURN"><code>PCC_STATIC_STRUCT_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-PC_005fREGNUM"><code>PC_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-pc_005frtx"><code>pc_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-PDImode"><code>PDImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-peephole-optimization_002c-RTL-representation">peephole optimization, RTL representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Peephole-Definitions.html#index-peephole-optimizer-definitions">peephole optimizer definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Peephole-Definitions.html#Peephole-Definitions">Peephole Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Per_002dFunction-Data.html#index-per_002dfunction-data">per-function data</a>:</td><td>&nbsp;</td><td valign="top"><a href="Per_002dFunction-Data.html#Per_002dFunction-Data">Per-Function Data</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Template.html#index-percent-sign">percent sign</a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Template.html#Output-Template">Output Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-PHI-nodes">PHI nodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Phi-Nodes.html#index-phi-nodes_002c-RTL-SSA">phi nodes, RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">RTL SSA Phi Nodes</a></td></tr>
+<tr><td></td><td valign="top"><a href="PIC.html#index-PIC">PIC</a>:</td><td>&nbsp;</td><td valign="top"><a href="PIC.html#PIC">PIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="PIC.html#index-PIC_005fOFFSET_005fTABLE_005fREGNUM"><code>PIC_OFFSET_TABLE_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PIC.html#PIC">PIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="PIC.html#index-PIC_005fOFFSET_005fTABLE_005fREG_005fCALL_005fCLOBBERED"><code>PIC_OFFSET_TABLE_REG_CALL_CLOBBERED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PIC.html#PIC">PIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-pipeline-hazard-recognizer">pipeline hazard recognizer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-pipeline-hazard-recognizer-1">pipeline hazard recognizer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Plugins.html#index-Plugins">Plugins</a>:</td><td>&nbsp;</td><td valign="top"><a href="Plugins.html#Plugins">Plugins</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-plus"><code>plus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expressions.html#index-plus-and-attributes"><code>plus</code> and attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Expressions.html#Expressions">Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-plus_002c-canonicalization-of"><code>plus</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-PLUS_005fEXPR"><code>PLUS_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-Pmode"><code>Pmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-pmode_005fregister_005foperand"><code>pmode_register_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-pointer">pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-POINTERS_005fEXTEND_005fUNSIGNED"><code>POINTERS_EXTEND_UNSIGNED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-POINTER_005fDIFF_005fEXPR"><code>POINTER_DIFF_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-POINTER_005fPLUS_005fEXPR"><code>POINTER_PLUS_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-POINTER_005fSIZE"><code>POINTER_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-POINTER_005fTYPE"><code>POINTER_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="poly_005fint.html#index-polynomial-integers">polynomial integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="poly_005fint.html#poly_005fint">poly_int</a></td></tr>
+<tr><td></td><td valign="top"><a href="poly_005fint.html#index-poly_005fint"><code>poly_int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="poly_005fint.html#poly_005fint">poly_int</a></td></tr>
+<tr><td></td><td valign="top"><a href="Overview-of-poly_005fint.html#index-poly_005fint_002c-invariant-range"><code>poly_int</code>, invariant range</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">Overview of <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Overview-of-poly_005fint.html#index-poly_005fint_002c-main-typedefs"><code>poly_int</code>, main typedefs</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">Overview of <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Overview-of-poly_005fint.html#index-poly_005fint_002c-runtime-value"><code>poly_int</code>, runtime value</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">Overview of <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Overview-of-poly_005fint.html#index-poly_005fint_002c-template-parameters"><code>poly_int</code>, template parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">Overview of <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Consequences-of-using-poly_005fint.html#index-poly_005fint_002c-use-in-target_002dindependent-code"><code>poly_int</code>, use in target-independent code</a>:</td><td>&nbsp;</td><td valign="top"><a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint">Consequences of using <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Consequences-of-using-poly_005fint.html#index-poly_005fint_002c-use-in-target_002dspecific-code"><code>poly_int</code>, use in target-specific code</a>:</td><td>&nbsp;</td><td valign="top"><a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint">Consequences of using <code>poly_int</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-POLY_005fINT_005fCST"><code>POLY_INT_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-popcount"><code>popcount</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-popcountm2-instruction-pattern"><code>popcount<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-pops_005fargs"><code>pops_args</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-pop_005foperand"><code>pop_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Portability.html#index-portability">portability</a>:</td><td>&nbsp;</td><td valign="top"><a href="Portability.html#Portability">Portability</a></td></tr>
+<tr><td></td><td valign="top"><a href="PIC.html#index-position-independent-code">position independent code</a>:</td><td>&nbsp;</td><td valign="top"><a href="PIC.html#PIC">PIC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-POSTDECREMENT_005fEXPR"><code>POSTDECREMENT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-POSTINCREMENT_005fEXPR"><code>POSTINCREMENT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-post_005fdec"><code>post_dec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-post_005finc"><code>post_inc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-POST_005fLINK_005fSPEC"><code>POST_LINK_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-post_005fmodify"><code>post_modify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-post_005forder_005fcompute_002c-inverted_005fpost_005forder_005fcompute_002c-walk_005fdominator_005ftree"><code>post_order_compute, inverted_post_order_compute, walk_dominator_tree</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-POWI_005fMAX_005fMULTS"><code>POWI_MAX_MULTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-powm3-instruction-pattern"><code>pow<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-pragma"><code>pragma</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-PREDECREMENT_005fEXPR"><code>PREDECREMENT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-predefined-macros">predefined macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-predicates">predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-predicates-and-machine-modes">predicates and machine modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conditional-Execution.html#index-predication">predication</a>:</td><td>&nbsp;</td><td valign="top"><a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-predict_002edef"><code>predict.def</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="All-Debuggers.html#index-PREFERRED_005fDEBUGGING_005fTYPE"><code>PREFERRED_DEBUGGING_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="All-Debuggers.html#All-Debuggers">All Debuggers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-PREFERRED_005fRELOAD_005fCLASS"><code>PREFERRED_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-PREFERRED_005fSTACK_005fBOUNDARY"><code>PREFERRED_STACK_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-prefetch"><code>prefetch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-prefetch-and-_002fv"><code>prefetch</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-prefetch-instruction-pattern"><code>prefetch</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-PREFETCH_005fSCHEDULE_005fBARRIER_005fP"><code>PREFETCH_SCHEDULE_BARRIER_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-PREINCREMENT_005fEXPR"><code>PREINCREMENT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-presence_005fset"><code>presence_set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-preserving-SSA-form">preserving SSA form</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-pretend_005fargs_005fsize"><code>pretend_args_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="define_005fpeephole.html#index-prev_005factive_005finsn"><code>prev_active_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="define_005fpeephole.html#define_005fpeephole">define_peephole</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-PREV_005fINSN"><code>PREV_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-pre_005fdec"><code>pre_dec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-PRE_005fGCC3_005fDWARF_005fFRAME_005fREGISTERS"><code>PRE_GCC3_DWARF_FRAME_REGISTERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-pre_005finc"><code>pre_inc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-pre_005fmodify"><code>pre_modify</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-PRINT_005fOPERAND"><code>PRINT_OPERAND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-PRINT_005fOPERAND_005fADDRESS"><code>PRINT_OPERAND_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-PRINT_005fOPERAND_005fPUNCT_005fVALID_005fP"><code>PRINT_OPERAND_PUNCT_VALID_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-probe_005fstack-instruction-pattern"><code>probe_stack</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-probe_005fstack_005faddress-instruction-pattern"><code>probe_stack_address</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-processor-functional-units">processor functional units</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-processor-functional-units-1">processor functional units</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-processor-pipeline-description">processor pipeline description</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-product">product</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-profile-feedback">profile feedback</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-profile-representation">profile representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-PROFILE_005fBEFORE_005fPROLOGUE"><code>PROFILE_BEFORE_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-PROFILE_005fHOOK"><code>PROFILE_HOOK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-profiling_002c-code-generation">profiling, code generation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-program-counter">program counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-prologue">prologue</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-prologue-instruction-pattern"><code>prologue</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-PROMOTE_005fMODE"><code>PROMOTE_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-pseudo-registers">pseudo registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-PSImode"><code>PSImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-PTRDIFF_005fTYPE"><code>PTRDIFF_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-purge_005fdead_005fedges"><code>purge_dead_edges</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-purge_005fdead_005fedges-1"><code>purge_dead_edges</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-push-address-instruction">push address instruction</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-pushm1-instruction-pattern"><code>push<var>m</var>1</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-PUSH_005fARGS_005fREVERSED"><code>PUSH_ARGS_REVERSED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-push_005foperand"><code>push_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-push_005freload"><code>push_reload</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-PUSH_005fROUNDING"><code>PUSH_ROUNDING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-PUT_005fCODE"><code>PUT_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-PUT_005fMODE"><code>PUT_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-PUT_005fREG_005fNOTE_005fKIND"><code>PUT_REG_NOTE_KIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-QCmode"><code>QCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-QFmode"><code>QFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-QImode"><code>QImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-QImode_002c-in-insn"><code>QImode</code>, in <code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-QQmode"><code>QQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-qualified-type">qualified type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-qualified-type-1">qualified type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-querying-function-unit-reservations">querying function unit reservations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Multi_002dAlternative.html#index-question-mark">question mark</a>:</td><td>&nbsp;</td><td valign="top"><a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-quotient">quotient</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-r-in-constraint">&lsquo;<samp>r</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-rawmemchrm-instruction-pattern"><code>rawmemchr<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-RDIV_005fEXPR"><code>RDIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-READONLY_005fDATA_005fSECTION_005fASM_005fOP"><code>READONLY_DATA_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-real-operands">real operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-REALPART_005fEXPR"><code>REALPART_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-REAL_005fCST"><code>REAL_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-REAL_005fLIBGCC_005fSPEC"><code>REAL_LIBGCC_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-REAL_005fNM_005fFILE_005fNAME"><code>REAL_NM_FILE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-REAL_005fTYPE"><code>REAL_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fABS"><code>REAL_VALUE_ABS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fATOF"><code>REAL_VALUE_ATOF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fFIX"><code>REAL_VALUE_FIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fISINF"><code>REAL_VALUE_ISINF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fISNAN"><code>REAL_VALUE_ISNAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fNEGATE"><code>REAL_VALUE_NEGATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fNEGATIVE"><code>REAL_VALUE_NEGATIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL128"><code>REAL_VALUE_TO_TARGET_DECIMAL128</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL32"><code>REAL_VALUE_TO_TARGET_DECIMAL32</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL64"><code>REAL_VALUE_TO_TARGET_DECIMAL64</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fDOUBLE"><code>REAL_VALUE_TO_TARGET_DOUBLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fLONG_005fDOUBLE"><code>REAL_VALUE_TO_TARGET_LONG_DOUBLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-REAL_005fVALUE_005fTO_005fTARGET_005fSINGLE"><code>REAL_VALUE_TO_TARGET_SINGLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fTYPE"><code>REAL_VALUE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="Floating-Point.html#index-REAL_005fVALUE_005fUNSIGNED_005fFIX"><code>REAL_VALUE_UNSIGNED_FIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Floating-Point.html#Floating-Point">Floating Point</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-recognizing-insns">recognizing insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-recog_005fdata_002eoperand"><code>recog_data.operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-RECORD_005fTYPE"><code>RECORD_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-RECORD_005fTYPE-1"><code>RECORD_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-redirect_005fedge_005fand_005fbranch"><code>redirect_edge_and_branch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-redirect_005fedge_005fand_005fbranch_002c-redirect_005fjump"><code>redirect_edge_and_branch, redirect_jump</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fand_005fscal_005fm-instruction-pattern"><code>reduc_and_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005ffmax_005fscal_005fm-instruction-pattern"><code>reduc_fmax_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005ffmin_005fscal_005fm-instruction-pattern"><code>reduc_fmin_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fior_005fscal_005fm-instruction-pattern"><code>reduc_ior_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fplus_005fscal_005fm-instruction-pattern"><code>reduc_plus_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fsmax_005fscal_005fm-instruction-pattern"><code>reduc_smax_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fsmin_005fscal_005fm-instruction-pattern"><code>reduc_smin_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fumax_005fscal_005fm-instruction-pattern"><code>reduc_umax_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fumin_005fscal_005fm-instruction-pattern"><code>reduc_umin_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reduc_005fxor_005fscal_005fm-instruction-pattern"><code>reduc_xor_scal_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-reference">reference</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-REFERENCE_005fTYPE"><code>REFERENCE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-reg"><code>reg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-reg-and-_002ff"><code>reg</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-reg-and-_002fi"><code>reg</code> and &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-reg-and-_002fv"><code>reg</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-reg_002c-RTL-sharing"><code>reg</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-register-allocation-order">register allocation order</a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-register-class-definitions">register class definitions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Class-Preferences.html#index-register-class-preference-constraints">register class preference constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Class-Preferences.html#Class-Preferences">Class Preferences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-register-pairs">register pairs</a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL.html#index-Register-Transfer-Language-_0028RTL_0029">Register Transfer Language (RTL)</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL.html#RTL">RTL</a></td></tr>
+<tr><td></td><td valign="top"><a href="Registers.html#index-register-usage">register usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Registers.html#Registers">Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-registers-arguments">registers arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-registers-in-constraints">registers in constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-REGISTER_005fMOVE_005fCOST"><code>REGISTER_MOVE_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-REGISTER_005fNAMES"><code>REGISTER_NAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-register_005foperand"><code>register_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-REGISTER_005fPREFIX"><code>REGISTER_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-REGISTER_005fTARGET_005fPRAGMAS"><code>REGISTER_TARGET_PRAGMAS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-REGMODE_005fNATURAL_005fSIZE"><code>REGMODE_NATURAL_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-REGMODE_005fNATURAL_005fSIZE-1"><code>REGMODE_NATURAL_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-REGMODE_005fNATURAL_005fSIZE-2"><code>REGMODE_NATURAL_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fMODE_005fCODE_005fOK_005fFOR_005fBASE_005fP"><code>REGNO_MODE_CODE_OK_FOR_BASE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fMODE_005fOK_005fFOR_005fBASE_005fP"><code>REGNO_MODE_OK_FOR_BASE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fMODE_005fOK_005fFOR_005fREG_005fBASE_005fP"><code>REGNO_MODE_OK_FOR_REG_BASE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fOK_005fFOR_005fBASE_005fP"><code>REGNO_OK_FOR_BASE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fOK_005fFOR_005fINDEX_005fP"><code>REGNO_OK_FOR_INDEX_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REGNO_005fREG_005fCLASS"><code>REGNO_REG_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-regs_005fever_005flive"><code>regs_ever_live</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-regular-expressions">regular expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-regular-expressions-1">regular expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regular-IPA-passes.html#index-regular-IPA-passes">regular IPA passes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regular-IPA-passes.html#Regular-IPA-passes">Regular IPA passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Allocation-Order.html#index-REG_005fALLOC_005fORDER"><code>REG_ALLOC_ORDER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Allocation-Order.html#Allocation-Order">Allocation Order</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fBR_005fPRED"><code>REG_BR_PRED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fBR_005fPROB"><code>REG_BR_PROB</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-REG_005fBR_005fPROB_005fBASE_002c-BB_005fFREQ_005fBASE_002c-count"><code>REG_BR_PROB_BASE, BB_FREQ_BASE, count</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-REG_005fBR_005fPROB_005fBASE_002c-EDGE_005fFREQUENCY"><code>REG_BR_PROB_BASE, EDGE_FREQUENCY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fCALL_005fNOCF_005fCHECK"><code>REG_CALL_NOCF_CHECK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-reg_005fclass_005fcontents"><code>reg_class_contents</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REG_005fCLASS_005fCONTENTS"><code>REG_CLASS_CONTENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-reg_005fclass_005ffor_005fconstraint"><code>reg_class_for_constraint</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-REG_005fCLASS_005fNAMES"><code>REG_CLASS_NAMES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fDEAD"><code>REG_DEAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Liveness-information.html#index-REG_005fDEAD_002c-REG_005fUNUSED"><code>REG_DEAD, REG_UNUSED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Liveness-information.html#Liveness-information">Liveness information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fDEP_005fANTI"><code>REG_DEP_ANTI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fDEP_005fOUTPUT"><code>REG_DEP_OUTPUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fDEP_005fTRUE"><code>REG_DEP_TRUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-REG_005fEH_005fREGION_002c-EDGE_005fABNORMAL_005fCALL"><code>REG_EH_REGION, EDGE_ABNORMAL_CALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fEQUAL"><code>REG_EQUAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fEQUIV"><code>REG_EQUIV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-REG_005fEXPR"><code>REG_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fFRAME_005fRELATED_005fEXPR"><code>REG_FRAME_RELATED_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-REG_005fFUNCTION_005fVALUE_005fP"><code>REG_FUNCTION_VALUE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fINC"><code>REG_INC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-reg_005flabel-and-_002fv"><code>reg_label</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fLABEL_005fOPERAND"><code>REG_LABEL_OPERAND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fLABEL_005fTARGET"><code>REG_LABEL_TARGET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-reg_005fnames"><code>reg_names</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-reg_005fnames-1"><code>reg_names</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fNONNEG"><code>REG_NONNEG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fNOTES"><code>REG_NOTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fNOTE_005fKIND"><code>REG_NOTE_KIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-REG_005fOFFSET"><code>REG_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-REG_005fOK_005fSTRICT"><code>REG_OK_STRICT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-REG_005fPARM_005fSTACK_005fSPACE"><code>REG_PARM_STACK_SPACE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-REG_005fPARM_005fSTACK_005fSPACE_002c-and-TARGET_005fFUNCTION_005fARG"><code>REG_PARM_STACK_SPACE</code>, and <code>TARGET_FUNCTION_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-REG_005fPOINTER"><code>REG_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fSETJMP"><code>REG_SETJMP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-REG_005fUNUSED"><code>REG_UNUSED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-REG_005fUSERVAR_005fP"><code>REG_USERVAR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-REG_005fVALUE_005fIN_005fUNWIND_005fCONTEXT"><code>REG_VALUE_IN_UNWIND_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-REG_005fWORDS_005fBIG_005fENDIAN"><code>REG_WORDS_BIG_ENDIAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-relative-costs">relative costs</a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-RELATIVE_005fPREFIX_005fNOT_005fLINKDIR"><code>RELATIVE_PREFIX_NOT_LINKDIR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-reloading">reloading</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reload_005fcompleted"><code>reload_completed</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reload_005fin-instruction-pattern"><code>reload_in</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reload_005fin_005fprogress"><code>reload_in_progress</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-reload_005fout-instruction-pattern"><code>reload_out</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-remainder">remainder</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-remainderm3-instruction-pattern"><code>remainder<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-reorder"><code>reorder</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL.html#index-representation-of-RTL">representation of RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL.html#RTL">RTL</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-reservation-delays">reservation delays</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-restore_005fstack_005fblock-instruction-pattern"><code>restore_stack_block</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-restore_005fstack_005ffunction-instruction-pattern"><code>restore_stack_function</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-restore_005fstack_005fnonlocal-instruction-pattern"><code>restore_stack_nonlocal</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-rest_005fof_005fdecl_005fcompilation"><code>rest_of_decl_compilation</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Parsing-pass.html#index-rest_005fof_005ftype_005fcompilation"><code>rest_of_type_compilation</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Parsing-pass.html#Parsing-pass">Parsing pass</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-RESULT_005fDECL"><code>RESULT_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-return"><code>return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-return-instruction-pattern"><code>return</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-return-values-in-registers">return values in registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-returning-aggregate-values">returning aggregate values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-returning-structures-and-unions">returning structures and unions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-RETURN_005fADDRESS_005fPOINTER_005fREGNUM"><code>RETURN_ADDRESS_POINTER_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-RETURN_005fADDR_005fIN_005fPREVIOUS_005fFRAME"><code>RETURN_ADDR_IN_PREVIOUS_FRAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-RETURN_005fADDR_005fOFFSET"><code>RETURN_ADDR_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-RETURN_005fADDR_005fRTX"><code>RETURN_ADDR_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-RETURN_005fEXPR"><code>RETURN_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-RETURN_005fSTMT"><code>RETURN_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-return_005fval"><code>return_val</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-return_005fval_002c-in-call_005finsn"><code>return_val</code>, in <code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-return_005fval_002c-in-reg"><code>return_val</code>, in <code>reg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-return_005fval_002c-in-symbol_005fref"><code>return_val</code>, in <code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Instructions.html#index-reverse-postorder">reverse postorder</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">RTL SSA Instructions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-reverse-probability">reverse probability</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-REVERSE_005fCONDITION"><code>REVERSE_CONDITION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-REVERSIBLE_005fCC_005fMODE"><code>REVERSIBLE_CC_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-right-rotate">right rotate</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-right-shift">right shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-rintm2-instruction-pattern"><code>rint<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-RISC">RISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-RISC-1">RISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="GGC-Roots.html#index-roots_002c-marking">roots, marking</a>:</td><td>&nbsp;</td><td valign="top"><a href="GGC-Roots.html#GGC-Roots">GGC Roots</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-rotate">rotate</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-rotate-1"><code>rotate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-rotatert"><code>rotatert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-rotlm3-instruction-pattern"><code>rotl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-rotrm3-instruction-pattern"><code>rotr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-roundm2-instruction-pattern"><code>round<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ROUND_005fDIV_005fEXPR"><code>ROUND_DIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-ROUND_005fMOD_005fEXPR"><code>ROUND_MOD_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-ROUND_005fTYPE_005fALIGN"><code>ROUND_TYPE_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Instructions.html#index-RPO">RPO</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">RTL SSA Instructions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-RSHIFT_005fEXPR"><code>RSHIFT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-rsqrtm2-instruction-pattern"><code>rsqrt<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-addition">RTL addition</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-addition-with-signed-saturation">RTL addition with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-addition-with-unsigned-saturation">RTL addition with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-RTL-classes">RTL classes</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-comparison">RTL comparison</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-RTL-comparison-operations">RTL comparison operations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-RTL-constant-expression-types">RTL constant expression types</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-RTL-constants">RTL constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Declarations.html#index-RTL-declarations">RTL declarations</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-difference">RTL difference</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTL-expression">RTL expression</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-expressions-for-arithmetic">RTL expressions for arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-RTL-format">RTL format</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-RTL-format-characters">RTL format characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Calls.html#index-RTL-function_002dcall-insns">RTL function-call insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Calls.html#Calls">Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Template.html#index-RTL-insn-template">RTL insn template</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Template.html#RTL-Template">RTL Template</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTL-integers">RTL integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-RTL-memory-expressions">RTL memory expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTL-object-types">RTL object types</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-RTL-postdecrement">RTL postdecrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-RTL-postincrement">RTL postincrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-RTL-predecrement">RTL predecrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Incdec.html#index-RTL-preincrement">RTL preincrement</a>:</td><td>&nbsp;</td><td valign="top"><a href="Incdec.html#Incdec">Incdec</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-RTL-register-expressions">RTL register expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL.html#index-RTL-representation">RTL representation</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL.html#RTL">RTL</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-RTL-side-effect-expressions">RTL side effect expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA.html#index-RTL-SSA">RTL SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA.html#RTL-SSA">RTL SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTL-strings">RTL strings</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-RTL-structure-sharing-assumptions">RTL structure sharing assumptions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-subtraction">RTL subtraction</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-subtraction-with-signed-saturation">RTL subtraction with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-subtraction-with-unsigned-saturation">RTL subtraction with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-RTL-sum">RTL sum</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTL-vectors">RTL vectors</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-RTL_005fCONST_005fCALL_005fP"><code>RTL_CONST_CALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-RTL_005fCONST_005fOR_005fPURE_005fCALL_005fP"><code>RTL_CONST_OR_PURE_CALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-RTL_005fLOOPING_005fCONST_005fOR_005fPURE_005fCALL_005fP"><code>RTL_LOOPING_CONST_OR_PURE_CALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-RTL_005fPURE_005fCALL_005fP"><code>RTL_PURE_CALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003aaccess_005finfo"><code>rtl_ssa::access_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-rtl_005fssa_003a_003abb_005finfo"><code>rtl_ssa::bb_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003aclobber_005finfo"><code>rtl_ssa::clobber_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003adef_005finfo"><code>rtl_ssa::def_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#index-rtl_005fssa_003a_003aebb_005finfo"><code>rtl_ssa::ebb_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">RTL SSA Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Changing-RTL-Instructions.html#index-rtl_005fssa_003a_003ainsn_005fchange"><code>rtl_ssa::insn_change</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions">Changing RTL Instructions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Instructions.html#index-rtl_005fssa_003a_003ainsn_005finfo"><code>rtl_ssa::insn_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">RTL SSA Instructions</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003aphi_005finfo"><code>rtl_ssa::phi_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Phi-Nodes.html#index-rtl_005fssa_003a_003aphi_005finfo-1"><code>rtl_ssa::phi_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">RTL SSA Phi Nodes</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003aset_005finfo"><code>rtl_ssa::set_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA-Accesses.html#index-rtl_005fssa_003a_003ause_005finfo"><code>rtl_ssa::use_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">RTL SSA Accesses</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Objects.html#index-RTX-_0028See-RTL_0029">RTX (See RTL)</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Objects.html#RTL-Objects">RTL Objects</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Classes.html#index-RTX-codes_002c-classes-of">RTX codes, classes of</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Classes.html#RTL-Classes">RTL Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-RTX_005fFRAME_005fRELATED_005fP"><code>RTX_FRAME_RELATED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-run_002dtime-conventions">run-time conventions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-run_002dtime-target-specification">run-time target specification</a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-s-in-constraint">&lsquo;<samp>s</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-SAD_005fEXPR"><code>SAD_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-same_005ftype_005fp"><code>same_type_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SAmode"><code>SAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-satfractmn2-instruction-pattern"><code>satfract<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-satfractunsmn2-instruction-pattern"><code>satfractuns<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-satisfies_005fconstraint_005f"><code>satisfies_constraint_</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-sat_005ffract"><code>sat_fract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-SAVE_005fEXPR"><code>SAVE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-save_005fstack_005fblock-instruction-pattern"><code>save_stack_block</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-save_005fstack_005ffunction-instruction-pattern"><code>save_stack_function</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-save_005fstack_005fnonlocal-instruction-pattern"><code>save_stack_nonlocal</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-SBSS_005fSECTION_005fASM_005fOP"><code>SBSS_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-evolutions.html#index-Scalar-evolutions">Scalar evolutions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-evolutions.html#Scalar-evolutions">Scalar evolutions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-scalars_002c-returned-as-values">scalars, returned as values</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-scalar_005ffloat_005fmode"><code>scalar_float_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-scalar_005fint_005fmode"><code>scalar_int_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-scalar_005fmode"><code>scalar_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-scalbm3-instruction-pattern"><code>scalb<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-scatter_005fstoremn-instruction-pattern"><code>scatter_store<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SCHED_005fGROUP_005fP"><code>SCHED_GROUP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SCmode"><code>SCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-scratch"><code>scratch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-scratch-operands">scratch operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-scratch_002c-RTL-sharing"><code>scratch</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#index-scratch_005foperand"><code>scratch_operand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">Machine-Independent Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-SDATA_005fSECTION_005fASM_005fOP"><code>SDATA_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sdiv_005fpow2m3-instruction-pattern"><code>sdiv_pow2<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sdiv_005fpow2m3-instruction-pattern-1"><code>sdiv_pow2<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SDmode"><code>SDmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sdot_005fprodm-instruction-pattern"><code>sdot_prod<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Including-Patterns.html#index-search-options">search options</a>:</td><td>&nbsp;</td><td valign="top"><a href="Including-Patterns.html#Including-Patterns">Including Patterns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-SECONDARY_005fINPUT_005fRELOAD_005fCLASS"><code>SECONDARY_INPUT_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-SECONDARY_005fMEMORY_005fNEEDED_005fRTX"><code>SECONDARY_MEMORY_NEEDED_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-SECONDARY_005fOUTPUT_005fRELOAD_005fCLASS"><code>SECONDARY_OUTPUT_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-SECONDARY_005fRELOAD_005fCLASS"><code>SECONDARY_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-SELECT_005fCC_005fMODE"><code>SELECT_CC_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-sequence"><code>sequence</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sequence-iterators.html#index-Sequence-iterators">Sequence iterators</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-set"><code>set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-set-and-_002ff"><code>set</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-setmemm-instruction-pattern"><code>setmem<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-SETUP_005fFRAME_005fADDRESSES"><code>SETUP_FRAME_ADDRESSES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-SET_005fASM_005fOP"><code>SET_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-SET_005fASM_005fOP-1"><code>SET_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-set_005fattr"><code>set_attr</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-set_005fattr_005falternative"><code>set_attr_alternative</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="GIMPLE-sequences.html#index-set_005fbb_005fseq"><code>set_bb_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GIMPLE-sequences.html#GIMPLE-sequences">GIMPLE sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-SET_005fDEST"><code>SET_DEST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SET_005fIS_005fRETURN_005fP"><code>SET_IS_RETURN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-SET_005fLABEL_005fKIND"><code>SET_LABEL_KIND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-set_005foptab_005flibfunc"><code>set_optab_libfunc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-SET_005fRATIO"><code>SET_RATIO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-SET_005fSRC"><code>SET_SRC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-set_005fthread_005fpointermode-instruction-pattern"><code>set_thread_pointer<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-SET_005fTYPE_005fSTRUCTURAL_005fEQUALITY"><code>SET_TYPE_STRUCTURAL_EQUALITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-SET_005fTYPE_005fSTRUCTURAL_005fEQUALITY-1"><code>SET_TYPE_STRUCTURAL_EQUALITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SFmode"><code>SFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-sharing-of-RTL-components">sharing of RTL components</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-shift">shift</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-SHIFT_005fCOUNT_005fTRUNCATED"><code>SHIFT_COUNT_TRUNCATED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-SHLIB_005fSUFFIX"><code>SHLIB_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SHORT_005fACCUM_005fTYPE_005fSIZE"><code>SHORT_ACCUM_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SHORT_005fFRACT_005fTYPE_005fSIZE"><code>SHORT_FRACT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-SHORT_005fIMMEDIATES_005fSIGN_005fEXTEND"><code>SHORT_IMMEDIATES_SIGN_EXTEND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SHORT_005fTYPE_005fSIZE"><code>SHORT_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-shrink_002dwrapping-separate-components">shrink-wrapping separate components</a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sibcall_005fepilogue-instruction-pattern"><code>sibcall_epilogue</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Edges.html#index-sibling-call">sibling call</a>:</td><td>&nbsp;</td><td valign="top"><a href="Edges.html#Edges">Edges</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SIBLING_005fCALL_005fP"><code>SIBLING_CALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-signal_002dto_002dnoise-ratio-_0028metaphorical-usage-for-diagnostics_0029">signal-to-noise ratio (metaphorical usage for diagnostics)</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-signbitm2-instruction-pattern"><code>signbit<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-signed-division">signed division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-signed-division-with-signed-saturation">signed division with signed saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-signed-maximum">signed maximum</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-signed-minimum">signed minimum</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-significandm2-instruction-pattern"><code>significand<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-sign_005fextend"><code>sign_extend</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bit_002dFields.html#index-sign_005fextract"><code>sign_extract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-sign_005fextract_002c-canonicalization-of"><code>sign_extract</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SIG_005fATOMIC_005fTYPE"><code>SIG_ATOMIC_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SImode"><code>SImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-simple-constraints">simple constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-simple_005freturn"><code>simple_return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-simple_005freturn-instruction-pattern"><code>simple_return</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sincosm3-instruction-pattern"><code>sincos<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sinm2-instruction-pattern"><code>sin<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SIZETYPE"><code>SIZETYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-SIZE_005fASM_005fOP"><code>SIZE_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-SIZE_005fTYPE"><code>SIZE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-skip"><code>skip</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-SLOW_005fBYTE_005fACCESS"><code>SLOW_BYTE_ACCESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Small-IPA-passes.html#index-small-IPA-passes">small IPA passes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Small-IPA-passes.html#Small-IPA-passes">Small IPA passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-smax"><code>smax</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-smin"><code>smin</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-passes.html#index-sms_002c-swing_002c-software-pipelining">sms, swing, software pipelining</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-passes.html#RTL-passes">RTL passes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-smulhrsm3-instruction-pattern"><code>smulhrs<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-smulhsm3-instruction-pattern"><code>smulhs<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-smulm3_005fhighpart-instruction-pattern"><code>smul<var>m</var>3_highpart</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-smul_005fhighpart"><code>smul_highpart</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-soft-float-library">soft float library</a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-source-code_002c-location-information">source code, location information</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-spaceshipm3-instruction-pattern"><code>spaceship<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-special"><code>special</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Predicates.html#index-special-predicates">special predicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="Predicates.html#Predicates">Predicates</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-SPECS"><code>SPECS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-speculation_005fbarrier-instruction-pattern"><code>speculation_barrier</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-speed-of-instructions">speed of instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Splitting.html#index-splitting-instructions">splitting instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-split_005fblock"><code>split_block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-SQmode"><code>SQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-sqrt"><code>sqrt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sqrtm2-instruction-pattern"><code>sqrt<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-square-root">square root</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-SSA">SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-SSA.html#index-SSA_002c-RTL-form">SSA, RTL form</a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-SSA.html#RTL-SSA">RTL SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssaddm3-instruction-pattern"><code>ssadd<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssadm-instruction-pattern"><code>ssad<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssashlm3-instruction-pattern"><code>ssashl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-SSA_005fNAME_005fDEF_005fSTMT"><code>SSA_NAME_DEF_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-SSA_005fNAME_005fVERSION"><code>SSA_NAME_VERSION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssdivm3-instruction-pattern"><code>ssdiv<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssmaddmn4-instruction-pattern"><code>ssmadd<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssmsubmn4-instruction-pattern"><code>ssmsub<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssmulm3-instruction-pattern"><code>ssmul<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ssnegm2-instruction-pattern"><code>ssneg<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sssubm3-instruction-pattern"><code>sssub<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fabs"><code>ss_abs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fashift"><code>ss_ashift</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fdiv"><code>ss_div</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fminus"><code>ss_minus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fmult"><code>ss_mult</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fneg"><code>ss_neg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-ss_005fplus"><code>ss_plus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-ss_005ftruncate"><code>ss_truncate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-stack-arguments">stack arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-stack-frame-layout">stack frame layout</a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-stack-smashing-protection">stack smashing protection</a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-STACK_005fALIGNMENT_005fNEEDED"><code>STACK_ALIGNMENT_NEEDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STACK_005fBOUNDARY"><code>STACK_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fBUILTIN"><code>STACK_CHECK_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fFIXED_005fFRAME_005fSIZE"><code>STACK_CHECK_FIXED_FRAME_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fMAX_005fFRAME_005fSIZE"><code>STACK_CHECK_MAX_FRAME_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fMAX_005fVAR_005fSIZE"><code>STACK_CHECK_MAX_VAR_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fMOVING_005fSP"><code>STACK_CHECK_MOVING_SP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fPROBE_005fINTERVAL_005fEXP"><code>STACK_CHECK_PROBE_INTERVAL_EXP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fPROTECT"><code>STACK_CHECK_PROTECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-STACK_005fCHECK_005fSTATIC_005fBUILTIN"><code>STACK_CHECK_STATIC_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-STACK_005fDYNAMIC_005fOFFSET"><code>STACK_DYNAMIC_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-STACK_005fDYNAMIC_005fOFFSET-and-virtual-registers"><code>STACK_DYNAMIC_OFFSET</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-STACK_005fGROWS_005fDOWNWARD"><code>STACK_GROWS_DOWNWARD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-STACK_005fPARMS_005fIN_005fREG_005fPARM_005fAREA"><code>STACK_PARMS_IN_REG_PARM_AREA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-STACK_005fPOINTER_005fOFFSET"><code>STACK_POINTER_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-STACK_005fPOINTER_005fOFFSET-and-virtual-registers"><code>STACK_POINTER_OFFSET</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-STACK_005fPOINTER_005fREGNUM"><code>STACK_POINTER_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-STACK_005fPOINTER_005fREGNUM-and-virtual-registers"><code>STACK_POINTER_REGNUM</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-stack_005fpointer_005frtx"><code>stack_pointer_rtx</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-stack_005fprotect_005fcombined_005fset-instruction-pattern"><code>stack_protect_combined_set</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-stack_005fprotect_005fcombined_005ftest-instruction-pattern"><code>stack_protect_combined_test</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-stack_005fprotect_005fset-instruction-pattern"><code>stack_protect_set</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-stack_005fprotect_005ftest-instruction-pattern"><code>stack_protect_test</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-STACK_005fPUSH_005fCODE"><code>STACK_PUSH_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Registers.html#index-STACK_005fREGS"><code>STACK_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Registers.html#Stack-Registers">Stack Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Registers.html#index-STACK_005fREG_005fCOVER_005fCLASS"><code>STACK_REG_COVER_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Registers.html#Stack-Registers">Stack Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STACK_005fSAVEAREA_005fMODE"><code>STACK_SAVEAREA_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STACK_005fSIZE_005fMODE"><code>STACK_SIZE_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STACK_005fSLOT_005fALIGNMENT"><code>STACK_SLOT_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-standard-pattern-names">standard pattern names</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-STANDARD_005fSTARTFILE_005fPREFIX"><code>STANDARD_STARTFILE_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-STANDARD_005fSTARTFILE_005fPREFIX_005f1"><code>STANDARD_STARTFILE_PREFIX_1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-STANDARD_005fSTARTFILE_005fPREFIX_005f2"><code>STANDARD_STARTFILE_PREFIX_2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-STARTFILE_005fSPEC"><code>STARTFILE_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-and-operand-traversals.html#index-Statement-and-operand-traversals">Statement and operand traversals</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">Statement and operand traversals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-Sequences.html#index-Statement-Sequences">Statement Sequences</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-Sequences.html#Statement-Sequences">Statement Sequences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements.html#index-Statements">Statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements.html#Statements">Statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-statements">statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-statements-1">statements</a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Analyzer.html#index-static-analysis">static analysis</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer.html#Static-Analyzer">Static Analyzer</a></td></tr>
+<tr><td></td><td valign="top"><a href="Static-Analyzer.html#index-static-analyzer">static analyzer</a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer.html#Static-Analyzer">Static Analyzer</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debugging-the-Analyzer.html#index-static-analyzer_002c-debugging">static analyzer, debugging</a>:</td><td>&nbsp;</td><td valign="top"><a href="Debugging-the-Analyzer.html#Debugging-the-Analyzer">Debugging the Analyzer</a></td></tr>
+<tr><td></td><td valign="top"><a href="Analyzer-Internals.html#index-static-analyzer_002c-internals">static analyzer, internals</a>:</td><td>&nbsp;</td><td valign="top"><a href="Analyzer-Internals.html#Analyzer-Internals">Analyzer Internals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profile-information.html#index-Static-profile-estimation">Static profile estimation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Profile-information.html#Profile-information">Profile information</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-static-single-assignment">static single assignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-STATIC_005fCHAIN_005fINCOMING_005fREGNUM"><code>STATIC_CHAIN_INCOMING_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-STATIC_005fCHAIN_005fREGNUM"><code>STATIC_CHAIN_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-stdarg_002eh-and-register-arguments"><samp>stdarg.h</samp> and register arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-STDC_005f0_005fIN_005fSYSTEM_005fHEADERS"><code>STDC_0_IN_SYSTEM_HEADERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-STMT_005fEXPR"><code>STMT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-STMT_005fIS_005fFULL_005fEXPR_005fP"><code>STMT_IS_FULL_EXPR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-storage-layout">storage layout</a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-STORE_005fFLAG_005fVALUE"><code>STORE_FLAG_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-STORE_005fMAX_005fPIECES"><code>STORE_MAX_PIECES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-store_005fmultiple-instruction-pattern">&lsquo;<samp>store_multiple</samp>&rsquo; instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-strcpy"><code>strcpy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STRICT_005fALIGNMENT"><code>STRICT_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Declarations.html#index-strict_005flow_005fpart"><code>strict_low_part</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-strict_005fmemory_005faddress_005fp"><code>strict_memory_address_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-STRING_005fCST"><code>STRING_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-string_005flength"><code>string_length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-STRING_005fPOOL_005fADDRESS_005fP"><code>STRING_POOL_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-strlenm-instruction-pattern"><code>strlen<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-structure-value-address">structure value address</a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-structures_002c-returning">structures, returning</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-STRUCTURE_005fSIZE_005fBOUNDARY"><code>STRUCTURE_SIZE_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-subm3-instruction-pattern"><code>sub<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-SUBOBJECT"><code>SUBOBJECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-SUBOBJECT_005fCLEANUP"><code>SUBOBJECT_CLEANUP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-subreg"><code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-subreg-and-_002fs"><code>subreg</code> and &lsquo;<samp>/s</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-subreg-and-_002fu"><code>subreg</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-subreg-and-_002fu-and-_002fv"><code>subreg</code> and &lsquo;<samp>/u</samp>&rsquo; and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="RTL-Declarations.html#index-subreg_002c-in-strict_005flow_005fpart"><code>subreg</code>, in <code>strict_low_part</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-SUBREG_005fBYTE"><code>SUBREG_BYTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SUBREG_005fPROMOTED_005fUNSIGNED_005fP"><code>SUBREG_PROMOTED_UNSIGNED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SUBREG_005fPROMOTED_005fUNSIGNED_005fSET"><code>SUBREG_PROMOTED_UNSIGNED_SET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SUBREG_005fPROMOTED_005fVAR_005fP"><code>SUBREG_PROMOTED_VAR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-SUBREG_005fREG"><code>SUBREG_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Subst-Iterators.html#index-subst-iterators-in-_002emd-files">subst iterators in <samp>.md</samp> files</a>:</td><td>&nbsp;</td><td valign="top"><a href="Subst-Iterators.html#Subst-Iterators">Subst Iterators</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-subvm4-instruction-pattern"><code>subv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-SUCCESS_005fEXIT_005fCODE"><code>SUCCESS_EXIT_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-support-for-nested-functions">support for nested functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-SUPPORTS_005fINIT_005fPRIORITY"><code>SUPPORTS_INIT_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-SUPPORTS_005fONE_005fONLY"><code>SUPPORTS_ONE_ONLY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-SUPPORTS_005fWEAK"><code>SUPPORTS_WEAK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-SWITCHABLE_005fTARGET"><code>SWITCHABLE_TARGET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-SWITCH_005fBODY"><code>SWITCH_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-SWITCH_005fCOND"><code>SWITCH_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-SWITCH_005fSTMT"><code>SWITCH_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-symbolic-label">symbolic label</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fANCHOR"><code>SYMBOL_FLAG_ANCHOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fEXTERNAL"><code>SYMBOL_FLAG_EXTERNAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fFUNCTION"><code>SYMBOL_FLAG_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fHAS_005fBLOCK_005fINFO"><code>SYMBOL_FLAG_HAS_BLOCK_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fLOCAL"><code>SYMBOL_FLAG_LOCAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fSMALL"><code>SYMBOL_FLAG_SMALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fFLAG_005fTLS_005fSHIFT"><code>SYMBOL_FLAG_TLS_SHIFT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constants.html#index-symbol_005fref"><code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constants.html#Constants">Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-symbol_005fref-and-_002ff"><code>symbol_ref</code> and &lsquo;<samp>/f</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-symbol_005fref-and-_002fi"><code>symbol_ref</code> and &lsquo;<samp>/i</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-symbol_005fref-and-_002fu"><code>symbol_ref</code> and &lsquo;<samp>/u</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-symbol_005fref-and-_002fv"><code>symbol_ref</code> and &lsquo;<samp>/v</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-symbol_005fref_002c-RTL-sharing"><code>symbol_ref</code>, RTL sharing</a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fANCHOR_005fP"><code>SYMBOL_REF_ANCHOR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fBLOCK"><code>SYMBOL_REF_BLOCK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fBLOCK_005fOFFSET"><code>SYMBOL_REF_BLOCK_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fCONSTANT"><code>SYMBOL_REF_CONSTANT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fDATA"><code>SYMBOL_REF_DATA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fDECL"><code>SYMBOL_REF_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fEXTERNAL_005fP"><code>SYMBOL_REF_EXTERNAL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SYMBOL_005fREF_005fFLAG"><code>SYMBOL_REF_FLAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-SYMBOL_005fREF_005fFLAG_002c-in-TARGET_005fENCODE_005fSECTION_005fINFO"><code>SYMBOL_REF_FLAG</code>, in <code>TARGET_ENCODE_SECTION_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fFLAGS"><code>SYMBOL_REF_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fFUNCTION_005fP"><code>SYMBOL_REF_FUNCTION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fHAS_005fBLOCK_005fINFO_005fP"><code>SYMBOL_REF_HAS_BLOCK_INFO_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fLOCAL_005fP"><code>SYMBOL_REF_LOCAL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fSMALL_005fP"><code>SYMBOL_REF_SMALL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Special-Accessors.html#index-SYMBOL_005fREF_005fTLS_005fMODEL"><code>SYMBOL_REF_TLS_MODEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Special-Accessors.html#Special-Accessors">Special Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SYMBOL_005fREF_005fUSED"><code>SYMBOL_REF_USED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-SYMBOL_005fREF_005fWEAK"><code>SYMBOL_REF_WEAK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005faddmode-instruction-pattern"><code>sync_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fandmode-instruction-pattern"><code>sync_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fcompare_005fand_005fswapmode-instruction-pattern"><code>sync_compare_and_swap<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fiormode-instruction-pattern"><code>sync_ior<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005flock_005freleasemode-instruction-pattern"><code>sync_lock_release<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005flock_005ftest_005fand_005fsetmode-instruction-pattern"><code>sync_lock_test_and_set<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnandmode-instruction-pattern"><code>sync_nand<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005faddmode-instruction-pattern"><code>sync_new_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005fandmode-instruction-pattern"><code>sync_new_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005fiormode-instruction-pattern"><code>sync_new_ior<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005fnandmode-instruction-pattern"><code>sync_new_nand<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005fsubmode-instruction-pattern"><code>sync_new_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fnew_005fxormode-instruction-pattern"><code>sync_new_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005faddmode-instruction-pattern"><code>sync_old_add<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005fandmode-instruction-pattern"><code>sync_old_and<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005fiormode-instruction-pattern"><code>sync_old_ior<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005fnandmode-instruction-pattern"><code>sync_old_nand<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005fsubmode-instruction-pattern"><code>sync_old_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fold_005fxormode-instruction-pattern"><code>sync_old_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fsubmode-instruction-pattern"><code>sync_sub<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-sync_005fxormode-instruction-pattern"><code>sync_xor<var>mode</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-SYSROOT_005fHEADERS_005fSUFFIX_005fSPEC"><code>SYSROOT_HEADERS_SUFFIX_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-SYSROOT_005fSUFFIX_005fSPEC"><code>SYSROOT_SUFFIX_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-SYSTEM_005fIMPLICIT_005fEXTERN_005fC"><code>SYSTEM_IMPLICIT_EXTERN_C</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-t_002dtarget"><samp>t-<var>target</var></samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basic-Blocks.html#index-table-jump">table jump</a>:</td><td>&nbsp;</td><td valign="top"><a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-tablejump-instruction-pattern"><code>tablejump</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-tag"><code>tag</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tagging-Insns.html#index-tagging-insns">tagging insns</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tail-Calls.html#index-tail-calls">tail calls</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tail-Calls.html#Tail-Calls">Tail Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TAmode"><code>TAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-tanm2-instruction-pattern"><code>tan<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-target-attributes">target attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Macros.html#index-target-description-macros">target description macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Macros.html#Target-Macros">Target Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Structure.html#index-target-functions">target functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Structure.html#Target-Structure">Target Structure</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Structure.html#index-target-hooks">target hooks</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Structure.html#Target-Structure">Target Structure</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Fragment.html#index-target-makefile-fragment">target makefile fragment</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Fragment.html#Target-Fragment">Target Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-target-specifications">target specifications</a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Structure.html#index-targetm"><code>targetm</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Structure.html#Target-Structure">Target Structure</a></td></tr>
+<tr><td></td><td valign="top"><a href="Makefile.html#index-targets_002c-makefile">targets, makefile</a>:</td><td>&nbsp;</td><td valign="top"><a href="Makefile.html#Makefile">Makefile</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fABSOLUTE_005fBIGGEST_005fALIGNMENT"><code>TARGET_ABSOLUTE_BIGGEST_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fADDITIONAL_005fALLOCNO_005fCLASS_005fP"><code>TARGET_ADDITIONAL_ALLOCNO_CLASS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fADDRESS_005fCOST"><code>TARGET_ADDRESS_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fADDRESS_005fMODE"><code>TARGET_ADDR_SPACE_ADDRESS_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fCONVERT"><code>TARGET_ADDR_SPACE_CONVERT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fDEBUG"><code>TARGET_ADDR_SPACE_DEBUG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fDIAGNOSE_005fUSAGE"><code>TARGET_ADDR_SPACE_DIAGNOSE_USAGE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fLEGITIMATE_005fADDRESS_005fP"><code>TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fLEGITIMIZE_005fADDRESS"><code>TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fPOINTER_005fMODE"><code>TARGET_ADDR_SPACE_POINTER_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fSUBSET_005fP"><code>TARGET_ADDR_SPACE_SUBSET_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fVALID_005fPOINTER_005fMODE"><code>TARGET_ADDR_SPACE_VALID_POINTER_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Named-Address-Spaces.html#index-TARGET_005fADDR_005fSPACE_005fZERO_005fADDRESS_005fVALID"><code>TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fALIGN_005fANON_005fBITFIELD"><code>TARGET_ALIGN_ANON_BITFIELD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fALLOCATE_005fINITIAL_005fVALUE"><code>TARGET_ALLOCATE_INITIAL_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fALLOCATE_005fSTACK_005fSLOTS_005fFOR_005fARGS"><code>TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-TARGET_005fALWAYS_005fSTRIP_005fDOTDOT"><code>TARGET_ALWAYS_STRIP_DOTDOT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fARG_005fPARTIAL_005fBYTES"><code>TARGET_ARG_PARTIAL_BYTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fARM_005fEABI_005fUNWINDER"><code>TARGET_ARM_EABI_UNWINDER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fARRAY_005fMODE"><code>TARGET_ARRAY_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fARRAY_005fMODE_005fSUPPORTED_005fP"><code>TARGET_ARRAY_MODE_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fASAN_005fSHADOW_005fOFFSET"><code>TARGET_ASAN_SHADOW_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fDI_005fOP"><code>TARGET_ASM_ALIGNED_DI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fHI_005fOP"><code>TARGET_ASM_ALIGNED_HI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fPDI_005fOP"><code>TARGET_ASM_ALIGNED_PDI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fPSI_005fOP"><code>TARGET_ASM_ALIGNED_PSI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fPTI_005fOP"><code>TARGET_ASM_ALIGNED_PTI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fSI_005fOP"><code>TARGET_ASM_ALIGNED_SI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fALIGNED_005fTI_005fOP"><code>TARGET_ASM_ALIGNED_TI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fASSEMBLE_005fUNDEFINED_005fDECL"><code>TARGET_ASM_ASSEMBLE_UNDEFINED_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fASSEMBLE_005fVISIBILITY"><code>TARGET_ASM_ASSEMBLE_VISIBILITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fBYTE_005fOP"><code>TARGET_ASM_BYTE_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fCAN_005fOUTPUT_005fMI_005fTHUNK"><code>TARGET_ASM_CAN_OUTPUT_MI_THUNK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fCLOSE_005fPAREN"><code>TARGET_ASM_CLOSE_PAREN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fCODE_005fEND"><code>TARGET_ASM_CODE_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-TARGET_005fASM_005fCONSTRUCTOR"><code>TARGET_ASM_CONSTRUCTOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fDECLARE_005fCONSTANT_005fNAME"><code>TARGET_ASM_DECLARE_CONSTANT_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fDECL_005fEND"><code>TARGET_ASM_DECL_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-TARGET_005fASM_005fDESTRUCTOR"><code>TARGET_ASM_DESTRUCTOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fELF_005fFLAGS_005fNUMERIC"><code>TARGET_ASM_ELF_FLAGS_NUMERIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fEMIT_005fEXCEPT_005fPERSONALITY"><code>TARGET_ASM_EMIT_EXCEPT_PERSONALITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fEMIT_005fEXCEPT_005fTABLE_005fLABEL"><code>TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fEMIT_005fUNWIND_005fLABEL"><code>TARGET_ASM_EMIT_UNWIND_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fEXTERNAL_005fLIBCALL"><code>TARGET_ASM_EXTERNAL_LIBCALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFILE_005fEND"><code>TARGET_ASM_FILE_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFILE_005fSTART"><code>TARGET_ASM_FILE_START</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFILE_005fSTART_005fAPP_005fOFF"><code>TARGET_ASM_FILE_START_APP_OFF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFILE_005fSTART_005fFILE_005fDIRECTIVE"><code>TARGET_ASM_FILE_START_FILE_DIRECTIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-TARGET_005fASM_005fFINAL_005fPOSTSCAN_005fINSN"><code>TARGET_ASM_FINAL_POSTSCAN_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fFUNCTION_005fBEGIN_005fEPILOGUE"><code>TARGET_ASM_FUNCTION_BEGIN_EPILOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fFUNCTION_005fEND_005fPROLOGUE"><code>TARGET_ASM_FUNCTION_END_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fFUNCTION_005fEPILOGUE"><code>TARGET_ASM_FUNCTION_EPILOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fFUNCTION_005fPROLOGUE"><code>TARGET_ASM_FUNCTION_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fFUNCTION_005fRODATA_005fSECTION"><code>TARGET_ASM_FUNCTION_RODATA_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFUNCTION_005fSECTION"><code>TARGET_ASM_FUNCTION_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fFUNCTION_005fSWITCHED_005fTEXT_005fSECTIONS"><code>TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fGENERATE_005fPIC_005fADDR_005fDIFF_005fVEC"><code>TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fGLOBALIZE_005fDECL_005fNAME"><code>TARGET_ASM_GLOBALIZE_DECL_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fGLOBALIZE_005fLABEL"><code>TARGET_ASM_GLOBALIZE_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fINIT_005fSECTIONS"><code>TARGET_ASM_INIT_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fINTEGER"><code>TARGET_ASM_INTEGER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fINTERNAL_005fLABEL"><code>TARGET_ASM_INTERNAL_LABEL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fLTO_005fEND"><code>TARGET_ASM_LTO_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fLTO_005fSTART"><code>TARGET_ASM_LTO_START</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fMAKE_005fEH_005fSYMBOL_005fINDIRECT"><code>TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fASM_005fMARK_005fDECL_005fPRESERVED"><code>TARGET_ASM_MARK_DECL_PRESERVED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fMERGEABLE_005fRODATA_005fPREFIX"><code>TARGET_ASM_MERGEABLE_RODATA_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fNAMED_005fSECTION"><code>TARGET_ASM_NAMED_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fOPEN_005fPAREN"><code>TARGET_ASM_OPEN_PAREN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fOUTPUT_005fADDR_005fCONST_005fEXTRA"><code>TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-TARGET_005fASM_005fOUTPUT_005fANCHOR"><code>TARGET_ASM_OUTPUT_ANCHOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fASM_005fOUTPUT_005fDWARF_005fDTPREL"><code>TARGET_ASM_OUTPUT_DWARF_DTPREL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fOUTPUT_005fIDENT"><code>TARGET_ASM_OUTPUT_IDENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fOUTPUT_005fMI_005fTHUNK"><code>TARGET_ASM_OUTPUT_MI_THUNK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fOUTPUT_005fSOURCE_005fFILENAME"><code>TARGET_ASM_OUTPUT_SOURCE_FILENAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fPOST_005fCFI_005fSTARTPROC"><code>TARGET_ASM_POST_CFI_STARTPROC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Entry.html#index-TARGET_005fASM_005fPRINT_005fPATCHABLE_005fFUNCTION_005fENTRY"><code>TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Entry.html#Function-Entry">Function Entry</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fRECORD_005fGCC_005fSWITCHES"><code>TARGET_ASM_RECORD_GCC_SWITCHES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fASM_005fRECORD_005fGCC_005fSWITCHES_005fSECTION"><code>TARGET_ASM_RECORD_GCC_SWITCHES_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fRELOC_005fRW_005fMASK"><code>TARGET_ASM_RELOC_RW_MASK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fSELECT_005fRTX_005fSECTION"><code>TARGET_ASM_SELECT_RTX_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fSELECT_005fSECTION"><code>TARGET_ASM_SELECT_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fSHOULD_005fRESTORE_005fCFA_005fSTATE"><code>TARGET_ASM_SHOULD_RESTORE_CFA_STATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fTM_005fCLONE_005fTABLE_005fSECTION"><code>TARGET_ASM_TM_CLONE_TABLE_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TARGET_005fASM_005fTRAMPOLINE_005fTEMPLATE"><code>TARGET_ASM_TRAMPOLINE_TEMPLATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fASM_005fTTYPE"><code>TARGET_ASM_TTYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fDI_005fOP"><code>TARGET_ASM_UNALIGNED_DI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fHI_005fOP"><code>TARGET_ASM_UNALIGNED_HI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fPDI_005fOP"><code>TARGET_ASM_UNALIGNED_PDI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fPSI_005fOP"><code>TARGET_ASM_UNALIGNED_PSI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fPTI_005fOP"><code>TARGET_ASM_UNALIGNED_PTI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fSI_005fOP"><code>TARGET_ASM_UNALIGNED_SI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Data-Output.html#index-TARGET_005fASM_005fUNALIGNED_005fTI_005fOP"><code>TARGET_ASM_UNALIGNED_TI_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Data-Output.html#Data-Output">Data Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fASM_005fUNIQUE_005fSECTION"><code>TARGET_ASM_UNIQUE_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fUNWIND_005fEMIT"><code>TARGET_ASM_UNWIND_EMIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Dispatch-Tables.html#index-TARGET_005fASM_005fUNWIND_005fEMIT_005fBEFORE_005fINSN"><code>TARGET_ASM_UNWIND_EMIT_BEFORE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Dispatch-Tables.html#Dispatch-Tables">Dispatch Tables</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fATOMIC_005fALIGN_005fFOR_005fMODE"><code>TARGET_ATOMIC_ALIGN_FOR_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fATOMIC_005fASSIGN_005fEXPAND_005fFENV"><code>TARGET_ATOMIC_ASSIGN_EXPAND_FENV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fATOMIC_005fTEST_005fAND_005fSET_005fTRUEVAL"><code>TARGET_ATOMIC_TEST_AND_SET_TRUEVAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fATTRIBUTE_005fTABLE"><code>TARGET_ATTRIBUTE_TABLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fATTRIBUTE_005fTAKES_005fIDENTIFIER_005fP"><code>TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fBINDS_005fLOCAL_005fP"><code>TARGET_BINDS_LOCAL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fBUILD_005fBUILTIN_005fVA_005fLIST"><code>TARGET_BUILD_BUILTIN_VA_LIST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fBUILTIN_005fDECL"><code>TARGET_BUILTIN_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fBUILTIN_005fRECIPROCAL"><code>TARGET_BUILTIN_RECIPROCAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-TARGET_005fBUILTIN_005fSETJMP_005fFRAME_005fVALUE"><code>TARGET_BUILTIN_SETJMP_FRAME_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fCALLEE_005fCOPIES"><code>TARGET_CALLEE_COPIES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fCALL_005fARGS"><code>TARGET_CALL_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Miscellaneous-Register-Hooks.html#index-TARGET_005fCALL_005fFUSAGE_005fCONTAINS_005fNON_005fCALLEE_005fCLOBBERS"><code>TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks">Miscellaneous Register Hooks</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fCANNOT_005fFORCE_005fCONST_005fMEM"><code>TARGET_CANNOT_FORCE_CONST_MEM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCANNOT_005fMODIFY_005fJUMPS_005fP"><code>TARGET_CANNOT_MODIFY_JUMPS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCANNOT_005fSUBSTITUTE_005fMEM_005fEQUIV_005fP"><code>TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-TARGET_005fCANONICALIZE_005fCOMPARISON"><code>TARGET_CANONICALIZE_COMPARISON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fCANONICAL_005fVA_005fLIST_005fTYPE"><code>TARGET_CANONICAL_VA_LIST_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCAN_005fCHANGE_005fMODE_005fCLASS"><code>TARGET_CAN_CHANGE_MODE_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-TARGET_005fCAN_005fCHANGE_005fMODE_005fCLASS-and-subreg-semantics"><code>TARGET_CAN_CHANGE_MODE_CLASS</code> and subreg semantics</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Elimination.html#index-TARGET_005fCAN_005fELIMINATE"><code>TARGET_CAN_ELIMINATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Elimination.html#Elimination">Elimination</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCAN_005fFOLLOW_005fJUMP"><code>TARGET_CAN_FOLLOW_JUMP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fCAN_005fINLINE_005fP"><code>TARGET_CAN_INLINE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCAN_005fUSE_005fDOLOOP_005fP"><code>TARGET_CAN_USE_DOLOOP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCASE_005fVALUES_005fTHRESHOLD"><code>TARGET_CASE_VALUES_THRESHOLD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-TARGET_005fCC_005fMODES_005fCOMPATIBLE"><code>TARGET_CC_MODES_COMPATIBLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCHECK_005fBUILTIN_005fCALL"><code>TARGET_CHECK_BUILTIN_CALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="PCH-Target.html#index-TARGET_005fCHECK_005fPCH_005fTARGET_005fFLAGS"><code>TARGET_CHECK_PCH_TARGET_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PCH-Target.html#PCH-Target">PCH Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fCHECK_005fSTRING_005fOBJECT_005fFORMAT_005fARG"><code>TARGET_CHECK_STRING_OBJECT_FORMAT_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCLASS_005fLIKELY_005fSPILLED_005fP"><code>TARGET_CLASS_LIKELY_SPILLED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCLASS_005fMAX_005fNREGS"><code>TARGET_CLASS_MAX_NREGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCOMMUTATIVE_005fP"><code>TARGET_COMMUTATIVE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fCOMPARE_005fBY_005fPIECES_005fBRANCH_005fRATIO"><code>TARGET_COMPARE_BY_PIECES_BRANCH_RATIO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCOMPARE_005fVERSION_005fPRIORITY"><code>TARGET_COMPARE_VERSION_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fCOMPATIBLE_005fVECTOR_005fTYPES_005fP"><code>TARGET_COMPATIBLE_VECTOR_TYPES_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Elimination.html#index-TARGET_005fCOMPUTE_005fFRAME_005fLAYOUT"><code>TARGET_COMPUTE_FRAME_LAYOUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Elimination.html#Elimination">Elimination</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fCOMPUTE_005fMULTILIB"><code>TARGET_COMPUTE_MULTILIB</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCOMPUTE_005fPRESSURE_005fCLASSES"><code>TARGET_COMPUTE_PRESSURE_CLASSES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fCOMP_005fTYPE_005fATTRIBUTES"><code>TARGET_COMP_TYPE_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-TARGET_005fCONDITIONAL_005fREGISTER_005fUSAGE"><code>TARGET_CONDITIONAL_REGISTER_USAGE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fCONSTANT_005fALIGNMENT"><code>TARGET_CONSTANT_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCONST_005fANCHOR"><code>TARGET_CONST_ANCHOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fCONST_005fNOT_005fOK_005fFOR_005fDEBUG_005fP"><code>TARGET_CONST_NOT_OK_FOR_DEBUG_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCONVERT_005fTO_005fTYPE"><code>TARGET_CONVERT_TO_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fCPU_005fCPP_005fBUILTINS"><code>TARGET_CPU_CPP_BUILTINS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fCSTORE_005fMODE"><code>TARGET_CSTORE_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TARGET_005fCUSTOM_005fFUNCTION_005fDESCRIPTORS"><code>TARGET_CUSTOM_FUNCTION_DESCRIPTORS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fADJUST_005fCLASS_005fAT_005fDEFINITION"><code>TARGET_CXX_ADJUST_CLASS_AT_DEFINITION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fCDTOR_005fRETURNS_005fTHIS"><code>TARGET_CXX_CDTOR_RETURNS_THIS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fCLASS_005fDATA_005fALWAYS_005fCOMDAT"><code>TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fCOOKIE_005fHAS_005fSIZE"><code>TARGET_CXX_COOKIE_HAS_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fDECL_005fMANGLING_005fCONTEXT"><code>TARGET_CXX_DECL_MANGLING_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fDETERMINE_005fCLASS_005fDATA_005fVISIBILITY"><code>TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fGET_005fCOOKIE_005fSIZE"><code>TARGET_CXX_GET_COOKIE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fGUARD_005fMASK_005fBIT"><code>TARGET_CXX_GUARD_MASK_BIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fGUARD_005fTYPE"><code>TARGET_CXX_GUARD_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fCXX_005fIMPLICIT_005fEXTERN_005fC"><code>TARGET_CXX_IMPLICIT_EXTERN_C</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fIMPORT_005fEXPORT_005fCLASS"><code>TARGET_CXX_IMPORT_EXPORT_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fKEY_005fMETHOD_005fMAY_005fBE_005fINLINE"><code>TARGET_CXX_KEY_METHOD_MAY_BE_INLINE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fLIBRARY_005fRTTI_005fCOMDAT"><code>TARGET_CXX_LIBRARY_RTTI_COMDAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fUSE_005fAEABI_005fATEXIT"><code>TARGET_CXX_USE_AEABI_ATEXIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="C_002b_002b-ABI.html#index-TARGET_005fCXX_005fUSE_005fATEXIT_005fFOR_005fCXA_005fATEXIT"><code>TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fC_005fEXCESS_005fPRECISION"><code>TARGET_C_EXCESS_PRECISION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fC_005fPREINCLUDE"><code>TARGET_C_PREINCLUDE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fDEBUG_005fUNWIND_005fINFO"><code>TARGET_DEBUG_UNWIND_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fDECIMAL_005fFLOAT_005fSUPPORTED_005fP"><code>TARGET_DECIMAL_FLOAT_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fDECLSPEC"><code>TARGET_DECLSPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fDEFAULT_005fPACK_005fSTRUCT"><code>TARGET_DEFAULT_PACK_STRUCT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-TARGET_005fDEFAULT_005fSHORT_005fENUMS"><code>TARGET_DEFAULT_SHORT_ENUMS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fDEFAULT_005fTARGET_005fFLAGS"><code>TARGET_DEFAULT_TARGET_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fDEFERRED_005fOUTPUT_005fDEFS"><code>TARGET_DEFERRED_OUTPUT_DEFS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fDELAY_005fSCHED2"><code>TARGET_DELAY_SCHED2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fDELAY_005fVARTRACK"><code>TARGET_DELAY_VARTRACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fDELEGITIMIZE_005fADDRESS"><code>TARGET_DELEGITIMIZE_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fDIFFERENT_005fADDR_005fDISPLACEMENT_005fP"><code>TARGET_DIFFERENT_ADDR_DISPLACEMENT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fDLLIMPORT_005fDECL_005fATTRIBUTES"><code>TARGET_DLLIMPORT_DECL_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fDOLOOP_005fCOST_005fFOR_005fADDRESS"><code>TARGET_DOLOOP_COST_FOR_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fDOLOOP_005fCOST_005fFOR_005fGENERIC"><code>TARGET_DOLOOP_COST_FOR_GENERIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-TARGET_005fDTORS_005fFROM_005fCXA_005fATEXIT"><code>TARGET_DTORS_FROM_CXA_ATEXIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fDWARF_005fCALLING_005fCONVENTION"><code>TARGET_DWARF_CALLING_CONVENTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fDWARF_005fFRAME_005fREG_005fMODE"><code>TARGET_DWARF_FRAME_REG_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-TARGET_005fDWARF_005fHANDLE_005fFRAME_005fUNSPEC"><code>TARGET_DWARF_HANDLE_FRAME_UNSPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-TARGET_005fDWARF_005fPOLY_005fINDETERMINATE_005fVALUE"><code>TARGET_DWARF_POLY_INDETERMINATE_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fDWARF_005fREGISTER_005fSPAN"><code>TARGET_DWARF_REGISTER_SPAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fCPU_005fVERSIONS"><code>TARGET_D_CPU_VERSIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fHAS_005fSTDCALL_005fCONVENTION"><code>TARGET_D_HAS_STDCALL_CONVENTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fMINFO_005fSECTION"><code>TARGET_D_MINFO_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fMINFO_005fSECTION_005fEND"><code>TARGET_D_MINFO_SECTION_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fMINFO_005fSECTION_005fSTART"><code>TARGET_D_MINFO_SECTION_START</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fOS_005fVERSIONS"><code>TARGET_D_OS_VERSIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fREGISTER_005fCPU_005fTARGET_005fINFO"><code>TARGET_D_REGISTER_CPU_TARGET_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fREGISTER_005fOS_005fTARGET_005fINFO"><code>TARGET_D_REGISTER_OS_TARGET_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="D-Language-and-ABI.html#index-TARGET_005fD_005fTEMPLATES_005fALWAYS_005fCOMDAT"><code>TARGET_D_TEMPLATES_ALWAYS_COMDAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fEDOM"><code>TARGET_EDOM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TARGET_005fEMIT_005fCALL_005fBUILTIN_005f_005f_005fCLEAR_005fCACHE"><code>TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fEMIT_005fSUPPORT_005fTINFOS"><code>TARGET_EMIT_SUPPORT_TINFOS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fEMPTY_005fRECORD_005fP"><code>TARGET_EMPTY_RECORD_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fDEBUG_005fFORM_005fTLS_005fADDRESS"><code>TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fGET_005fADDRESS"><code>TARGET_EMUTLS_GET_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fREGISTER_005fCOMMON"><code>TARGET_EMUTLS_REGISTER_COMMON</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fTMPL_005fPREFIX"><code>TARGET_EMUTLS_TMPL_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fTMPL_005fSECTION"><code>TARGET_EMUTLS_TMPL_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fVAR_005fALIGN_005fFIXED"><code>TARGET_EMUTLS_VAR_ALIGN_FIXED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fVAR_005fFIELDS"><code>TARGET_EMUTLS_VAR_FIELDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fVAR_005fINIT"><code>TARGET_EMUTLS_VAR_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fVAR_005fPREFIX"><code>TARGET_EMUTLS_VAR_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Emulated-TLS.html#index-TARGET_005fEMUTLS_005fVAR_005fSECTION"><code>TARGET_EMUTLS_VAR_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fENCODE_005fSECTION_005fINFO"><code>TARGET_ENCODE_SECTION_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fENCODE_005fSECTION_005fINFO-and-address-validation"><code>TARGET_ENCODE_SECTION_INFO</code> and address validation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-TARGET_005fENCODE_005fSECTION_005fINFO-usage"><code>TARGET_ENCODE_SECTION_INFO</code> usage</a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fEND_005fCALL_005fARGS"><code>TARGET_END_CALL_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fENUM_005fVA_005fLIST_005fP"><code>TARGET_ENUM_VA_LIST_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fESTIMATED_005fPOLY_005fVALUE"><code>TARGET_ESTIMATED_POLY_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fEXCEPT_005fUNWIND_005fINFO"><code>TARGET_EXCEPT_UNWIND_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fEXECUTABLE_005fSUFFIX"><code>TARGET_EXECUTABLE_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fEXPAND_005fBUILTIN"><code>TARGET_EXPAND_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fEXPAND_005fBUILTIN_005fSAVEREGS"><code>TARGET_EXPAND_BUILTIN_SAVEREGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fEXPAND_005fDIVMOD_005fLIBFUNC"><code>TARGET_EXPAND_DIVMOD_LIBFUNC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fEXPAND_005fTO_005fRTL_005fHOOK"><code>TARGET_EXPAND_TO_RTL_HOOK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TARGET_005fEXPR"><code>TARGET_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fEXTRA_005fINCLUDES"><code>TARGET_EXTRA_INCLUDES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tail-Calls.html#index-TARGET_005fEXTRA_005fLIVE_005fON_005fENTRY"><code>TARGET_EXTRA_LIVE_ON_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tail-Calls.html#Tail-Calls">Tail Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fEXTRA_005fPRE_005fINCLUDES"><code>TARGET_EXTRA_PRE_INCLUDES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-TARGET_005fFIXED_005fCONDITION_005fCODE_005fREGS"><code>TARGET_FIXED_CONDITION_CODE_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fFIXED_005fPOINT_005fSUPPORTED_005fP"><code>TARGET_FIXED_POINT_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-target_005fflags"><code>target_flags</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#index-TARGET_005fFLAGS_005fREGNUM"><code>TARGET_FLAGS_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">MODE_CC Condition Codes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFLOATN_005fBUILTIN_005fP"><code>TARGET_FLOATN_BUILTIN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFLOATN_005fMODE"><code>TARGET_FLOATN_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fFLOAT_005fEXCEPTIONS_005fROUNDING_005fSUPPORTED_005fP"><code>TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-TARGET_005fFNTYPE_005fABI"><code>TARGET_FNTYPE_ABI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFN_005fABI_005fVA_005fLIST"><code>TARGET_FN_ABI_VA_LIST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fFOLD_005fBUILTIN"><code>TARGET_FOLD_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fFORMAT_005fTYPES"><code>TARGET_FORMAT_TYPES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Elimination.html#index-TARGET_005fFRAME_005fPOINTER_005fREQUIRED"><code>TARGET_FRAME_POINTER_REQUIRED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Elimination.html#Elimination">Elimination</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG"><code>TARGET_FUNCTION_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG_005fADVANCE"><code>TARGET_FUNCTION_ARG_ADVANCE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG_005fBOUNDARY"><code>TARGET_FUNCTION_ARG_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG_005fOFFSET"><code>TARGET_FUNCTION_ARG_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG_005fPADDING"><code>TARGET_FUNCTION_ARG_PADDING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fARG_005fROUND_005fBOUNDARY"><code>TARGET_FUNCTION_ARG_ROUND_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fFUNCTION_005fATTRIBUTE_005fINLINABLE_005fP"><code>TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fFUNCTION_005fINCOMING_005fARG"><code>TARGET_FUNCTION_INCOMING_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tail-Calls.html#index-TARGET_005fFUNCTION_005fOK_005fFOR_005fSIBCALL"><code>TARGET_FUNCTION_OK_FOR_SIBCALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tail-Calls.html#Tail-Calls">Tail Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-TARGET_005fFUNCTION_005fVALUE"><code>TARGET_FUNCTION_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-TARGET_005fFUNCTION_005fVALUE_005fREGNO_005fP"><code>TARGET_FUNCTION_VALUE_REGNO_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGCOV_005fTYPE_005fSIZE"><code>TARGET_GCOV_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGENERATE_005fVERSION_005fDISPATCHER_005fBODY"><code>TARGET_GENERATE_VERSION_DISPATCHER_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGEN_005fCCMP_005fFIRST"><code>TARGET_GEN_CCMP_FIRST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGEN_005fCCMP_005fNEXT"><code>TARGET_GEN_CCMP_NEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGET_005fDRAP_005fRTX"><code>TARGET_GET_DRAP_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGET_005fFUNCTION_005fVERSIONS_005fDISPATCHER"><code>TARGET_GET_FUNCTION_VERSIONS_DISPATCHER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-TARGET_005fGET_005fMULTILIB_005fABI_005fNAME"><code>TARGET_GET_MULTILIB_ABI_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="PCH-Target.html#index-TARGET_005fGET_005fPCH_005fVALIDITY"><code>TARGET_GET_PCH_VALIDITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PCH-Target.html#PCH-Target">PCH Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fGET_005fRAW_005fARG_005fMODE"><code>TARGET_GET_RAW_ARG_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fGET_005fRAW_005fRESULT_005fMODE"><code>TARGET_GET_RAW_RESULT_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-TARGET_005fGET_005fVALID_005fOPTION_005fVALUES"><code>TARGET_GET_VALID_OPTION_VALUES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fGIMPLE_005fFOLD_005fBUILTIN"><code>TARGET_GIMPLE_FOLD_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fGIMPLIFY_005fVA_005fARG_005fEXPR"><code>TARGET_GIMPLIFY_VA_ARG_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fADJUST_005fPRIVATE_005fDECL"><code>TARGET_GOACC_ADJUST_PRIVATE_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fCREATE_005fWORKER_005fBROADCAST_005fRECORD"><code>TARGET_GOACC_CREATE_WORKER_BROADCAST_RECORD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fDIM_005fLIMIT"><code>TARGET_GOACC_DIM_LIMIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fEXPAND_005fVAR_005fDECL"><code>TARGET_GOACC_EXPAND_VAR_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fFORK_005fJOIN"><code>TARGET_GOACC_FORK_JOIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fREDUCTION"><code>TARGET_GOACC_REDUCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fSHARED_005fMEM_005fLAYOUT"><code>TARGET_GOACC_SHARED_MEM_LAYOUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fGOACC_005fVALIDATE_005fDIMS"><code>TARGET_GOACC_VALIDATE_DIMS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fHANDLE_005fC_005fOPTION"><code>TARGET_HANDLE_C_OPTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fHANDLE_005fGENERIC_005fATTRIBUTE"><code>TARGET_HANDLE_GENERIC_ATTRIBUTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fHANDLE_005fOPTION"><code>TARGET_HANDLE_OPTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-TARGET_005fHARD_005fREGNO_005fCALL_005fPART_005fCLOBBERED"><code>TARGET_HARD_REGNO_CALL_PART_CLOBBERED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-TARGET_005fHARD_005fREGNO_005fMODE_005fOK"><code>TARGET_HARD_REGNO_MODE_OK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-TARGET_005fHARD_005fREGNO_005fNREGS"><code>TARGET_HARD_REGNO_NREGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-TARGET_005fHARD_005fREGNO_005fSCRATCH_005fOK"><code>TARGET_HARD_REGNO_SCRATCH_OK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fHAS_005fIFUNC_005fP"><code>TARGET_HAS_IFUNC_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fHAS_005fNO_005fHW_005fDIVIDE"><code>TARGET_HAS_NO_HW_DIVIDE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fHAVE_005fCONDITIONAL_005fEXECUTION"><code>TARGET_HAVE_CONDITIONAL_EXECUTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fHAVE_005fCOUNT_005fREG_005fDECR_005fP"><code>TARGET_HAVE_COUNT_REG_DECR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-for-Initialization.html#index-TARGET_005fHAVE_005fCTORS_005fDTORS"><code>TARGET_HAVE_CTORS_DTORS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-for-Initialization.html#Macros-for-Initialization">Macros for Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fHAVE_005fNAMED_005fSECTIONS"><code>TARGET_HAVE_NAMED_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fHAVE_005fSHADOW_005fCALL_005fSTACK"><code>TARGET_HAVE_SHADOW_CALL_STACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fHAVE_005fSPECULATION_005fSAFE_005fVALUE"><code>TARGET_HAVE_SPECULATION_SAFE_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fHAVE_005fSRODATA_005fSECTION"><code>TARGET_HAVE_SRODATA_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS"><code>TARGET_HAVE_SWITCHABLE_BSS_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fHAVE_005fTLS"><code>TARGET_HAVE_TLS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fIFUNC_005fREF_005fLOCAL_005fOK"><code>TARGET_IFUNC_REF_LOCAL_OK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINIT_005fBUILTINS"><code>TARGET_INIT_BUILTINS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fINIT_005fDWARF_005fREG_005fSIZES_005fEXTRA"><code>TARGET_INIT_DWARF_REG_SIZES_EXTRA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fINIT_005fLIBFUNCS"><code>TARGET_INIT_LIBFUNCS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fINIT_005fPIC_005fREG"><code>TARGET_INIT_PIC_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fINSERT_005fATTRIBUTES"><code>TARGET_INSERT_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Basics.html#index-TARGET_005fINSN_005fCALLEE_005fABI"><code>TARGET_INSN_CALLEE_ABI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Basics.html#Register-Basics">Register Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fINSN_005fCOST"><code>TARGET_INSN_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fINSTANTIATE_005fDECLS"><code>TARGET_INSTANTIATE_DECLS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINVALID_005fARG_005fFOR_005fUNPROTOTYPED_005fFN"><code>TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINVALID_005fBINARY_005fOP"><code>TARGET_INVALID_BINARY_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINVALID_005fCONVERSION"><code>TARGET_INVALID_CONVERSION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINVALID_005fUNARY_005fOP"><code>TARGET_INVALID_UNARY_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fINVALID_005fWITHIN_005fDOLOOP"><code>TARGET_INVALID_WITHIN_DOLOOP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fIN_005fSMALL_005fDATA_005fP"><code>TARGET_IN_SMALL_DATA_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fIRA_005fCHANGE_005fPSEUDO_005fALLOCNO_005fCLASS"><code>TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Profiling.html#index-TARGET_005fKEEP_005fLEAF_005fWHEN_005fPROFILED"><code>TARGET_KEEP_LEAF_WHEN_PROFILED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Profiling.html#Profiling">Profiling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fLEGITIMATE_005fADDRESS_005fP"><code>TARGET_LEGITIMATE_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fLEGITIMATE_005fCOMBINED_005fINSN"><code>TARGET_LEGITIMATE_COMBINED_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fLEGITIMATE_005fCONSTANT_005fP"><code>TARGET_LEGITIMATE_CONSTANT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fLEGITIMIZE_005fADDRESS"><code>TARGET_LEGITIMIZE_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fLEGITIMIZE_005fADDRESS_005fDISPLACEMENT"><code>TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-TARGET_005fLIBCALL_005fVALUE"><code>TARGET_LIBCALL_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fLIBC_005fHAS_005fFAST_005fFUNCTION"><code>TARGET_LIBC_HAS_FAST_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fLIBC_005fHAS_005fFUNCTION"><code>TARGET_LIBC_HAS_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fLIBFUNC_005fGNU_005fPREFIX"><code>TARGET_LIBFUNC_GNU_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fLIBGCC_005fCMP_005fRETURN_005fMODE"><code>TARGET_LIBGCC_CMP_RETURN_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fLIBGCC_005fFLOATING_005fMODE_005fSUPPORTED_005fP"><code>TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fLIBGCC_005fSDATA_005fSECTION"><code>TARGET_LIBGCC_SDATA_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fLIBGCC_005fSHIFT_005fCOUNT_005fMODE"><code>TARGET_LIBGCC_SHIFT_COUNT_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Library-Calls.html#index-TARGET_005fLIB_005fINT_005fCMP_005fBIASED"><code>TARGET_LIB_INT_CMP_BIASED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Library-Calls.html#Library-Calls">Library Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fLOOP_005fUNROLL_005fADJUST"><code>TARGET_LOOP_UNROLL_ADJUST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fLOWER_005fLOCAL_005fDECL_005fALIGNMENT"><code>TARGET_LOWER_LOCAL_DECL_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fLRA_005fP"><code>TARGET_LRA_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMACHINE_005fDEPENDENT_005fREORG"><code>TARGET_MACHINE_DEPENDENT_REORG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fMANGLE_005fASSEMBLER_005fNAME"><code>TARGET_MANGLE_ASSEMBLER_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fMANGLE_005fDECL_005fASSEMBLER_005fNAME"><code>TARGET_MANGLE_DECL_ASSEMBLER_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fMANGLE_005fTYPE"><code>TARGET_MANGLE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-TARGET_005fMAX_005fANCHOR_005fOFFSET"><code>TARGET_MAX_ANCHOR_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fMAX_005fNOCE_005fIFCVT_005fSEQ_005fCOST"><code>TARGET_MAX_NOCE_IFCVT_SEQ_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMD_005fASM_005fADJUST"><code>TARGET_MD_ASM_ADJUST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fMEMBER_005fTYPE_005fFORCES_005fBLK"><code>TARGET_MEMBER_TYPE_FORCES_BLK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMMODEL_005fCHECK"><code>TARGET_MEMMODEL_CHECK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fMEMORY_005fMOVE_005fCOST"><code>TARGET_MEMORY_MOVE_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fADD_005fTAG"><code>TARGET_MEMTAG_ADD_TAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fCAN_005fTAG_005fADDRESSES"><code>TARGET_MEMTAG_CAN_TAG_ADDRESSES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fEXTRACT_005fTAG"><code>TARGET_MEMTAG_EXTRACT_TAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fGRANULE_005fSIZE"><code>TARGET_MEMTAG_GRANULE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fINSERT_005fRANDOM_005fTAG"><code>TARGET_MEMTAG_INSERT_RANDOM_TAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fSET_005fTAG"><code>TARGET_MEMTAG_SET_TAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fTAG_005fSIZE"><code>TARGET_MEMTAG_TAG_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMEMTAG_005fUNTAGGED_005fPOINTER"><code>TARGET_MEMTAG_UNTAGGED_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fMEM_005fCONSTRAINT"><code>TARGET_MEM_CONSTRAINT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-References.html#index-TARGET_005fMEM_005fREF"><code>TARGET_MEM_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-References.html#Storage-References">Storage References</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fMERGE_005fDECL_005fATTRIBUTES"><code>TARGET_MERGE_DECL_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fMERGE_005fTYPE_005fATTRIBUTES"><code>TARGET_MERGE_TYPE_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-TARGET_005fMIN_005fANCHOR_005fOFFSET"><code>TARGET_MIN_ANCHOR_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMIN_005fARITHMETIC_005fPRECISION"><code>TARGET_MIN_ARITHMETIC_PRECISION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMIN_005fDIVISIONS_005fFOR_005fRECIP_005fMUL"><code>TARGET_MIN_DIVISIONS_FOR_RECIP_MUL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Values-in-Registers.html#index-TARGET_005fMODES_005fTIEABLE_005fP"><code>TARGET_MODES_TIEABLE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Values-in-Registers.html#Values-in-Registers">Values in Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fAFTER"><code>TARGET_MODE_AFTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fMODE_005fDEPENDENT_005fADDRESS_005fP"><code>TARGET_MODE_DEPENDENT_ADDRESS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fEMIT"><code>TARGET_MODE_EMIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fENTRY"><code>TARGET_MODE_ENTRY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fEXIT"><code>TARGET_MODE_EXIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fNEEDED"><code>TARGET_MODE_NEEDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Mode-Switching.html#index-TARGET_005fMODE_005fPRIORITY"><code>TARGET_MODE_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Mode-Switching.html#Mode-Switching">Mode Switching</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fMODE_005fREP_005fEXTENDED"><code>TARGET_MODE_REP_EXTENDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fMS_005fBITFIELD_005fLAYOUT_005fP"><code>TARGET_MS_BITFIELD_LAYOUT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fMUST_005fPASS_005fIN_005fSTACK"><code>TARGET_MUST_PASS_IN_STACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fMUST_005fPASS_005fIN_005fSTACK_002c-and-TARGET_005fFUNCTION_005fARG"><code>TARGET_MUST_PASS_IN_STACK</code>, and <code>TARGET_FUNCTION_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fNARROW_005fVOLATILE_005fBITFIELD"><code>TARGET_NARROW_VOLATILE_BITFIELD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fNEED_005fIPA_005fFN_005fTARGET_005fINFO"><code>TARGET_NEED_IPA_FN_TARGET_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fNEW_005fADDRESS_005fPROFITABLE_005fP"><code>TARGET_NEW_ADDRESS_PROFITABLE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fNOCE_005fCONVERSION_005fPROFITABLE_005fP"><code>TARGET_NOCE_CONVERSION_PROFITABLE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fNO_005fREGISTER_005fALLOCATION"><code>TARGET_NO_REGISTER_ALLOCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fNO_005fSPECULATION_005fIN_005fDELAY_005fSLOTS_005fP"><code>TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fN_005fFORMAT_005fTYPES"><code>TARGET_N_FORMAT_TYPES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOBJC_005fCONSTRUCT_005fSTRING_005fOBJECT"><code>TARGET_OBJC_CONSTRUCT_STRING_OBJECT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOBJC_005fDECLARE_005fCLASS_005fDEFINITION"><code>TARGET_OBJC_DECLARE_CLASS_DEFINITION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOBJC_005fDECLARE_005fUNRESOLVED_005fCLASS_005fREFERENCE"><code>TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOBJECT_005fSUFFIX"><code>TARGET_OBJECT_SUFFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOBJFMT_005fCPP_005fBUILTINS"><code>TARGET_OBJFMT_CPP_BUILTINS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOFFLOAD_005fOPTIONS"><code>TARGET_OFFLOAD_OPTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-TARGET_005fOMIT_005fSTRUCT_005fRETURN_005fREG"><code>TARGET_OMIT_STRUCT_RETURN_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fOMP_005fDEVICE_005fKIND_005fARCH_005fISA"><code>TARGET_OMP_DEVICE_KIND_ARCH_ISA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fOPTAB_005fSUPPORTED_005fP"><code>TARGET_OPTAB_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOPTF"><code>TARGET_OPTF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fFUNCTION_005fVERSIONS"><code>TARGET_OPTION_FUNCTION_VERSIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOPTION_005fINIT_005fSTRUCT"><code>TARGET_OPTION_INIT_STRUCT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOPTION_005fOPTIMIZATION_005fTABLE"><code>TARGET_OPTION_OPTIMIZATION_TABLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fOVERRIDE"><code>TARGET_OPTION_OVERRIDE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fPOST_005fSTREAM_005fIN"><code>TARGET_OPTION_POST_STREAM_IN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fPRAGMA_005fPARSE"><code>TARGET_OPTION_PRAGMA_PARSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fPRINT"><code>TARGET_OPTION_PRINT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fRESTORE"><code>TARGET_OPTION_RESTORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fSAVE"><code>TARGET_OPTION_SAVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fOPTION_005fVALID_005fATTRIBUTE_005fP"><code>TARGET_OPTION_VALID_ATTRIBUTE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOS_005fCPP_005fBUILTINS"><code>TARGET_OS_CPP_BUILTINS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fOVERLAP_005fOP_005fBY_005fPIECES_005fP"><code>TARGET_OVERLAP_OP_BY_PIECES_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOVERRIDES_005fFORMAT_005fATTRIBUTES"><code>TARGET_OVERRIDES_FORMAT_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOVERRIDES_005fFORMAT_005fATTRIBUTES_005fCOUNT"><code>TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fOVERRIDES_005fFORMAT_005fINIT"><code>TARGET_OVERRIDES_FORMAT_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fOVERRIDE_005fOPTIONS_005fAFTER_005fCHANGE"><code>TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fPASS_005fBY_005fREFERENCE"><code>TARGET_PASS_BY_REFERENCE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="PCH-Target.html#index-TARGET_005fPCH_005fVALID_005fP"><code>TARGET_PCH_VALID_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PCH-Target.html#PCH-Target">PCH Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fPOSIX_005fIO"><code>TARGET_POSIX_IO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fPRECOMPUTE_005fTLS_005fP"><code>TARGET_PRECOMPUTE_TLS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fPREDICT_005fDOLOOP_005fP"><code>TARGET_PREDICT_DOLOOP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fPREFERRED_005fDOLOOP_005fMODE"><code>TARGET_PREFERRED_DOLOOP_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fPREFERRED_005fELSE_005fVALUE"><code>TARGET_PREFERRED_ELSE_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fPREFERRED_005fOUTPUT_005fRELOAD_005fCLASS"><code>TARGET_PREFERRED_OUTPUT_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fPREFERRED_005fRELOAD_005fCLASS"><code>TARGET_PREFERRED_RELOAD_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fPREFERRED_005fRENAME_005fCLASS"><code>TARGET_PREFERRED_RENAME_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="PCH-Target.html#index-TARGET_005fPREPARE_005fPCH_005fSAVE"><code>TARGET_PREPARE_PCH_SAVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="PCH-Target.html#PCH-Target">PCH Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fPRETEND_005fOUTGOING_005fVARARGS_005fNAMED"><code>TARGET_PRETEND_OUTGOING_VARARGS_NAMED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fPROFILE_005fBEFORE_005fPROLOGUE"><code>TARGET_PROFILE_BEFORE_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fPROMOTED_005fTYPE"><code>TARGET_PROMOTED_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fPROMOTE_005fFUNCTION_005fMODE"><code>TARGET_PROMOTE_FUNCTION_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-TARGET_005fPROMOTE_005fPROTOTYPES"><code>TARGET_PROMOTE_PROTOTYPES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-TARGET_005fPTRMEMFUNC_005fVBIT_005fLOCATION"><code>TARGET_PTRMEMFUNC_VBIT_LOCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-TARGET_005fPUSH_005fARGUMENT"><code>TARGET_PUSH_ARGUMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fRECORD_005fOFFLOAD_005fSYMBOL"><code>TARGET_RECORD_OFFLOAD_SYMBOL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fREF_005fMAY_005fALIAS_005fERRNO"><code>TARGET_REF_MAY_ALIAS_ERRNO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fREGISTER_005fMOVE_005fCOST"><code>TARGET_REGISTER_MOVE_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fREGISTER_005fPRIORITY"><code>TARGET_REGISTER_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fREGISTER_005fUSAGE_005fLEVELING_005fP"><code>TARGET_REGISTER_USAGE_LEVELING_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fRELAYOUT_005fFUNCTION"><code>TARGET_RELAYOUT_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fRESET_005fLOCATION_005fVIEW"><code>TARGET_RESET_LOCATION_VIEW</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fRESOLVE_005fOVERLOADED_005fBUILTIN"><code>TARGET_RESOLVE_OVERLOADED_BUILTIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fRETURN_005fIN_005fMEMORY"><code>TARGET_RETURN_IN_MEMORY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-TARGET_005fRETURN_005fIN_005fMSB"><code>TARGET_RETURN_IN_MSB</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Arguments.html#index-TARGET_005fRETURN_005fPOPS_005fARGS"><code>TARGET_RETURN_POPS_ARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fRTX_005fCOSTS"><code>TARGET_RTX_COSTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fRUN_005fTARGET_005fSELFTESTS"><code>TARGET_RUN_TARGET_SELFTESTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fSCALAR_005fMODE_005fSUPPORTED_005fP"><code>TARGET_SCALAR_MODE_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fADJUST_005fCOST"><code>TARGET_SCHED_ADJUST_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fADJUST_005fPRIORITY"><code>TARGET_SCHED_ADJUST_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fALLOC_005fSCHED_005fCONTEXT"><code>TARGET_SCHED_ALLOC_SCHED_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fCAN_005fSPECULATE_005fINSN"><code>TARGET_SCHED_CAN_SPECULATE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fCLEAR_005fSCHED_005fCONTEXT"><code>TARGET_SCHED_CLEAR_SCHED_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDEPENDENCIES_005fEVALUATION_005fHOOK"><code>TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDFA_005fNEW_005fCYCLE"><code>TARGET_SCHED_DFA_NEW_CYCLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDFA_005fPOST_005fADVANCE_005fCYCLE"><code>TARGET_SCHED_DFA_POST_ADVANCE_CYCLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDFA_005fPOST_005fCYCLE_005fINSN"><code>TARGET_SCHED_DFA_POST_CYCLE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDFA_005fPRE_005fADVANCE_005fCYCLE"><code>TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDFA_005fPRE_005fCYCLE_005fINSN"><code>TARGET_SCHED_DFA_PRE_CYCLE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDISPATCH"><code>TARGET_SCHED_DISPATCH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fDISPATCH_005fDO"><code>TARGET_SCHED_DISPATCH_DO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fEXPOSED_005fPIPELINE"><code>TARGET_SCHED_EXPOSED_PIPELINE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFINISH"><code>TARGET_SCHED_FINISH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFINISH_005fGLOBAL"><code>TARGET_SCHED_FINISH_GLOBAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fBACKTRACK"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fBEGIN"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fDFA_005fLOOKAHEAD"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fDFA_005fLOOKAHEAD_005fGUARD"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fEND"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_END</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fFINI"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_FINI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fINIT"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fISSUE"><code>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFREE_005fSCHED_005fCONTEXT"><code>TARGET_SCHED_FREE_SCHED_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fFUSION_005fPRIORITY"><code>TARGET_SCHED_FUSION_PRIORITY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fGEN_005fSPEC_005fCHECK"><code>TARGET_SCHED_GEN_SPEC_CHECK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fH_005fI_005fD_005fEXTENDED"><code>TARGET_SCHED_H_I_D_EXTENDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fINIT"><code>TARGET_SCHED_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fINIT_005fDFA_005fPOST_005fCYCLE_005fINSN"><code>TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fINIT_005fDFA_005fPRE_005fCYCLE_005fINSN"><code>TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fINIT_005fGLOBAL"><code>TARGET_SCHED_INIT_GLOBAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fINIT_005fSCHED_005fCONTEXT"><code>TARGET_SCHED_INIT_SCHED_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fISSUE_005fRATE"><code>TARGET_SCHED_ISSUE_RATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fIS_005fCOSTLY_005fDEPENDENCE"><code>TARGET_SCHED_IS_COSTLY_DEPENDENCE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fMACRO_005fFUSION_005fP"><code>TARGET_SCHED_MACRO_FUSION_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fMACRO_005fFUSION_005fPAIR_005fP"><code>TARGET_SCHED_MACRO_FUSION_PAIR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fNEEDS_005fBLOCK_005fP"><code>TARGET_SCHED_NEEDS_BLOCK_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fREASSOCIATION_005fWIDTH"><code>TARGET_SCHED_REASSOCIATION_WIDTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fREORDER"><code>TARGET_SCHED_REORDER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fREORDER2"><code>TARGET_SCHED_REORDER2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fSET_005fSCHED_005fCONTEXT"><code>TARGET_SCHED_SET_SCHED_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fSET_005fSCHED_005fFLAGS"><code>TARGET_SCHED_SET_SCHED_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fSMS_005fRES_005fMII"><code>TARGET_SCHED_SMS_RES_MII</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fSPECULATE_005fINSN"><code>TARGET_SCHED_SPECULATE_INSN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scheduling.html#index-TARGET_005fSCHED_005fVARIABLE_005fISSUE"><code>TARGET_SCHED_VARIABLE_ISSUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scheduling.html#Scheduling">Scheduling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fSECONDARY_005fMEMORY_005fNEEDED"><code>TARGET_SECONDARY_MEMORY_NEEDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fSECONDARY_005fMEMORY_005fNEEDED_005fMODE"><code>TARGET_SECONDARY_MEMORY_NEEDED_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fSECONDARY_005fRELOAD"><code>TARGET_SECONDARY_RELOAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="File-Framework.html#index-TARGET_005fSECTION_005fTYPE_005fFLAGS"><code>TARGET_SECTION_TYPE_FLAGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="File-Framework.html#File-Framework">File Framework</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fSELECT_005fEARLY_005fREMAT_005fMODES"><code>TARGET_SELECT_EARLY_REMAT_MODES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fSETJMP_005fPRESERVES_005fNONVOLATILE_005fREGS_005fP"><code>TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fSETUP_005fINCOMING_005fVARARGS"><code>TARGET_SETUP_INCOMING_VARARGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fSET_005fCURRENT_005fFUNCTION"><code>TARGET_SET_CURRENT_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fSET_005fDEFAULT_005fTYPE_005fATTRIBUTES"><code>TARGET_SET_DEFAULT_TYPE_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tail-Calls.html#index-TARGET_005fSET_005fUP_005fBY_005fPROLOGUE"><code>TARGET_SET_UP_BY_PROLOGUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tail-Calls.html#Tail-Calls">Tail Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fSHIFT_005fTRUNCATION_005fMASK"><code>TARGET_SHIFT_TRUNCATION_MASK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fCOMPONENTS_005fFOR_005fBB"><code>TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fDISQUALIFY_005fCOMPONENTS"><code>TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fEMIT_005fEPILOGUE_005fCOMPONENTS"><code>TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fEMIT_005fPROLOGUE_005fCOMPONENTS"><code>TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fGET_005fSEPARATE_005fCOMPONENTS"><code>TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#index-TARGET_005fSHRINK_005fWRAP_005fSET_005fHANDLED_005fCOMPONENTS"><code>TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fSIMD_005fCLONE_005fADJUST"><code>TARGET_SIMD_CLONE_ADJUST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fSIMD_005fCLONE_005fCOMPUTE_005fVECSIZE_005fAND_005fSIMDLEN"><code>TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fSIMD_005fCLONE_005fUSABLE"><code>TARGET_SIMD_CLONE_USABLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fSIMT_005fVF"><code>TARGET_SIMT_VF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fSLOW_005fUNALIGNED_005fACCESS"><code>TARGET_SLOW_UNALIGNED_ACCESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fSMALL_005fREGISTER_005fCLASSES_005fFOR_005fMODE_005fP"><code>TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fSPECULATION_005fSAFE_005fVALUE"><code>TARGET_SPECULATION_SAFE_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Classes.html#index-TARGET_005fSPILL_005fCLASS"><code>TARGET_SPILL_CLASS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Classes.html#Register-Classes">Register Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fSPLIT_005fCOMPLEX_005fARG"><code>TARGET_SPLIT_COMPLEX_ARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Checking.html#index-TARGET_005fSTACK_005fCLASH_005fPROTECTION_005fALLOCA_005fPROBE_005fRANGE"><code>TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Checking.html#Stack-Checking">Stack Checking</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-TARGET_005fSTACK_005fPROTECT_005fFAIL"><code>TARGET_STACK_PROTECT_FAIL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-TARGET_005fSTACK_005fPROTECT_005fGUARD"><code>TARGET_STACK_PROTECT_GUARD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-TARGET_005fSTACK_005fPROTECT_005fRUNTIME_005fENABLED_005fP"><code>TARGET_STACK_PROTECT_RUNTIME_ENABLED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Layout.html#index-TARGET_005fSTARTING_005fFRAME_005fOFFSET"><code>TARGET_STARTING_FRAME_OFFSET</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Layout.html#Frame-Layout">Frame Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-TARGET_005fSTARTING_005fFRAME_005fOFFSET-and-virtual-registers"><code>TARGET_STARTING_FRAME_OFFSET</code> and virtual registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Frame-Registers.html#index-TARGET_005fSTATIC_005fCHAIN"><code>TARGET_STATIC_CHAIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Frame-Registers.html#Frame-Registers">Frame Registers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fSTATIC_005fRTX_005fALIGNMENT"><code>TARGET_STATIC_RTX_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-TARGET_005fSTRICT_005fARGUMENT_005fNAMING"><code>TARGET_STRICT_ARGUMENT_NAMING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Run_002dtime-Target.html#index-TARGET_005fSTRING_005fOBJECT_005fREF_005fTYPE_005fP"><code>TARGET_STRING_OBJECT_REF_TYPE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TARGET_005fSTRIP_005fNAME_005fENCODING"><code>TARGET_STRIP_NAME_ENCODING</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fSTRUCT_005fVALUE_005fRTX"><code>TARGET_STRUCT_VALUE_RTX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Stack-Smashing-Protection.html#index-TARGET_005fSUPPORTS_005fSPLIT_005fSTACK"><code>TARGET_SUPPORTS_SPLIT_STACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fSUPPORTS_005fWEAK"><code>TARGET_SUPPORTS_WEAK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fSUPPORTS_005fWIDE_005fINT"><code>TARGET_SUPPORTS_WIDE_INT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fTERMINATE_005fDW2_005fEH_005fFRAME_005fINFO"><code>TARGET_TERMINATE_DW2_EH_FRAME_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TARGET_005fTRAMPOLINE_005fADJUST_005fADDRESS"><code>TARGET_TRAMPOLINE_ADJUST_ADDRESS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TARGET_005fTRAMPOLINE_005fINIT"><code>TARGET_TRAMPOLINE_INIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fTRANSLATE_005fMODE_005fATTRIBUTE"><code>TARGET_TRANSLATE_MODE_ATTRIBUTE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fTRULY_005fNOOP_005fTRUNCATION"><code>TARGET_TRULY_NOOP_TRUNCATION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fUNSPEC_005fMAY_005fTRAP_005fP"><code>TARGET_UNSPEC_MAY_TRAP_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Region-Output.html#index-TARGET_005fUNWIND_005fTABLES_005fDEFAULT"><code>TARGET_UNWIND_TABLES_DEFAULT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fUNWIND_005fWORD_005fMODE"><code>TARGET_UNWIND_WORD_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fUPDATE_005fIPA_005fFN_005fTARGET_005fINFO"><code>TARGET_UPDATE_IPA_FN_TARGET_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fUPDATE_005fSTACK_005fBOUNDARY"><code>TARGET_UPDATE_STACK_BOUNDARY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Exception-Handling.html#index-TARGET_005fUSES_005fWEAK_005fUNWIND_005fINFO"><code>TARGET_USES_WEAK_UNWIND_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Exception-Handling.html#Exception-Handling">Exception Handling</a></td></tr>
+<tr><td></td><td valign="top"><a href="Anchored-Addresses.html#index-TARGET_005fUSE_005fANCHORS_005fFOR_005fSYMBOL_005fP"><code>TARGET_USE_ANCHORS_FOR_SYMBOL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fUSE_005fBLOCKS_005fFOR_005fCONSTANT_005fP"><code>TARGET_USE_BLOCKS_FOR_CONSTANT_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fUSE_005fBLOCKS_005fFOR_005fDECL_005fP"><code>TARGET_USE_BLOCKS_FOR_DECL_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-TARGET_005fUSE_005fBY_005fPIECES_005fINFRASTRUCTURE_005fP"><code>TARGET_USE_BY_PIECES_INFRASTRUCTURE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fUSE_005fPSEUDO_005fPIC_005fREG"><code>TARGET_USE_PSEUDO_PIC_REG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Attributes.html#index-TARGET_005fVALID_005fDLLIMPORT_005fATTRIBUTE_005fP"><code>TARGET_VALID_DLLIMPORT_ATTRIBUTE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Attributes.html#Target-Attributes">Target Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fVALID_005fPOINTER_005fMODE"><code>TARGET_VALID_POINTER_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fAUTOVECTORIZE_005fVECTOR_005fMODES"><code>TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fGATHER"><code>TARGET_VECTORIZE_BUILTIN_GATHER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fMASK_005fFOR_005fLOAD"><code>TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fMD_005fVECTORIZED_005fFUNCTION"><code>TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fSCATTER"><code>TARGET_VECTORIZE_BUILTIN_SCATTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fVECTORIZATION_005fCOST"><code>TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fBUILTIN_005fVECTORIZED_005fFUNCTION"><code>TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fCREATE_005fCOSTS"><code>TARGET_VECTORIZE_CREATE_COSTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fEMPTY_005fMASK_005fIS_005fEXPENSIVE"><code>TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fGET_005fMASK_005fMODE"><code>TARGET_VECTORIZE_GET_MASK_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fPREFERRED_005fDIV_005fAS_005fSHIFTS_005fOVER_005fMULT"><code>TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fPREFERRED_005fSIMD_005fMODE"><code>TARGET_VECTORIZE_PREFERRED_SIMD_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fPREFERRED_005fVECTOR_005fALIGNMENT"><code>TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fRELATED_005fMODE"><code>TARGET_VECTORIZE_RELATED_MODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fSPLIT_005fREDUCTION"><code>TARGET_VECTORIZE_SPLIT_REDUCTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fSUPPORT_005fVECTOR_005fMISALIGNMENT"><code>TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fVECTOR_005fALIGNMENT_005fREACHABLE"><code>TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-TARGET_005fVECTORIZE_005fVEC_005fPERM_005fCONST"><code>TARGET_VECTORIZE_VEC_PERM_CONST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-TARGET_005fVECTOR_005fALIGNMENT"><code>TARGET_VECTOR_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Register-Arguments.html#index-TARGET_005fVECTOR_005fMODE_005fSUPPORTED_005fP"><code>TARGET_VECTOR_MODE_SUPPORTED_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Register-Arguments.html#Register-Arguments">Register Arguments</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fVERIFY_005fTYPE_005fCONTEXT"><code>TARGET_VERIFY_TYPE_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-TARGET_005fVTABLE_005fDATA_005fENTRY_005fDISTANCE"><code>TARGET_VTABLE_DATA_ENTRY_DISTANCE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-TARGET_005fVTABLE_005fENTRY_005fALIGN"><code>TARGET_VTABLE_ENTRY_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-TARGET_005fVTABLE_005fUSES_005fDESCRIPTORS"><code>TARGET_VTABLE_USES_DESCRIPTORS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="DWARF.html#index-TARGET_005fWANT_005fDEBUG_005fPUB_005fSECTIONS"><code>TARGET_WANT_DEBUG_PUB_SECTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="DWARF.html#DWARF">DWARF</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tail-Calls.html#index-TARGET_005fWARN_005fFUNC_005fRETURN"><code>TARGET_WARN_FUNC_RETURN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tail-Calls.html#Tail-Calls">Tail Calls</a></td></tr>
+<tr><td></td><td valign="top"><a href="Aggregate-Return.html#index-TARGET_005fWARN_005fPARAMETER_005fPASSING_005fABI"><code>TARGET_WARN_PARAMETER_PASSING_ABI</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Aggregate-Return.html#Aggregate-Return">Aggregate Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TARGET_005fWEAK_005fNOT_005fIN_005fARCHIVE_005fTOC"><code>TARGET_WEAK_NOT_IN_ARCHIVE_TOC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-TARGET_005fZERO_005fCALL_005fUSED_005fREGS"><code>TARGET_ZERO_CALL_USED_REGS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-tbranch_005fopmode3-instruction-pattern"><code>tbranch_<var>op</var><var>mode</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TCmode"><code>TCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TDmode"><code>TDmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-TEMPLATE_005fDECL"><code>TEMPLATE_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Temporaries.html#index-Temporaries">Temporaries</a>:</td><td>&nbsp;</td><td valign="top"><a href="Temporaries.html#Temporaries">Temporaries</a></td></tr>
+<tr><td></td><td valign="top"><a href="Initialization.html#index-termination-routines">termination routines</a>:</td><td>&nbsp;</td><td valign="top"><a href="Initialization.html#Initialization">Initialization</a></td></tr>
+<tr><td></td><td valign="top"><a href="C-Constraint-Interface.html#index-testing-constraints">testing constraints</a>:</td><td>&nbsp;</td><td valign="top"><a href="C-Constraint-Interface.html#C-Constraint-Interface">C Constraint Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TEXT_005fSECTION_005fASM_005fOP"><code>TEXT_SECTION_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TFmode"><code>TFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Language.html#index-The-Language">The Language</a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Language.html#The-Language">The Language</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-THEN_005fCLAUSE"><code>THEN_CLAUSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-THREAD_005fMODEL_005fSPEC"><code>THREAD_MODEL_SPEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-THROW_005fEXPR"><code>THROW_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-THUNK_005fDECL"><code>THUNK_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-THUNK_005fDELTA"><code>THUNK_DELTA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TImode"><code>TImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insns.html#index-TImode_002c-in-insn"><code>TImode</code>, in <code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Insns.html#Insns">Insns</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TLS_005fCOMMON_005fASM_005fOP"><code>TLS_COMMON_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-TLS_005fSECTION_005fASM_005fFLAG"><code>TLS_SECTION_ASM_FLAG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Target-Macros.html#index-tm_002eh-macros"><samp>tm.h</samp> macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="Target-Macros.html#Target-Macros">Target Macros</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TQFmode"><code>TQFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-TQmode"><code>TQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-trampolines-for-nested-functions">trampolines for nested functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TRAMPOLINE_005fALIGNMENT"><code>TRAMPOLINE_ALIGNMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TRAMPOLINE_005fSECTION"><code>TRAMPOLINE_SECTION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TRAMPOLINE_005fSIZE"><code>TRAMPOLINE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Trampolines.html#index-TRANSFER_005fFROM_005fTRAMPOLINE"><code>TRANSFER_FROM_TRAMPOLINE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Trampolines.html#Trampolines">Trampolines</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-trap-instruction-pattern"><code>trap</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tree-overview.html#index-tree">tree</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tree-overview.html#Tree-overview">Tree overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-tree-1">tree</a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tree-SSA.html#index-Tree-SSA">Tree SSA</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tree-SSA.html#Tree-SSA">Tree SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-TREE_005fCHAIN"><code>TREE_CHAIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tree-overview.html#index-TREE_005fCODE"><code>TREE_CODE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tree-overview.html#Tree-overview">Tree overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005ffits_005fshwi_005fp"><code>tree_fits_shwi_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005ffits_005fuhwi_005fp"><code>tree_fits_uhwi_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-TREE_005fINT_005fCST_005fELT"><code>TREE_INT_CST_ELT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005fint_005fcst_005fequal"><code>tree_int_cst_equal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-TREE_005fINT_005fCST_005fLOW"><code>TREE_INT_CST_LOW</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005fint_005fcst_005flt"><code>tree_int_cst_lt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-TREE_005fINT_005fCST_005fNUNITS"><code>TREE_INT_CST_NUNITS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fLIST"><code>TREE_LIST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-trees.html#index-TREE_005fOPERAND"><code>TREE_OPERAND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-trees.html#Expression-trees">Expression trees</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-TREE_005fPUBLIC"><code>TREE_PUBLIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-TREE_005fPUBLIC-1"><code>TREE_PUBLIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fPURPOSE"><code>TREE_PURPOSE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-TREE_005fREADONLY"><code>TREE_READONLY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-tree_005fsize"><code>tree_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-TREE_005fSTATIC"><code>TREE_STATIC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-TREE_005fSTRING_005fLENGTH"><code>TREE_STRING_LENGTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-TREE_005fSTRING_005fPOINTER"><code>TREE_STRING_POINTER</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Properties.html#index-TREE_005fTHIS_005fVOLATILE"><code>TREE_THIS_VOLATILE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Properties.html#Function-Properties">Function Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005fto_005fshwi"><code>tree_to_shwi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-tree_005fto_005fuhwi"><code>tree_to_uhwi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Macros-and-Functions.html#index-TREE_005fTYPE"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Macros-and-Functions.html#Macros-and-Functions">Macros and Functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TREE_005fTYPE-1"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Working-with-declarations.html#index-TREE_005fTYPE-2"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Working-with-declarations.html#Working-with-declarations">Working with declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-trees.html#index-TREE_005fTYPE-3"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-trees.html#Expression-trees">Expression trees</a></td></tr>
+<tr><td></td><td valign="top"><a href="Expression-trees.html#index-TREE_005fTYPE-4"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Expression-trees.html#Expression-trees">Expression trees</a></td></tr>
+<tr><td></td><td valign="top"><a href="Function-Basics.html#index-TREE_005fTYPE-5"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Function-Basics.html#Function-Basics">Function Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TREE_005fTYPE-6"><code>TREE_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fVALUE"><code>TREE_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fVEC"><code>TREE_VEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fVEC_005fELT"><code>TREE_VEC_ELT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-TREE_005fVEC_005fLENGTH"><code>TREE_VEC_LENGTH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Guidelines-for-Diagnostics.html#index-true-positive">true positive</a>:</td><td>&nbsp;</td><td valign="top"><a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">Guidelines for Diagnostics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-truncate"><code>truncate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-truncmn2-instruction-pattern"><code>trunc<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUNC_005fDIV_005fEXPR"><code>TRUNC_DIV_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUNC_005fMOD_005fEXPR"><code>TRUNC_MOD_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fANDIF_005fEXPR"><code>TRUTH_ANDIF_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fAND_005fEXPR"><code>TRUTH_AND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fNOT_005fEXPR"><code>TRUTH_NOT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fORIF_005fEXPR"><code>TRUTH_ORIF_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fOR_005fEXPR"><code>TRUTH_OR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-TRUTH_005fXOR_005fEXPR"><code>TRUTH_XOR_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-TRY_005fBLOCK"><code>TRY_BLOCK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-TRY_005fHANDLERS"><code>TRY_HANDLERS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-TRY_005fSTMTS"><code>TRY_STMTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tuple-specific-accessors.html#index-Tuple-specific-accessors">Tuple specific accessors</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tuple-specific-accessors.html#Tuple-specific-accessors">Tuple specific accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Tuple-representation.html#index-tuples">tuples</a>:</td><td>&nbsp;</td><td valign="top"><a href="Tuple-representation.html#Tuple-representation">Tuple representation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-type">type</a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-type-declaration">type declaration</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPENAME_005fTYPE"><code>TYPENAME_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPENAME_005fTYPE_005fFULLNAME"><code>TYPENAME_TYPE_FULLNAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPENAME_005fTYPE_005fFULLNAME-1"><code>TYPENAME_TYPE_FULLNAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPEOF_005fTYPE"><code>TYPEOF_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fALIGN"><code>TYPE_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fALIGN-1"><code>TYPE_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fALIGN-2"><code>TYPE_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fALIGN-3"><code>TYPE_ALIGN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fARG_005fTYPES"><code>TYPE_ARG_TYPES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fARG_005fTYPES-1"><code>TYPE_ARG_TYPES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TYPE_005fASM_005fOP"><code>TYPE_ASM_OP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Attributes.html#index-TYPE_005fATTRIBUTES"><code>TYPE_ATTRIBUTES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Attributes.html#Attributes">Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fBINFO"><code>TYPE_BINFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fBUILT_005fIN"><code>TYPE_BUILT_IN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fCANONICAL"><code>TYPE_CANONICAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fCANONICAL-1"><code>TYPE_CANONICAL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fCONTEXT"><code>TYPE_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fCONTEXT-1"><code>TYPE_CONTEXT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-TYPE_005fDECL"><code>TYPE_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fFIELDS"><code>TYPE_FIELDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fFIELDS-1"><code>TYPE_FIELDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fFIELDS-2"><code>TYPE_FIELDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fHAS_005fARRAY_005fNEW_005fOPERATOR"><code>TYPE_HAS_ARRAY_NEW_OPERATOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fHAS_005fDEFAULT_005fCONSTRUCTOR"><code>TYPE_HAS_DEFAULT_CONSTRUCTOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fHAS_005fMUTABLE_005fP"><code>TYPE_HAS_MUTABLE_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fHAS_005fNEW_005fOPERATOR"><code>TYPE_HAS_NEW_OPERATOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fMAIN_005fVARIANT"><code>TYPE_MAIN_VARIANT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fMAIN_005fVARIANT-1"><code>TYPE_MAIN_VARIANT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fMAIN_005fVARIANT-2"><code>TYPE_MAIN_VARIANT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fMAX_005fVALUE"><code>TYPE_MAX_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fMETHOD_005fBASETYPE"><code>TYPE_METHOD_BASETYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fMETHOD_005fBASETYPE-1"><code>TYPE_METHOD_BASETYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fMIN_005fVALUE"><code>TYPE_MIN_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fNAME"><code>TYPE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fNAME-1"><code>TYPE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fNAME-2"><code>TYPE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fNAME-3"><code>TYPE_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-TYPE_005fNOTHROW_005fP"><code>TYPE_NOTHROW_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fOFFSET_005fBASETYPE"><code>TYPE_OFFSET_BASETYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fOFFSET_005fBASETYPE-1"><code>TYPE_OFFSET_BASETYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Label-Output.html#index-TYPE_005fOPERAND_005fFMT"><code>TYPE_OPERAND_FMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Label-Output.html#Label-Output">Label Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fOVERLOADS_005fARRAY_005fREF"><code>TYPE_OVERLOADS_ARRAY_REF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fOVERLOADS_005fARROW"><code>TYPE_OVERLOADS_ARROW</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fOVERLOADS_005fCALL_005fEXPR"><code>TYPE_OVERLOADS_CALL_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fPOLYMORPHIC_005fP"><code>TYPE_POLYMORPHIC_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fPRECISION"><code>TYPE_PRECISION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPRECISION-1"><code>TYPE_PRECISION</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTRDATAMEM_005fP"><code>TYPE_PTRDATAMEM_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTRDATAMEM_005fP-1"><code>TYPE_PTRDATAMEM_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTRFN_005fP"><code>TYPE_PTRFN_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTROBV_005fP"><code>TYPE_PTROBV_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTROB_005fP"><code>TYPE_PTROB_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fPTR_005fP"><code>TYPE_PTR_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fQUAL_005fCONST"><code>TYPE_QUAL_CONST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fQUAL_005fCONST-1"><code>TYPE_QUAL_CONST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fQUAL_005fRESTRICT"><code>TYPE_QUAL_RESTRICT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fQUAL_005fRESTRICT-1"><code>TYPE_QUAL_RESTRICT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fQUAL_005fVOLATILE"><code>TYPE_QUAL_VOLATILE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fQUAL_005fVOLATILE-1"><code>TYPE_QUAL_VOLATILE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Functions-for-C_002b_002b.html#index-TYPE_005fRAISES_005fEXCEPTIONS"><code>TYPE_RAISES_EXCEPTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">Functions for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fSIZE"><code>TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fSIZE-1"><code>TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fSIZE-2"><code>TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fSIZE-3"><code>TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fSTRUCTURAL_005fEQUALITY_005fP"><code>TYPE_STRUCTURAL_EQUALITY_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fSTRUCTURAL_005fEQUALITY_005fP-1"><code>TYPE_STRUCTURAL_EQUALITY_P</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-TYPE_005fUNQUALIFIED"><code>TYPE_UNQUALIFIED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-TYPE_005fUNQUALIFIED-1"><code>TYPE_UNQUALIFIED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-TYPE_005fVFIELD"><code>TYPE_VFIELD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-uaddvm4-instruction-pattern"><code>uaddv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-uavgm3_005fceil-instruction-pattern"><code>uavg<var>m</var>3_ceil</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-uavgm3_005ffloor-instruction-pattern"><code>uavg<var>m</var>3_floor</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UDAmode"><code>UDAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-udiv"><code>udiv</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-udivm3-instruction-pattern"><code>udiv<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-udivmodm4-instruction-pattern"><code>udivmod<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-udot_005fprodm-instruction-pattern"><code>udot_prod<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UDQmode"><code>UDQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UHAmode"><code>UHAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UHQmode"><code>UHQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT16_005fTYPE"><code>UINT16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT32_005fTYPE"><code>UINT32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT64_005fTYPE"><code>UINT64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT8_005fTYPE"><code>UINT8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINTMAX_005fTYPE"><code>UINTMAX_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINTPTR_005fTYPE"><code>UINTPTR_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fFAST16_005fTYPE"><code>UINT_FAST16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fFAST32_005fTYPE"><code>UINT_FAST32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fFAST64_005fTYPE"><code>UINT_FAST64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fFAST8_005fTYPE"><code>UINT_FAST8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fLEAST16_005fTYPE"><code>UINT_LEAST16_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fLEAST32_005fTYPE"><code>UINT_LEAST32_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fLEAST64_005fTYPE"><code>UINT_LEAST64_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-UINT_005fLEAST8_005fTYPE"><code>UINT_LEAST8_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umaddmn4-instruction-pattern"><code>umadd<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-umax"><code>umax</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umaxm3-instruction-pattern"><code>umax<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-umin"><code>umin</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-uminm3-instruction-pattern"><code>umin<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-umod"><code>umod</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umodm3-instruction-pattern"><code>umod<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umsubmn4-instruction-pattern"><code>umsub<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulhisi3-instruction-pattern"><code>umulhisi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulhrsm3-instruction-pattern"><code>umulhrs<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulhsm3-instruction-pattern"><code>umulhs<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulm3_005fhighpart-instruction-pattern"><code>umul<var>m</var>3_highpart</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulqihi3-instruction-pattern"><code>umulqihi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulsidi3-instruction-pattern"><code>umulsidi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-umulvm4-instruction-pattern"><code>umulv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-umul_005fhighpart"><code>umul_highpart</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging"><code>unchanging</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-call_005finsn"><code>unchanging</code>, in <code>call_insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-jump_005finsn_002c-call_005finsn-and-insn"><code>unchanging</code>, in <code>jump_insn</code>, <code>call_insn</code> and <code>insn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-mem"><code>unchanging</code>, in <code>mem</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-subreg"><code>unchanging</code>, in <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-subreg-1"><code>unchanging</code>, in <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-unchanging_002c-in-symbol_005fref"><code>unchanging</code>, in <code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNEQ_005fEXPR"><code>UNEQ_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNGE_005fEXPR"><code>UNGE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNGT_005fEXPR"><code>UNGT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Interface.html#index-unions_002c-returning">unions, returning</a>:</td><td>&nbsp;</td><td valign="top"><a href="Interface.html#Interface">Interface</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-UNION_005fTYPE"><code>UNION_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Classes.html#index-UNION_005fTYPE-1"><code>UNION_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Classes.html#Classes">Classes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-UNITS_005fPER_005fWORD"><code>UNITS_PER_WORD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-UNKNOWN_005fTYPE"><code>UNKNOWN_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types-for-C_002b_002b.html#index-UNKNOWN_005fTYPE-1"><code>UNKNOWN_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">Types for C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNLE_005fEXPR"><code>UNLE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-UNLIKELY_005fEXECUTED_005fTEXT_005fSECTION_005fNAME"><code>UNLIKELY_EXECUTED_TEXT_SECTION_NAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNLT_005fEXPR"><code>UNLT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-UNORDERED_005fEXPR"><code>UNORDERED_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sharing.html#index-unshare_005fall_005frtl"><code>unshare_all_rtl</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sharing.html#Sharing">Sharing</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-unsigned-division">unsigned division</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-unsigned-division-with-unsigned-saturation">unsigned division with unsigned saturation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-unsigned-greater-than">unsigned greater than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-unsigned-greater-than-1">unsigned greater than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-unsigned-less-than">unsigned less than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Comparisons.html#index-unsigned-less-than-1">unsigned less than</a>:</td><td>&nbsp;</td><td valign="top"><a href="Comparisons.html#Comparisons">Comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-unsigned-minimum-and-maximum">unsigned minimum and maximum</a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-unsigned_005ffix"><code>unsigned_fix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-unsigned_005ffloat"><code>unsigned_float</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-unsigned_005ffract_005fconvert"><code>unsigned_fract_convert</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-unsigned_005fsat_005ffract"><code>unsigned_sat_fract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-unspec"><code>unspec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-unspec-1"><code>unspec</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-unspec_005fvolatile"><code>unspec_volatile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-Definitions.html#index-unspec_005fvolatile-1"><code>unspec_volatile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-untyped_005fcall-instruction-pattern"><code>untyped_call</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-untyped_005freturn-instruction-pattern"><code>untyped_return</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-UPDATE_005fPATH_005fHOST_005fCANONICALIZE-_0028path_0029"><code>UPDATE_PATH_HOST_CANONICALIZE (<var>path</var>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-update_005fssa"><code>update_ssa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-update_005fstmt"><code>update_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-update_005fstmt-1"><code>update_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#index-update_005fstmt_005fif_005fmodified"><code>update_stmt_if_modified</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">Manipulating GIMPLE statements</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UQQmode"><code>UQQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usaddm3-instruction-pattern"><code>usadd<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usadm-instruction-pattern"><code>usad<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-USAmode"><code>USAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usashlm3-instruction-pattern"><code>usashl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usdivm3-instruction-pattern"><code>usdiv<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usdot_005fprodm-instruction-pattern"><code>usdot_prod<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Side-Effects.html#index-use"><code>use</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Side-Effects.html#Side-Effects">Side Effects</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-used"><code>used</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-used_002c-in-symbol_005fref"><code>used</code>, in <code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="GTY-Options.html#index-user"><code>user</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="GTY-Options.html#GTY-Options">GTY Options</a></td></tr>
+<tr><td></td><td valign="top"><a href="User-Experience-Guidelines.html#index-user-experience-guidelines">user experience guidelines</a>:</td><td>&nbsp;</td><td valign="top"><a href="User-Experience-Guidelines.html#User-Experience-Guidelines">User Experience Guidelines</a></td></tr>
+<tr><td></td><td valign="top"><a href="User-GC.html#index-user-gc">user gc</a>:</td><td>&nbsp;</td><td valign="top"><a href="User-GC.html#User-GC">User GC</a></td></tr>
+<tr><td></td><td valign="top"><a href="Instruction-Output.html#index-USER_005fLABEL_005fPREFIX"><code>USER_LABEL_PREFIX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Instruction-Output.html#Instruction-Output">Instruction Output</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-USE_005fC_005fALLOCA"><code>USE_C_ALLOCA</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Driver.html#index-USE_005fLD_005fAS_005fNEEDED"><code>USE_LD_AS_NEEDED</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Driver.html#Driver">Driver</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fLOAD_005fPOST_005fDECREMENT"><code>USE_LOAD_POST_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fLOAD_005fPOST_005fINCREMENT"><code>USE_LOAD_POST_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fLOAD_005fPRE_005fDECREMENT"><code>USE_LOAD_PRE_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fLOAD_005fPRE_005fINCREMENT"><code>USE_LOAD_PRE_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sections.html#index-USE_005fSELECT_005fSECTION_005fFOR_005fFUNCTIONS"><code>USE_SELECT_SECTION_FOR_FUNCTIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sections.html#Sections">Sections</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fSTORE_005fPOST_005fDECREMENT"><code>USE_STORE_POST_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fSTORE_005fPOST_005fINCREMENT"><code>USE_STORE_POST_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fSTORE_005fPRE_005fDECREMENT"><code>USE_STORE_PRE_DECREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Costs.html#index-USE_005fSTORE_005fPRE_005fINCREMENT"><code>USE_STORE_PRE_INCREMENT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Costs.html#Costs">Costs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-USING_005fSTMT"><code>USING_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmaddmn4-instruction-pattern"><code>usmadd<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmsubmn4-instruction-pattern"><code>usmsub<var>m</var><var>n</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmulhisi3-instruction-pattern"><code>usmulhisi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmulm3-instruction-pattern"><code>usmul<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmulqihi3-instruction-pattern"><code>usmulqihi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usmulsidi3-instruction-pattern"><code>usmulsidi3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usnegm2-instruction-pattern"><code>usneg<var>m</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-USQmode"><code>USQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-ussubm3-instruction-pattern"><code>ussub<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-usubvm4-instruction-pattern"><code>usubv<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-us_005fashift"><code>us_ashift</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-us_005fminus"><code>us_minus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-us_005fmult"><code>us_mult</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-us_005fneg"><code>us_neg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-us_005fplus"><code>us_plus</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-us_005ftruncate"><code>us_truncate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UTAmode"><code>UTAmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-UTQmode"><code>UTQmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-V">V</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-V-in-constraint">&lsquo;<samp>V</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Scalar-Return.html#index-values_002c-returned-by-functions">values, returned by functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="Scalar-Return.html#Scalar-Return">Scalar Return</a></td></tr>
+<tr><td></td><td valign="top"><a href="Varargs.html#index-varargs-implementation">varargs implementation</a>:</td><td>&nbsp;</td><td valign="top"><a href="Varargs.html#Varargs">Varargs</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-variable">variable</a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-Variable-Location-Debug-Information-in-RTL">Variable Location Debug Information in RTL</a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Declarations.html#index-VAR_005fDECL"><code>VAR_DECL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Declarations.html#Declarations">Declarations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Debug-Information.html#index-var_005flocation"><code>var_location</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Debug-Information.html#Debug-Information">Debug Information</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vashlm3-instruction-pattern"><code>vashl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vashrm3-instruction-pattern"><code>vashr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-VA_005fARG_005fEXPR"><code>VA_ARG_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vcondeqmn-instruction-pattern"><code>vcondeq<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vcondmn-instruction-pattern"><code>vcond<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vcondumn-instruction-pattern"><code>vcondu<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vcond_005fmask_005fmn-instruction-pattern"><code>vcond_mask_<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Containers.html#index-vector">vector</a>:</td><td>&nbsp;</td><td valign="top"><a href="Containers.html#Containers">Containers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vector-operations">vector operations</a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Constant-expressions.html#index-VECTOR_005fCST"><code>VECTOR_CST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Constant-expressions.html#Constant-expressions">Constant expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-VECTOR_005fSTORE_005fFLAG_005fVALUE"><code>VECTOR_STORE_FLAG_VALUE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005faddsubm3-instruction-pattern"><code>vec_addsub<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fcmpeqmn-instruction-pattern"><code>vec_cmpeq<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fcmpmn-instruction-pattern"><code>vec_cmp<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fcmpumn-instruction-pattern"><code>vec_cmpu<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vec_005fconcat"><code>vec_concat</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fCOND_005fEXPR"><code>VEC_COND_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vec_005fduplicate"><code>vec_duplicate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fduplicatem-instruction-pattern"><code>vec_duplicate<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fDUPLICATE_005fEXPR"><code>VEC_DUPLICATE_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fextractmn-instruction-pattern"><code>vec_extract<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005ffmaddsubm4-instruction-pattern"><code>vec_fmaddsub<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005ffmsubaddm4-instruction-pattern"><code>vec_fmsubadd<var>m</var>4</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005finitmn-instruction-pattern"><code>vec_init<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fload_005flanesmn-instruction-pattern"><code>vec_load_lanes<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fLSHIFT_005fEXPR"><code>VEC_LSHIFT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fmask_005fload_005flanesmn-instruction-pattern"><code>vec_mask_load_lanes<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fmask_005fstore_005flanesmn-instruction-pattern"><code>vec_mask_store_lanes<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vec_005fmerge"><code>vec_merge</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpacks_005ffloat_005fm-instruction-pattern"><code>vec_packs_float_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpacku_005ffloat_005fm-instruction-pattern"><code>vec_packu_float_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fPACK_005fFIX_005fTRUNC_005fEXPR"><code>VEC_PACK_FIX_TRUNC_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fPACK_005fFLOAT_005fEXPR"><code>VEC_PACK_FLOAT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fPACK_005fSAT_005fEXPR"><code>VEC_PACK_SAT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005fsbool_005ftrunc_005fm-instruction-pattern"><code>vec_pack_sbool_trunc_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005fsfix_005ftrunc_005fm-instruction-pattern"><code>vec_pack_sfix_trunc_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005fssat_005fm-instruction-pattern"><code>vec_pack_ssat_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fPACK_005fTRUNC_005fEXPR"><code>VEC_PACK_TRUNC_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005ftrunc_005fm-instruction-pattern"><code>vec_pack_trunc_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005fufix_005ftrunc_005fm-instruction-pattern"><code>vec_pack_ufix_trunc_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpack_005fusat_005fm-instruction-pattern"><code>vec_pack_usat_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fpermm-instruction-pattern"><code>vec_perm<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Addressing-Modes.html#index-vec_005fpermm-instruction-pattern-1"><code>vec_perm<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fRSHIFT_005fEXPR"><code>VEC_RSHIFT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vec_005fselect"><code>vec_select</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vector-Operations.html#index-vec_005fseries"><code>vec_series</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vector-Operations.html#Vector-Operations">Vector Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fseriesm-instruction-pattern"><code>vec_series<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fSERIES_005fEXPR"><code>VEC_SERIES_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fsetm-instruction-pattern"><code>vec_set<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fshl_005finsert_005fm-instruction-pattern"><code>vec_shl_insert_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fshl_005fm-instruction-pattern"><code>vec_shl_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fshr_005fm-instruction-pattern"><code>vec_shr_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fstore_005flanesmn-instruction-pattern"><code>vec_store_lanes<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005ffloat_005fhi_005fm-instruction-pattern"><code>vec_unpacks_float_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005ffloat_005flo_005fm-instruction-pattern"><code>vec_unpacks_float_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005fhi_005fm-instruction-pattern"><code>vec_unpacks_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005flo_005fm-instruction-pattern"><code>vec_unpacks_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005fsbool_005fhi_005fm-instruction-pattern"><code>vec_unpacks_sbool_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacks_005fsbool_005flo_005fm-instruction-pattern"><code>vec_unpacks_sbool_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacku_005ffloat_005fhi_005fm-instruction-pattern"><code>vec_unpacku_float_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacku_005ffloat_005flo_005fm-instruction-pattern"><code>vec_unpacku_float_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacku_005fhi_005fm-instruction-pattern"><code>vec_unpacku_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpacku_005flo_005fm-instruction-pattern"><code>vec_unpacku_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fFIX_005fTRUNC_005fHI_005fEXPR"><code>VEC_UNPACK_FIX_TRUNC_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fFIX_005fTRUNC_005fLO_005fEXPR"><code>VEC_UNPACK_FIX_TRUNC_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fFLOAT_005fHI_005fEXPR"><code>VEC_UNPACK_FLOAT_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fFLOAT_005fLO_005fEXPR"><code>VEC_UNPACK_FLOAT_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fHI_005fEXPR"><code>VEC_UNPACK_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fUNPACK_005fLO_005fEXPR"><code>VEC_UNPACK_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpack_005fsfix_005ftrunc_005fhi_005fm-instruction-pattern"><code>vec_unpack_sfix_trunc_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpack_005fsfix_005ftrunc_005flo_005fm-instruction-pattern"><code>vec_unpack_sfix_trunc_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpack_005fufix_005ftrunc_005fhi_005fm-instruction-pattern"><code>vec_unpack_ufix_trunc_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005funpack_005fufix_005ftrunc_005flo_005fm-instruction-pattern"><code>vec_unpack_ufix_trunc_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fMINUS_005fHI_005fEXPR"><code>VEC_WIDEN_MINUS_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fMINUS_005fLO_005fEXPR"><code>VEC_WIDEN_MINUS_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fMULT_005fHI_005fEXPR"><code>VEC_WIDEN_MULT_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fMULT_005fLO_005fEXPR"><code>VEC_WIDEN_MULT_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fPLUS_005fHI_005fEXPR"><code>VEC_WIDEN_PLUS_HI_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-VEC_005fWIDEN_005fPLUS_005fLO_005fEXPR"><code>VEC_WIDEN_PLUS_LO_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsaddl_005fhi_005fm-instruction-pattern"><code>vec_widen_saddl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsaddl_005flo_005fm-instruction-pattern"><code>vec_widen_saddl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsmult_005feven_005fm-instruction-pattern"><code>vec_widen_smult_even_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsmult_005fhi_005fm-instruction-pattern"><code>vec_widen_smult_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsmult_005flo_005fm-instruction-pattern"><code>vec_widen_smult_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsmult_005fodd_005fm-instruction-pattern"><code>vec_widen_smult_odd_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsshiftl_005fhi_005fm-instruction-pattern"><code>vec_widen_sshiftl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fsshiftl_005flo_005fm-instruction-pattern"><code>vec_widen_sshiftl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fssubl_005fhi_005fm-instruction-pattern"><code>vec_widen_ssubl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fssubl_005flo_005fm-instruction-pattern"><code>vec_widen_ssubl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fuaddl_005fhi_005fm-instruction-pattern"><code>vec_widen_uaddl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fuaddl_005flo_005fm-instruction-pattern"><code>vec_widen_uaddl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fumult_005feven_005fm-instruction-pattern"><code>vec_widen_umult_even_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fumult_005fhi_005fm-instruction-pattern"><code>vec_widen_umult_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fumult_005flo_005fm-instruction-pattern"><code>vec_widen_umult_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fumult_005fodd_005fm-instruction-pattern"><code>vec_widen_umult_odd_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fushiftl_005fhi_005fm-instruction-pattern"><code>vec_widen_ushiftl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fushiftl_005flo_005fm-instruction-pattern"><code>vec_widen_ushiftl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fusubl_005fhi_005fm-instruction-pattern"><code>vec_widen_usubl_hi_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vec_005fwiden_005fusubl_005flo_005fm-instruction-pattern"><code>vec_widen_usubl_lo_<var>m</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Maintaining-the-CFG.html#index-verify_005fflow_005finfo"><code>verify_flow_info</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Maintaining-the-CFG.html#Maintaining-the-CFG">Maintaining the CFG</a></td></tr>
+<tr><td></td><td valign="top"><a href="SSA-Operands.html#index-virtual-operands">virtual operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA-Operands.html#SSA-Operands">SSA Operands</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-VIRTUAL_005fINCOMING_005fARGS_005fREGNUM"><code>VIRTUAL_INCOMING_ARGS_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-VIRTUAL_005fOUTGOING_005fARGS_005fREGNUM"><code>VIRTUAL_OUTGOING_ARGS_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-VIRTUAL_005fSTACK_005fDYNAMIC_005fREGNUM"><code>VIRTUAL_STACK_DYNAMIC_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-VIRTUAL_005fSTACK_005fVARS_005fREGNUM"><code>VIRTUAL_STACK_VARS_REGNUM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-VLIW">VLIW</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Processor-pipeline-description.html#index-VLIW-1">VLIW</a>:</td><td>&nbsp;</td><td valign="top"><a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vlshrm3-instruction-pattern"><code>vlshr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-VMS"><code>VMS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="VMS-Debug.html#index-VMS_005fDEBUGGING_005fINFO"><code>VMS_DEBUGGING_INFO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="VMS-Debug.html#VMS-Debug">VMS Debug</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-VOIDmode"><code>VOIDmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Types.html#index-VOID_005fTYPE"><code>VOID_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Types.html#Types">Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil"><code>volatil</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-insn_002c-call_005finsn_002c-jump_005finsn_002c-code_005flabel_002c-jump_005ftable_005fdata_002c-barrier_002c-and-note"><code>volatil</code>, in <code>insn</code>, <code>call_insn</code>, <code>jump_insn</code>, <code>code_label</code>, <code>jump_table_data</code>, <code>barrier</code>, and <code>note</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-label_005fref-and-reg_005flabel"><code>volatil</code>, in <code>label_ref</code> and <code>reg_label</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-mem_002c-asm_005foperands_002c-and-asm_005finput"><code>volatil</code>, in <code>mem</code>, <code>asm_operands</code>, and <code>asm_input</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-reg"><code>volatil</code>, in <code>reg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-subreg"><code>volatil</code>, in <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-subreg-1"><code>volatil</code>, in <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatil_002c-in-symbol_005fref"><code>volatil</code>, in <code>symbol_ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatile-memory-references">volatile memory references</a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Flags.html#index-volatile_002c-in-prefetch"><code>volatile</code>, in <code>prefetch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Flags.html#Flags">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Class-Preferences.html#index-voting-between-constraint-alternatives">voting between constraint alternatives</a>:</td><td>&nbsp;</td><td valign="top"><a href="Class-Preferences.html#Class-Preferences">Class Preferences</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vrotlm3-instruction-pattern"><code>vrotl<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-vrotrm3-instruction-pattern"><code>vrotr<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-W">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="SSA.html#index-walk_005fdominator_005ftree"><code>walk_dominator_tree</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="SSA.html#SSA">SSA</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-and-operand-traversals.html#index-walk_005fgimple_005fop"><code>walk_gimple_op</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">Statement and operand traversals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-and-operand-traversals.html#index-walk_005fgimple_005fseq"><code>walk_gimple_seq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">Statement and operand traversals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statement-and-operand-traversals.html#index-walk_005fgimple_005fstmt"><code>walk_gimple_stmt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">Statement and operand traversals</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-WCHAR_005fTYPE"><code>WCHAR_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-WCHAR_005fTYPE_005fSIZE"><code>WCHAR_TYPE_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Output-Statement.html#index-which_005falternative"><code>which_alternative</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Output-Statement.html#Output-Statement">Output Statement</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-WHILE_005fBODY"><code>WHILE_BODY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-WHILE_005fCOND"><code>WHILE_COND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#index-WHILE_005fSTMT"><code>WHILE_STMT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">Statements for C and C++</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-while_005fultmn-instruction-pattern"><code>while_ult<var>m</var><var>n</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="LTO.html#index-whopr">whopr</a>:</td><td>&nbsp;</td><td valign="top"><a href="LTO.html#LTO">LTO</a></td></tr>
+<tr><td></td><td valign="top"><a href="Unary-and-Binary-Expressions.html#index-WIDEN_005fMULT_005fEXPR"><code>WIDEN_MULT_EXPR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">Unary and Binary Expressions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-widen_005fssumm3-instruction-pattern"><code>widen_ssum<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-widen_005fusumm3-instruction-pattern"><code>widen_usum<var>m3</var></code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-WIDEST_005fHARDWARE_005fFP_005fSIZE"><code>WIDEST_HARDWARE_FP_SIZE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-window_005fsave-instruction-pattern"><code>window_save</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Type-Layout.html#index-WINT_005fTYPE"><code>WINT_TYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Type-Layout.html#Type-Layout">Type Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Storage-Layout.html#index-WORDS_005fBIG_005fENDIAN"><code>WORDS_BIG_ENDIAN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Storage-Layout.html#Storage-Layout">Storage Layout</a></td></tr>
+<tr><td></td><td valign="top"><a href="Regs-and-Memory.html#index-WORDS_005fBIG_005fENDIAN_002c-effect-on-subreg"><code>WORDS_BIG_ENDIAN</code>, effect on <code>subreg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-word_005fmode"><code>word_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Misc.html#index-WORD_005fREGISTER_005fOPERATIONS"><code>WORD_REGISTER_OPERATIONS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Misc.html#Misc">Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="LTO.html#index-wpa">wpa</a>:</td><td>&nbsp;</td><td valign="top"><a href="LTO.html#LTO">LTO</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-X">X</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Simple-Constraints.html#index-X-in-constraint">&lsquo;<samp>X</samp>&rsquo; in constraint</a>:</td><td>&nbsp;</td><td valign="top"><a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Fragment.html#index-x_002dhost"><samp>x-<var>host</var></samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Fragment.html#Host-Fragment">Host Fragment</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-XCmode"><code>XCmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XEXP"><code>XEXP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-XFmode"><code>XFmode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Machine-Modes.html#index-XImode"><code>XImode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Machine-Modes.html#Machine-Modes">Machine Modes</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XINT"><code>XINT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Filesystem.html#index-xm_002dmachine_002eh"><samp>xm-<var>machine</var>.h</samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Filesystem.html#Filesystem">Filesystem</a></td></tr>
+<tr><td></td><td valign="top"><a href="Host-Misc.html#index-xm_002dmachine_002eh-1"><samp>xm-<var>machine</var>.h</samp></a>:</td><td>&nbsp;</td><td valign="top"><a href="Host-Misc.html#Host-Misc">Host Misc</a></td></tr>
+<tr><td></td><td valign="top"><a href="Arithmetic.html#index-xor"><code>xor</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Arithmetic.html#Arithmetic">Arithmetic</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-xor_002c-canonicalization-of"><code>xor</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-xorm3-instruction-pattern"><code>xor<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-xorsignm3-instruction-pattern"><code>xorsign<var>m</var>3</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XSTR"><code>XSTR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XVEC"><code>XVEC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XVECEXP"><code>XVECEXP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XVECLEN"><code>XVECLEN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Accessors.html#index-XWINT"><code>XWINT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Accessors.html#Accessors">Accessors</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-Z">Z</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Conversions.html#index-zero_005fextend"><code>zero_extend</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Conversions.html#Conversions">Conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="Standard-Names.html#index-zero_005fextendmn2-instruction-pattern"><code>zero_extend<var>m</var><var>n</var>2</code> instruction pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="Standard-Names.html#Standard-Names">Standard Names</a></td></tr>
+<tr><td></td><td valign="top"><a href="Bit_002dFields.html#index-zero_005fextract"><code>zero_extract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a></td></tr>
+<tr><td></td><td valign="top"><a href="Insn-Canonicalizations.html#index-zero_005fextract_002c-canonicalization-of"><code>zero_extract</code>, canonicalization of</a>:</td><td>&nbsp;</td><td valign="top"><a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-2"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-3"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-4"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-5"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-6"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-7"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-8"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-9"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-10"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-12"><b>0</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-13"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-14"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-15"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-16"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-17"><b>@</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-19"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_symbol-20"><b>_</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-X"><b>X</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Option-Index.html#Option-Index" accesskey="p" rel="previous">Option Index</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Condition-Code.html b/share/doc/gccint/Condition-Code.html
new file mode 100644
index 0000000..51b93c7
--- /dev/null
+++ b/share/doc/gccint/Condition-Code.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Condition Code</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Condition Code">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Condition Code">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes" rel="next" title="MODE_CC Condition Codes">
+<link href="Anchored-Addresses.html#Anchored-Addresses" rel="previous" title="Anchored Addresses">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Condition-Code"></a>
+<div class="header">
+<p>
+Next: <a href="Costs.html#Costs" accesskey="n" rel="next">Costs</a>, Previous: <a href="Anchored-Addresses.html#Anchored-Addresses" accesskey="p" rel="previous">Anchored Addresses</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Condition-Code-Status"></a>
+<h3 class="section">18.15 Condition Code Status</h3>
+<a name="index-condition-code-status"></a>
+
+<p>Condition codes in GCC are represented as registers,
+which provides better schedulability for
+architectures that do have a condition code register, but on which
+most instructions do not affect it. The latter category includes
+most RISC machines.
+</p>
+<p>Implicit clobbering would pose a strong restriction on the placement of
+the definition and use of the condition code. In the past the definition
+and use were always adjacent. However, recent changes to support trapping
+arithmetic may result in the definition and user being in different blocks.
+Thus, there may be a <code>NOTE_INSN_BASIC_BLOCK</code> between them. Additionally,
+the definition may be the source of exception handling edges.
+</p>
+<p>These restrictions can prevent important
+optimizations on some machines. For example, on the IBM RS/6000, there
+is a delay for taken branches unless the condition code register is set
+three instructions earlier than the conditional branch. The instruction
+scheduler cannot perform this optimization if it is not permitted to
+separate the definition and use of the condition code register.
+</p>
+<p>If there is a specific
+condition code register in the machine, use a hard register. If the
+condition code or comparison result can be placed in any general register,
+or if there are multiple condition registers, use a pseudo register.
+Registers used to store the condition code value will usually have a mode
+that is in class <code>MODE_CC</code>.
+</p>
+<p>Alternatively, you can use <code>BImode</code> if the comparison operator is
+specified already in the compare instruction. In this case, you are not
+interested in most macros in this section.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes" accesskey="1">MODE_CC Condition Codes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Modern representation of condition codes.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Costs.html#Costs" accesskey="n" rel="next">Costs</a>, Previous: <a href="Anchored-Addresses.html#Anchored-Addresses" accesskey="p" rel="previous">Anchored Addresses</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Conditional-Execution.html b/share/doc/gccint/Conditional-Execution.html
new file mode 100644
index 0000000..27011ed
--- /dev/null
+++ b/share/doc/gccint/Conditional-Execution.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Conditional Execution</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Conditional Execution">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Conditional Execution">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Define-Subst.html#Define-Subst" rel="next" title="Define Subst">
+<link href="Processor-pipeline-description.html#Processor-pipeline-description" rel="previous" title="Processor pipeline description">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Conditional-Execution"></a>
+<div class="header">
+<p>
+Next: <a href="Define-Subst.html#Define-Subst" accesskey="n" rel="next">Define Subst</a>, Previous: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="p" rel="previous">Insn Attributes</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Conditional-Execution-1"></a>
+<h3 class="section">17.20 Conditional Execution</h3>
+<a name="index-conditional-execution"></a>
+<a name="index-predication"></a>
+
+<p>A number of architectures provide for some form of conditional
+execution, or predication. The hallmark of this feature is the
+ability to nullify most of the instructions in the instruction set.
+When the instruction set is large and not entirely symmetric, it
+can be quite tedious to describe these forms directly in the
+<samp>.md</samp> file. An alternative is the <code>define_cond_exec</code> template.
+</p>
+<a name="index-define_005fcond_005fexec"></a>
+<div class="smallexample">
+<pre class="smallexample">(define_cond_exec
+ [<var>predicate-pattern</var>]
+ &quot;<var>condition</var>&quot;
+ &quot;<var>output-template</var>&quot;
+ &quot;<var>optional-insn-attribues</var>&quot;)
+</pre></div>
+
+<p><var>predicate-pattern</var> is the condition that must be true for the
+insn to be executed at runtime and should match a relational operator.
+One can use <code>match_operator</code> to match several relational operators
+at once. Any <code>match_operand</code> operands must have no more than one
+alternative.
+</p>
+<p><var>condition</var> is a C expression that must be true for the generated
+pattern to match.
+</p>
+<a name="index-current_005finsn_005fpredicate"></a>
+<p><var>output-template</var> is a string similar to the <code>define_insn</code>
+output template (see <a href="Output-Template.html#Output-Template">Output Template</a>), except that the &lsquo;<samp>*</samp>&rsquo;
+and &lsquo;<samp>@</samp>&rsquo; special cases do not apply. This is only useful if the
+assembly text for the predicate is a simple prefix to the main insn.
+In order to handle the general case, there is a global variable
+<code>current_insn_predicate</code> that will contain the entire predicate
+if the current insn is predicated, and will otherwise be <code>NULL</code>.
+</p>
+<p><var>optional-insn-attributes</var> is an optional vector of attributes that gets
+appended to the insn attributes of the produced cond_exec rtx. It can
+be used to add some distinguishing attribute to cond_exec rtxs produced
+that way. An example usage would be to use this attribute in conjunction
+with attributes on the main pattern to disable particular alternatives under
+certain conditions.
+</p>
+<p>When <code>define_cond_exec</code> is used, an implicit reference to
+the <code>predicable</code> instruction attribute is made.
+See <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>. This attribute must be a boolean (i.e. have
+exactly two elements in its <var>list-of-values</var>), with the possible
+values being <code>no</code> and <code>yes</code>. The default and all uses in
+the insns must be a simple constant, not a complex expressions. It
+may, however, depend on the alternative, by using a comma-separated
+list of values. If that is the case, the port should also define an
+<code>enabled</code> attribute (see <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives">Disable Insn Alternatives</a>), which
+should also allow only <code>no</code> and <code>yes</code> as its values.
+</p>
+<p>For each <code>define_insn</code> for which the <code>predicable</code>
+attribute is true, a new <code>define_insn</code> pattern will be
+generated that matches a predicated version of the instruction.
+For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;addsi&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;r&quot;)
+ (plus:SI (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;)))]
+ &quot;<var>test1</var>&quot;
+ &quot;add %2,%1,%0&quot;)
+
+(define_cond_exec
+ [(ne (match_operand:CC 0 &quot;register_operand&quot; &quot;c&quot;)
+ (const_int 0))]
+ &quot;<var>test2</var>&quot;
+ &quot;(%0)&quot;)
+</pre></div>
+
+<p>generates a new pattern
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(cond_exec
+ (ne (match_operand:CC 3 &quot;register_operand&quot; &quot;c&quot;) (const_int 0))
+ (set (match_operand:SI 0 &quot;register_operand&quot; &quot;r&quot;)
+ (plus:SI (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;))))]
+ &quot;(<var>test2</var>) &amp;&amp; (<var>test1</var>)&quot;
+ &quot;(%3) add %2,%1,%0&quot;)
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Define-Subst.html#Define-Subst" accesskey="n" rel="next">Define Subst</a>, Previous: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="p" rel="previous">Insn Attributes</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Conditional-Expressions.html b/share/doc/gccint/Conditional-Expressions.html
new file mode 100644
index 0000000..1d9342d
--- /dev/null
+++ b/share/doc/gccint/Conditional-Expressions.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Conditional Expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Conditional Expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Conditional Expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Operands.html#Operands" rel="up" title="Operands">
+<link href="Logical-Operators.html#Logical-Operators" rel="next" title="Logical Operators">
+<link href="Compound-Lvalues.html#Compound-Lvalues" rel="previous" title="Compound Lvalues">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Conditional-Expressions"></a>
+<div class="header">
+<p>
+Next: <a href="Logical-Operators.html#Logical-Operators" accesskey="n" rel="next">Logical Operators</a>, Previous: <a href="Compound-Lvalues.html#Compound-Lvalues" accesskey="p" rel="previous">Compound Lvalues</a>, Up: <a href="Operands.html#Operands" accesskey="u" rel="up">Operands</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Conditional-Expressions-1"></a>
+<h4 class="subsection">12.6.3 Conditional Expressions</h4>
+<a name="index-Conditional-Expressions"></a>
+
+<p>A C <code>?:</code> expression is converted into an <code>if</code> statement with
+each branch assigning to the same temporary. So,
+</p>
+<div class="smallexample">
+<pre class="smallexample">a = b ? c : d;
+</pre></div>
+<p>becomes
+</p><div class="smallexample">
+<pre class="smallexample">if (b == 1)
+ T1 = c;
+else
+ T1 = d;
+a = T1;
+</pre></div>
+
+<p>The GIMPLE level if-conversion pass re-introduces <code>?:</code>
+expression, if appropriate. It is used to vectorize loops with
+conditions using vector conditional operations.
+</p>
+<p>Note that in GIMPLE, <code>if</code> statements are represented using
+<code>GIMPLE_COND</code>, as described below.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Config-Fragments.html b/share/doc/gccint/Config-Fragments.html
new file mode 100644
index 0000000..f0f30d9
--- /dev/null
+++ b/share/doc/gccint/Config-Fragments.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Config Fragments</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Config Fragments">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Config Fragments">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Configuration.html#Configuration" rel="up" title="Configuration">
+<link href="System-Config.html#System-Config" rel="next" title="System Config">
+<link href="Configuration.html#Configuration" rel="previous" title="Configuration">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Config-Fragments"></a>
+<div class="header">
+<p>
+Next: <a href="System-Config.html#System-Config" accesskey="n" rel="next">System Config</a>, Up: <a href="Configuration.html#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Scripts-Used-by-configure"></a>
+<h4 class="subsubsection">6.3.2.1 Scripts Used by <samp>configure</samp></h4>
+
+<p><samp>configure</samp> uses some other scripts to help in its work:
+</p>
+<ul>
+<li> The standard GNU <samp>config.sub</samp> and <samp>config.guess</samp>
+files, kept in the top level directory, are used.
+
+</li><li> The file <samp>config.gcc</samp> is used to handle configuration
+specific to the particular target machine. The file
+<samp>config.build</samp> is used to handle configuration specific to the
+particular build machine. The file <samp>config.host</samp> is used to handle
+configuration specific to the particular host machine. (In general,
+these should only be used for features that cannot reasonably be tested in
+Autoconf feature tests.)
+See <a href="System-Config.html#System-Config">The <samp>config.build</samp>; <samp>config.host</samp>;
+and <samp>config.gcc</samp> Files</a>, for details of the contents of these files.
+
+</li><li> Each language subdirectory has a file
+<samp><var>language</var>/config-lang.in</samp> that is used for
+front-end-specific configuration. See <a href="Front-End-Config.html#Front-End-Config">The Front
+End <samp>config-lang.in</samp> File</a>, for details of this file.
+
+</li><li> A helper script <samp>configure.frag</samp> is used as part of
+creating the output of <samp>configure</samp>.
+</li></ul>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Configuration-Files.html b/share/doc/gccint/Configuration-Files.html
new file mode 100644
index 0000000..c1e8b48
--- /dev/null
+++ b/share/doc/gccint/Configuration-Files.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Configuration Files</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Configuration Files">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Configuration Files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Configuration.html#Configuration" rel="up" title="Configuration">
+<link href="Build.html#Build" rel="next" title="Build">
+<link href="System-Config.html#System-Config" rel="previous" title="System Config">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Configuration-Files"></a>
+<div class="header">
+<p>
+Previous: <a href="System-Config.html#System-Config" accesskey="p" rel="previous">System Config</a>, Up: <a href="Configuration.html#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Files-Created-by-configure"></a>
+<h4 class="subsubsection">6.3.2.3 Files Created by <code>configure</code></h4>
+
+<p>Here we spell out what files will be set up by <samp>configure</samp> in the
+<samp>gcc</samp> directory. Some other files are created as temporary files
+in the configuration process, and are not used in the subsequent
+build; these are not documented.
+</p>
+<ul>
+<li> <samp>Makefile</samp> is constructed from <samp>Makefile.in</samp>, together with
+the host and target fragments (see <a href="Fragments.html#Fragments">Makefile
+Fragments</a>) <samp>t-<var>target</var></samp> and <samp>x-<var>host</var></samp> from
+<samp>config</samp>, if any, and language Makefile fragments
+<samp><var>language</var>/Make-lang.in</samp>.
+</li><li> <samp>auto-host.h</samp> contains information about the host machine
+determined by <samp>configure</samp>. If the host machine is different from
+the build machine, then <samp>auto-build.h</samp> is also created,
+containing such information about the build machine.
+</li><li> <samp>config.status</samp> is a script that may be run to recreate the
+current configuration.
+</li><li> <samp>configargs.h</samp> is a header containing details of the arguments
+passed to <samp>configure</samp> to configure GCC, and of the thread model
+used.
+</li><li> <samp>cstamp-h</samp> is used as a timestamp.
+</li><li> If a language <samp>config-lang.in</samp> file (see <a href="Front-End-Config.html#Front-End-Config">The Front End <samp>config-lang.in</samp> File</a>) sets <code>outputs</code>, then
+the files listed in <code>outputs</code> there are also generated.
+</li></ul>
+
+<p>The following configuration headers are created from the Makefile,
+using <samp>mkconfig.sh</samp>, rather than directly by <samp>configure</samp>.
+<samp>config.h</samp>, <samp>bconfig.h</samp> and <samp>tconfig.h</samp> all contain the
+<samp>xm-<var>machine</var>.h</samp> header, if any, appropriate to the host,
+build and target machines respectively, the configuration headers for
+the target, and some definitions; for the host and build machines,
+these include the autoconfigured headers generated by
+<samp>configure</samp>. The other configuration headers are determined by
+<samp>config.gcc</samp>. They also contain the typedefs for <code>rtx</code>,
+<code>rtvec</code> and <code>tree</code>.
+</p>
+<ul>
+<li> <samp>config.h</samp>, for use in programs that run on the host machine.
+</li><li> <samp>bconfig.h</samp>, for use in programs that run on the build machine.
+</li><li> <samp>tconfig.h</samp>, for use in programs and libraries for the target
+machine.
+</li><li> <samp>tm_p.h</samp>, which includes the header <samp><var>machine</var>-protos.h</samp>
+that contains prototypes for functions in the target
+<samp><var>machine</var>.c</samp> file. The
+<samp><var>machine</var>-protos.h</samp> header is included after the <samp>rtl.h</samp>
+and/or <samp>tree.h</samp> would have been included.
+The <samp>tm_p.h</samp> also
+includes the header <samp>tm-preds.h</samp> which is generated by
+<samp>genpreds</samp> program during the build to define the declarations
+and inline functions for the predicate functions.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="System-Config.html#System-Config" accesskey="p" rel="previous">System Config</a>, Up: <a href="Configuration.html#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Configuration.html b/share/doc/gccint/Configuration.html
new file mode 100644
index 0000000..16215d4
--- /dev/null
+++ b/share/doc/gccint/Configuration.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Configuration</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Configuration">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Configuration">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Config-Fragments.html#Config-Fragments" rel="next" title="Config Fragments">
+<link href="Subdirectories.html#Subdirectories" rel="previous" title="Subdirectories">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Configuration"></a>
+<div class="header">
+<p>
+Next: <a href="Build.html#Build" accesskey="n" rel="next">Build</a>, Previous: <a href="Subdirectories.html#Subdirectories" accesskey="p" rel="previous">Subdirectories</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Configuration-in-the-gcc-Directory"></a>
+<h4 class="subsection">6.3.2 Configuration in the <samp>gcc</samp> Directory</h4>
+
+<p>The <samp>gcc</samp> directory is configured with an Autoconf-generated
+script <samp>configure</samp>. The <samp>configure</samp> script is generated
+from <samp>configure.ac</samp> and <samp>aclocal.m4</samp>. From the files
+<samp>configure.ac</samp> and <samp>acconfig.h</samp>, Autoheader generates the
+file <samp>config.in</samp>. The file <samp>cstamp-h.in</samp> is used as a
+timestamp.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Config-Fragments.html#Config-Fragments" accesskey="1">Config Fragments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scripts used by <samp>configure</samp>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="System-Config.html#System-Config" accesskey="2">System Config</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The <samp>config.build</samp>, <samp>config.host</samp>, and
+ <samp>config.gcc</samp> files.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Configuration-Files.html#Configuration-Files" accesskey="3">Configuration Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Files created by running <samp>configure</samp>.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Configure-Terms.html b/share/doc/gccint/Configure-Terms.html
new file mode 100644
index 0000000..b562964
--- /dev/null
+++ b/share/doc/gccint/Configure-Terms.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Configure Terms</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Configure Terms">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Configure Terms">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Source-Tree.html#Source-Tree" rel="up" title="Source Tree">
+<link href="Top-Level.html#Top-Level" rel="next" title="Top Level">
+<link href="Source-Tree.html#Source-Tree" rel="previous" title="Source Tree">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Configure-Terms"></a>
+<div class="header">
+<p>
+Next: <a href="Top-Level.html#Top-Level" accesskey="n" rel="next">Top Level</a>, Up: <a href="Source-Tree.html#Source-Tree" accesskey="u" rel="up">Source Tree</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Configure-Terms-and-History"></a>
+<h3 class="section">6.1 Configure Terms and History</h3>
+<a name="index-configure-terms"></a>
+<a name="index-canadian"></a>
+
+<p>The configure and build process has a long and colorful history, and can
+be confusing to anyone who doesn&rsquo;t know why things are the way they are.
+While there are other documents which describe the configuration process
+in detail, here are a few things that everyone working on GCC should
+know.
+</p>
+<p>There are three system names that the build knows about: the machine you
+are building on (<em>build</em>), the machine that you are building for
+(<em>host</em>), and the machine that GCC will produce code for
+(<em>target</em>). When you configure GCC, you specify these with
+<samp>--build=</samp>, <samp>--host=</samp>, and <samp>--target=</samp>.
+</p>
+<p>Specifying the host without specifying the build should be avoided, as
+<code>configure</code> may (and once did) assume that the host you specify
+is also the build, which may not be true.
+</p>
+<p>If build, host, and target are all the same, this is called a
+<em>native</em>. If build and host are the same but target is different,
+this is called a <em>cross</em>. If build, host, and target are all
+different this is called a <em>canadian</em> (for obscure reasons dealing
+with Canada&rsquo;s political party and the background of the person working
+on the build at that time). If host and target are the same, but build
+is different, you are using a cross-compiler to build a native for a
+different system. Some people call this a <em>host-x-host</em>,
+<em>crossed native</em>, or <em>cross-built native</em>. If build and target
+are the same, but host is different, you are using a cross compiler to
+build a cross compiler that produces code for the machine you&rsquo;re
+building on. This is rare, so there is no common way of describing it.
+There is a proposal to call this a <em>crossback</em>.
+</p>
+<p>If build and host are the same, the GCC you are building will also be
+used to build the target libraries (like <code>libstdc++</code>). If build and host
+are different, you must have already built and installed a cross
+compiler that will be used to build the target libraries (if you
+configured with <samp>--target=foo-bar</samp>, this compiler will be called
+<code>foo-bar-gcc</code>).
+</p>
+<p>In the case of target libraries, the machine you&rsquo;re building for is the
+machine you specified with <samp>--target</samp>. So, build is the machine
+you&rsquo;re building on (no change there), host is the machine you&rsquo;re
+building for (the target libraries are built for the target, so host is
+the target you specified), and target doesn&rsquo;t apply (because you&rsquo;re not
+building a compiler, you&rsquo;re building libraries). The configure/make
+process will adjust these variables as needed. It also sets
+<code>$with_cross_host</code> to the original <samp>--host</samp> value in case you
+need it.
+</p>
+<p>The <code>libiberty</code> support library is built up to three times: once
+for the host, once for the target (even if they are the same), and once
+for the build if build and host are different. This allows it to be
+used by all programs which are generated in the course of the build
+process.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Top-Level.html#Top-Level" accesskey="n" rel="next">Top Level</a>, Up: <a href="Source-Tree.html#Source-Tree" accesskey="u" rel="up">Source Tree</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Consequences-of-using-poly_005fint.html b/share/doc/gccint/Consequences-of-using-poly_005fint.html
new file mode 100644
index 0000000..3574510
--- /dev/null
+++ b/share/doc/gccint/Consequences-of-using-poly_005fint.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Consequences of using poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Consequences of using poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Consequences of using poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="next" title="Comparisons involving poly_int">
+<link href="Overview-of-poly_005fint.html#Overview-of-poly_005fint" rel="previous" title="Overview of poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Consequences-of-using-poly_005fint"></a>
+<div class="header">
+<p>
+Next: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="n" rel="next">Comparisons involving <code>poly_int</code></a>, Previous: <a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint" accesskey="p" rel="previous">Overview of <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Consequences-of-using-poly_005fint-1"></a>
+<h3 class="section">10.2 Consequences of using <code>poly_int</code></h3>
+
+<p>The two main consequences of using polynomial sizes and offsets are that:
+</p>
+<ul>
+<li> there is no total ordering between the values at compile time, and
+
+</li><li> some operations might yield results that cannot be expressed as a
+<code>poly_int</code>.
+</li></ul>
+
+<p>For example, if <var>x</var> is a runtime invariant, we cannot tell at
+compile time whether:
+</p>
+<div class="smallexample">
+<pre class="smallexample">3 + 4<var>x</var> &lt;= 1 + 5<var>x</var>
+</pre></div>
+
+<p>since the condition is false when <var>x</var> &lt;= 1 and true when <var>x</var> &gt;= 2.
+</p>
+<p>Similarly, <code>poly_int</code> cannot represent the result of:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(3 + 4<var>x</var>) * (1 + 5<var>x</var>)
+</pre></div>
+
+<p>since it cannot (and in practice does not need to) store powers greater
+than one. It also cannot represent the result of:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(3 + 4<var>x</var>) / (1 + 5<var>x</var>)
+</pre></div>
+
+<p>The following sections describe how we deal with these restrictions.
+</p>
+<a name="index-poly_005fint_002c-use-in-target_002dindependent-code"></a>
+<p>As described earlier, a <code>poly_int&lt;1, <var>T</var>&gt;</code> has no indeterminates
+and so degenerates to a compile-time constant of type <var>T</var>. It would
+be possible in that case to do all normal arithmetic on the <var>T</var>,
+and to compare the <var>T</var> using the normal C++ operators. We deliberately
+prevent target-independent code from doing this, since the compiler needs
+to support other <code>poly_int&lt;<var>n</var>, <var>T</var>&gt;</code> as well, regardless of
+the current target&rsquo;s <code>NUM_POLY_INT_COEFFS</code>.
+</p>
+<a name="index-poly_005fint_002c-use-in-target_002dspecific-code"></a>
+<p>However, it would be very artificial to force target-specific code
+to follow these restrictions if the target has no runtime indeterminates.
+There is therefore an implicit conversion from <code>poly_int&lt;1, <var>T</var>&gt;</code>
+to <var>T</var> when compiling target-specific translation units.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Constant-Attributes.html b/share/doc/gccint/Constant-Attributes.html
new file mode 100644
index 0000000..1aae5bc
--- /dev/null
+++ b/share/doc/gccint/Constant-Attributes.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Constant Attributes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Constant Attributes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Constant Attributes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Mnemonic-Attribute.html#Mnemonic-Attribute" rel="next" title="Mnemonic Attribute">
+<link href="Insn-Lengths.html#Insn-Lengths" rel="previous" title="Insn Lengths">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Constant-Attributes"></a>
+<div class="header">
+<p>
+Next: <a href="Mnemonic-Attribute.html#Mnemonic-Attribute" accesskey="n" rel="next">Mnemonic Attribute</a>, Previous: <a href="Insn-Lengths.html#Insn-Lengths" accesskey="p" rel="previous">Insn Lengths</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constant-Attributes-1"></a>
+<h4 class="subsection">17.19.6 Constant Attributes</h4>
+<a name="index-constant-attributes"></a>
+
+<p>A special form of <code>define_attr</code>, where the expression for the
+default value is a <code>const</code> expression, indicates an attribute that
+is constant for a given run of the compiler. Constant attributes may be
+used to specify which variety of processor is used. For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;cpu&quot; &quot;m88100,m88110,m88000&quot;
+ (const
+ (cond [(symbol_ref &quot;TARGET_88100&quot;) (const_string &quot;m88100&quot;)
+ (symbol_ref &quot;TARGET_88110&quot;) (const_string &quot;m88110&quot;)]
+ (const_string &quot;m88000&quot;))))
+
+(define_attr &quot;memory&quot; &quot;fast,slow&quot;
+ (const
+ (if_then_else (symbol_ref &quot;TARGET_FAST_MEM&quot;)
+ (const_string &quot;fast&quot;)
+ (const_string &quot;slow&quot;))))
+</pre></div>
+
+<p>The routine generated for constant attributes has no parameters as it
+does not depend on any particular insn. RTL expressions used to define
+the value of a constant attribute may use the <code>symbol_ref</code> form,
+but may not use either the <code>match_operand</code> form or <code>eq_attr</code>
+forms involving insn attributes.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Constant-Definitions.html b/share/doc/gccint/Constant-Definitions.html
new file mode 100644
index 0000000..551d267
--- /dev/null
+++ b/share/doc/gccint/Constant-Definitions.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Constant Definitions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Constant Definitions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Constant Definitions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Iterators.html#Iterators" rel="next" title="Iterators">
+<link href="Define-Subst-Output-Template.html#Define-Subst-Output-Template" rel="previous" title="Define Subst Output Template">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Constant-Definitions"></a>
+<div class="header">
+<p>
+Next: <a href="Iterators.html#Iterators" accesskey="n" rel="next">Iterators</a>, Previous: <a href="Define-Subst.html#Define-Subst" accesskey="p" rel="previous">Define Subst</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constant-Definitions-1"></a>
+<h3 class="section">17.22 Constant Definitions</h3>
+<a name="index-constant-definitions"></a>
+<a name="index-define_005fconstants"></a>
+
+<p>Using literal constants inside instruction patterns reduces legibility and
+can be a maintenance problem.
+</p>
+<p>To overcome this problem, you may use the <code>define_constants</code>
+expression. It contains a vector of name-value pairs. From that
+point on, wherever any of the names appears in the MD file, it is as
+if the corresponding value had been written instead. You may use
+<code>define_constants</code> multiple times; each appearance adds more
+constants to the table. It is an error to redefine a constant with
+a different value.
+</p>
+<p>To come back to the a29k load multiple example, instead of
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(match_parallel 0 &quot;load_multiple_operation&quot;
+ [(set (match_operand:SI 1 &quot;gpc_reg_operand&quot; &quot;=r&quot;)
+ (match_operand:SI 2 &quot;memory_operand&quot; &quot;m&quot;))
+ (use (reg:SI 179))
+ (clobber (reg:SI 179))])]
+ &quot;&quot;
+ &quot;loadm 0,0,%1,%2&quot;)
+</pre></div>
+
+<p>You could write:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_constants [
+ (R_BP 177)
+ (R_FC 178)
+ (R_CR 179)
+ (R_Q 180)
+])
+
+(define_insn &quot;&quot;
+ [(match_parallel 0 &quot;load_multiple_operation&quot;
+ [(set (match_operand:SI 1 &quot;gpc_reg_operand&quot; &quot;=r&quot;)
+ (match_operand:SI 2 &quot;memory_operand&quot; &quot;m&quot;))
+ (use (reg:SI R_CR))
+ (clobber (reg:SI R_CR))])]
+ &quot;&quot;
+ &quot;loadm 0,0,%1,%2&quot;)
+</pre></div>
+
+<p>The constants that are defined with a define_constant are also output
+in the insn-codes.h header file as #defines.
+</p>
+<a name="index-enumerations"></a>
+<a name="index-define_005fc_005fenum"></a>
+<p>You can also use the machine description file to define enumerations.
+Like the constants defined by <code>define_constant</code>, these enumerations
+are visible to both the machine description file and the main C code.
+</p>
+<p>The syntax is as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_c_enum &quot;<var>name</var>&quot; [
+ <var>value0</var>
+ <var>value1</var>
+ (<var>value32</var> 32)
+ <var>value33</var>
+ &hellip;
+ <var>valuen</var>
+])
+</pre></div>
+
+<p>This definition causes the equivalent of the following C code to appear
+in <samp>insn-constants.h</samp>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">enum <var>name</var> {
+ <var>value0</var> = 0,
+ <var>value1</var> = 1,
+ <var>value32</var> = 32,
+ <var>value33</var> = 33,
+ &hellip;
+ <var>valuen</var> = <var>n</var>
+};
+#define NUM_<var>cname</var>_VALUES (<var>n</var> + 1)
+</pre></div>
+
+<p>where <var>cname</var> is the capitalized form of <var>name</var>.
+It also makes each <var>valuei</var> available in the machine description
+file, just as if it had been declared with:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_constants [(<var>valuei</var> <var>i</var>)])
+</pre></div>
+
+<p>Each <var>valuei</var> is usually an upper-case identifier and usually
+begins with <var>cname</var>.
+</p>
+<p>You can split the enumeration definition into as many statements as
+you like. The above example is directly equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_c_enum &quot;<var>name</var>&quot; [<var>value0</var>])
+(define_c_enum &quot;<var>name</var>&quot; [<var>value1</var>])
+&hellip;
+(define_c_enum &quot;<var>name</var>&quot; [<var>valuen</var>])
+</pre></div>
+
+<p>Splitting the enumeration helps to improve the modularity of each
+individual <code>.md</code> file. For example, if a port defines its
+synchronization instructions in a separate <samp>sync.md</samp> file,
+it is convenient to define all synchronization-specific enumeration
+values in <samp>sync.md</samp> rather than in the main <samp>.md</samp> file.
+</p>
+<p>Some enumeration names have special significance to GCC:
+</p>
+<dl compact="compact">
+<dd><a name="index-unspec_005fvolatile-1"></a>
+</dd>
+<dt><code>unspecv</code></dt>
+<dd><p>If an enumeration called <code>unspecv</code> is defined, GCC will use it
+when printing out <code>unspec_volatile</code> expressions. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_c_enum &quot;unspecv&quot; [
+ UNSPECV_BLOCKAGE
+])
+</pre></div>
+
+<p>causes GCC to print &lsquo;<samp>(unspec_volatile &hellip; 0)</samp>&rsquo; as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(unspec_volatile ... UNSPECV_BLOCKAGE)
+</pre></div>
+
+<a name="index-unspec-1"></a>
+</dd>
+<dt><code>unspec</code></dt>
+<dd><p>If an enumeration called <code>unspec</code> is defined, GCC will use
+it when printing out <code>unspec</code> expressions. GCC will also use
+it when printing out <code>unspec_volatile</code> expressions unless an
+<code>unspecv</code> enumeration is also defined. You can therefore
+decide whether to keep separate enumerations for volatile and
+non-volatile expressions or whether to use the same enumeration
+for both.
+</p></dd>
+</dl>
+
+<a name="index-define_005fenum"></a>
+<a name="define_005fenum"></a><p>Another way of defining an enumeration is to use <code>define_enum</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_enum &quot;<var>name</var>&quot; [
+ <var>value0</var>
+ <var>value1</var>
+ &hellip;
+ <var>valuen</var>
+])
+</pre></div>
+
+<p>This directive implies:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_c_enum &quot;<var>name</var>&quot; [
+ <var>cname</var>_<var>cvalue0</var>
+ <var>cname</var>_<var>cvalue1</var>
+ &hellip;
+ <var>cname</var>_<var>cvaluen</var>
+])
+</pre></div>
+
+<a name="index-define_005fenum_005fattr-1"></a>
+<p>where <var>cvaluei</var> is the capitalized form of <var>valuei</var>.
+However, unlike <code>define_c_enum</code>, the enumerations defined
+by <code>define_enum</code> can be used in attribute specifications
+(see <a href="Defining-Attributes.html#define_005fenum_005fattr">define_enum_attr</a>).
+</p><hr>
+<div class="header">
+<p>
+Next: <a href="Iterators.html#Iterators" accesskey="n" rel="next">Iterators</a>, Previous: <a href="Define-Subst.html#Define-Subst" accesskey="p" rel="previous">Define Subst</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Constant-expressions.html b/share/doc/gccint/Constant-expressions.html
new file mode 100644
index 0000000..0f8c6c0
--- /dev/null
+++ b/share/doc/gccint/Constant-expressions.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Constant expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Constant expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Constant expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Expression-trees.html#Expression-trees" rel="up" title="Expression trees">
+<link href="Storage-References.html#Storage-References" rel="next" title="Storage References">
+<link href="Expression-trees.html#Expression-trees" rel="previous" title="Expression trees">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Constant-expressions"></a>
+<div class="header">
+<p>
+Next: <a href="Storage-References.html#Storage-References" accesskey="n" rel="next">Storage References</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constant-expressions-1"></a>
+<h4 class="subsection">11.6.1 Constant expressions</h4>
+<a name="index-INTEGER_005fCST"></a>
+<a name="index-tree_005fint_005fcst_005flt"></a>
+<a name="index-tree_005fint_005fcst_005fequal"></a>
+<a name="index-tree_005ffits_005fuhwi_005fp"></a>
+<a name="index-tree_005ffits_005fshwi_005fp"></a>
+<a name="index-tree_005fto_005fuhwi"></a>
+<a name="index-tree_005fto_005fshwi"></a>
+<a name="index-TREE_005fINT_005fCST_005fNUNITS"></a>
+<a name="index-TREE_005fINT_005fCST_005fELT"></a>
+<a name="index-TREE_005fINT_005fCST_005fLOW"></a>
+<a name="index-REAL_005fCST"></a>
+<a name="index-FIXED_005fCST"></a>
+<a name="index-COMPLEX_005fCST"></a>
+<a name="index-VECTOR_005fCST"></a>
+<a name="index-STRING_005fCST"></a>
+<a name="index-POLY_005fINT_005fCST"></a>
+<a name="index-TREE_005fSTRING_005fLENGTH"></a>
+<a name="index-TREE_005fSTRING_005fPOINTER"></a>
+
+<p>The table below begins with constants, moves on to unary expressions,
+then proceeds to binary expressions, and concludes with various other
+kinds of expressions:
+</p>
+<dl compact="compact">
+<dt><code>INTEGER_CST</code></dt>
+<dd><p>These nodes represent integer constants. Note that the type of these
+constants is obtained with <code>TREE_TYPE</code>; they are not always of type
+<code>int</code>. In particular, <code>char</code> constants are represented with
+<code>INTEGER_CST</code> nodes. The value of the integer constant <code>e</code> is
+represented in an array of HOST_WIDE_INT. There are enough elements
+in the array to represent the value without taking extra elements for
+redundant 0s or -1. The number of elements used to represent <code>e</code>
+is available via <code>TREE_INT_CST_NUNITS</code>. Element <code>i</code> can be
+extracted by using <code>TREE_INT_CST_ELT (e, i)</code>.
+<code>TREE_INT_CST_LOW</code> is a shorthand for <code>TREE_INT_CST_ELT (e, 0)</code>.
+</p>
+<p>The functions <code>tree_fits_shwi_p</code> and <code>tree_fits_uhwi_p</code>
+can be used to tell if the value is small enough to fit in a
+signed HOST_WIDE_INT or an unsigned HOST_WIDE_INT respectively.
+The value can then be extracted using <code>tree_to_shwi</code> and
+<code>tree_to_uhwi</code>.
+</p>
+</dd>
+<dt><code>REAL_CST</code></dt>
+<dd>
+<p>FIXME: Talk about how to obtain representations of this constant, do
+comparisons, and so forth.
+</p>
+</dd>
+<dt><code>FIXED_CST</code></dt>
+<dd>
+<p>These nodes represent fixed-point constants. The type of these constants
+is obtained with <code>TREE_TYPE</code>. <code>TREE_FIXED_CST_PTR</code> points to
+a <code>struct fixed_value</code>; <code>TREE_FIXED_CST</code> returns the structure
+itself. <code>struct fixed_value</code> contains <code>data</code> with the size of two
+<code>HOST_BITS_PER_WIDE_INT</code> and <code>mode</code> as the associated fixed-point
+machine mode for <code>data</code>.
+</p>
+</dd>
+<dt><code>COMPLEX_CST</code></dt>
+<dd><p>These nodes are used to represent complex number constants, that is a
+<code>__complex__</code> whose parts are constant nodes. The
+<code>TREE_REALPART</code> and <code>TREE_IMAGPART</code> return the real and the
+imaginary parts respectively.
+</p>
+</dd>
+<dt><code>VECTOR_CST</code></dt>
+<dd><p>These nodes are used to represent vector constants. Each vector
+constant <var>v</var> is treated as a specific instance of an arbitrary-length
+sequence that itself contains &lsquo;<samp>VECTOR_CST_NPATTERNS (<var>v</var>)</samp>&rsquo;
+interleaved patterns. Each pattern has the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ <var>base0</var>, <var>base1</var>, <var>base1</var> + <var>step</var>, <var>base1</var> + <var>step</var> * 2, &hellip; }
+</pre></div>
+
+<p>The first three elements in each pattern are enough to determine the
+values of the other elements. However, if all <var>step</var>s are zero,
+only the first two elements are needed. If in addition each <var>base1</var>
+is equal to the corresponding <var>base0</var>, only the first element in
+each pattern is needed. The number of encoded elements per pattern
+is given by &lsquo;<samp>VECTOR_CST_NELTS_PER_PATTERN (<var>v</var>)</samp>&rsquo;.
+</p>
+<p>For example, the constant:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ 0, 1, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18 }
+</pre></div>
+
+<p>is interpreted as an interleaving of the sequences:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ 0, 2, 3, 4, 5, 6, 7, 8 }
+{ 1, 6, 8, 10, 12, 14, 16, 18 }
+</pre></div>
+
+<p>where the sequences are represented by the following patterns:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>base0</var> == 0, <var>base1</var> == 2, <var>step</var> == 1
+<var>base0</var> == 1, <var>base1</var> == 6, <var>step</var> == 2
+</pre></div>
+
+<p>In this case:
+</p>
+<div class="smallexample">
+<pre class="smallexample">VECTOR_CST_NPATTERNS (<var>v</var>) == 2
+VECTOR_CST_NELTS_PER_PATTERN (<var>v</var>) == 3
+</pre></div>
+
+<p>The vector is therefore encoded using the first 6 elements
+(&lsquo;<samp>{ 0, 1, 2, 6, 3, 8 }</samp>&rsquo;), with the remaining 10 elements
+being implicit extensions of them.
+</p>
+<p>Sometimes this scheme can create two possible encodings of the same
+vector. For example { 0, 1 } could be seen as two patterns with
+one element each or one pattern with two elements (<var>base0</var> and
+<var>base1</var>). The canonical encoding is always the one with the
+fewest patterns or (if both encodings have the same number of
+petterns) the one with the fewest encoded elements.
+</p>
+<p>&lsquo;<samp>vector_cst_encoding_nelts (<var>v</var>)</samp>&rsquo; gives the total number of
+encoded elements in <var>v</var>, which is 6 in the example above.
+<code>VECTOR_CST_ENCODED_ELTS (<var>v</var>)</code> gives a pointer to the elements
+encoded in <var>v</var> and <code>VECTOR_CST_ENCODED_ELT (<var>v</var>, <var>i</var>)</code>
+accesses the value of encoded element <var>i</var>.
+</p>
+<p>&lsquo;<samp>VECTOR_CST_DUPLICATE_P (<var>v</var>)</samp>&rsquo; is true if <var>v</var> simply contains
+repeated instances of &lsquo;<samp>VECTOR_CST_NPATTERNS (<var>v</var>)</samp>&rsquo; values. This is
+a shorthand for testing &lsquo;<samp>VECTOR_CST_NELTS_PER_PATTERN (<var>v</var>) == 1</samp>&rsquo;.
+</p>
+<p>&lsquo;<samp>VECTOR_CST_STEPPED_P (<var>v</var>)</samp>&rsquo; is true if at least one
+pattern in <var>v</var> has a nonzero step. This is a shorthand for
+testing &lsquo;<samp>VECTOR_CST_NELTS_PER_PATTERN (<var>v</var>) == 3</samp>&rsquo;.
+</p>
+<p>The utility function <code>vector_cst_elt</code> gives the value of an
+arbitrary index as a <code>tree</code>. <code>vector_cst_int_elt</code> gives
+the same value as a <code>wide_int</code>.
+</p>
+</dd>
+<dt><code>STRING_CST</code></dt>
+<dd><p>These nodes represent string-constants. The <code>TREE_STRING_LENGTH</code>
+returns the length of the string, as an <code>int</code>. The
+<code>TREE_STRING_POINTER</code> is a <code>char*</code> containing the string
+itself. The string may not be <code>NUL</code>-terminated, and it may contain
+embedded <code>NUL</code> characters. Therefore, the
+<code>TREE_STRING_LENGTH</code> includes the trailing <code>NUL</code> if it is
+present.
+</p>
+<p>For wide string constants, the <code>TREE_STRING_LENGTH</code> is the number
+of bytes in the string, and the <code>TREE_STRING_POINTER</code>
+points to an array of the bytes of the string, as represented on the
+target system (that is, as integers in the target endianness). Wide and
+non-wide string constants are distinguished only by the <code>TREE_TYPE</code>
+of the <code>STRING_CST</code>.
+</p>
+<p>FIXME: The formats of string constants are not well-defined when the
+target system bytes are not the same width as host system bytes.
+</p>
+</dd>
+<dt><code>POLY_INT_CST</code></dt>
+<dd><p>These nodes represent invariants that depend on some target-specific
+runtime parameters. They consist of <code>NUM_POLY_INT_COEFFS</code>
+coefficients, with the first coefficient being the constant term and
+the others being multipliers that are applied to the runtime parameters.
+</p>
+<p><code>POLY_INT_CST_ELT (<var>x</var>, <var>i</var>)</code> references coefficient number
+<var>i</var> of <code>POLY_INT_CST</code> node <var>x</var>. Each coefficient is an
+<code>INTEGER_CST</code>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Storage-References.html#Storage-References" accesskey="n" rel="next">Storage References</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Constants.html b/share/doc/gccint/Constants.html
new file mode 100644
index 0000000..57d657f
--- /dev/null
+++ b/share/doc/gccint/Constants.html
@@ -0,0 +1,396 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Constants</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Constants">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Constants">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Regs-and-Memory.html#Regs-and-Memory" rel="next" title="Regs and Memory">
+<link href="Machine-Modes.html#Machine-Modes" rel="previous" title="Machine Modes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Constants"></a>
+<div class="header">
+<p>
+Next: <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="n" rel="next">Regs and Memory</a>, Previous: <a href="Machine-Modes.html#Machine-Modes" accesskey="p" rel="previous">Machine Modes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constant-Expression-Types"></a>
+<h3 class="section">14.7 Constant Expression Types</h3>
+<a name="index-RTL-constants"></a>
+<a name="index-RTL-constant-expression-types"></a>
+
+<p>The simplest RTL expressions are those that represent constant values.
+</p>
+<dl compact="compact">
+<dd><a name="index-const_005fint"></a>
+</dd>
+<dt><code>(const_int <var>i</var>)</code></dt>
+<dd><p>This type of expression represents the integer value <var>i</var>. <var>i</var>
+is customarily accessed with the macro <code>INTVAL</code> as in
+<code>INTVAL (<var>exp</var>)</code>, which is equivalent to <code>XWINT (<var>exp</var>, 0)</code>.
+</p>
+<p>Constants generated for modes with fewer bits than in
+<code>HOST_WIDE_INT</code> must be sign extended to full width (e.g., with
+<code>gen_int_mode</code>). For constants for modes with more bits than in
+<code>HOST_WIDE_INT</code> the implied high order bits of that constant are
+copies of the top bit. Note however that values are neither
+inherently signed nor inherently unsigned; where necessary, signedness
+is determined by the rtl operation instead.
+</p>
+<a name="index-const0_005frtx"></a>
+<a name="index-const1_005frtx"></a>
+<a name="index-const2_005frtx"></a>
+<a name="index-constm1_005frtx"></a>
+<p>There is only one expression object for the integer value zero; it is
+the value of the variable <code>const0_rtx</code>. Likewise, the only
+expression for integer value one is found in <code>const1_rtx</code>, the only
+expression for integer value two is found in <code>const2_rtx</code>, and the
+only expression for integer value negative one is found in
+<code>constm1_rtx</code>. Any attempt to create an expression of code
+<code>const_int</code> and value zero, one, two or negative one will return
+<code>const0_rtx</code>, <code>const1_rtx</code>, <code>const2_rtx</code> or
+<code>constm1_rtx</code> as appropriate.
+</p>
+<a name="index-const_005ftrue_005frtx"></a>
+<p>Similarly, there is only one object for the integer whose value is
+<code>STORE_FLAG_VALUE</code>. It is found in <code>const_true_rtx</code>. If
+<code>STORE_FLAG_VALUE</code> is one, <code>const_true_rtx</code> and
+<code>const1_rtx</code> will point to the same object. If
+<code>STORE_FLAG_VALUE</code> is -1, <code>const_true_rtx</code> and
+<code>constm1_rtx</code> will point to the same object.
+</p>
+<a name="index-const_005fdouble"></a>
+</dd>
+<dt><code>(const_double:<var>m</var> <var>i0</var> <var>i1</var> &hellip;)</code></dt>
+<dd><p>This represents either a floating-point constant of mode <var>m</var> or
+(on older ports that do not define
+<code>TARGET_SUPPORTS_WIDE_INT</code>) an integer constant too large to fit
+into <code>HOST_BITS_PER_WIDE_INT</code> bits but small enough to fit within
+twice that number of bits. In the latter case, <var>m</var> will be
+<code>VOIDmode</code>. For integral values constants for modes with more
+bits than twice the number in <code>HOST_WIDE_INT</code> the implied high
+order bits of that constant are copies of the top bit of
+<code>CONST_DOUBLE_HIGH</code>. Note however that integral values are
+neither inherently signed nor inherently unsigned; where necessary,
+signedness is determined by the rtl operation instead.
+</p>
+<p>On more modern ports, <code>CONST_DOUBLE</code> only represents floating
+point values. New ports define <code>TARGET_SUPPORTS_WIDE_INT</code> to
+make this designation.
+</p>
+<a name="index-CONST_005fDOUBLE_005fLOW"></a>
+<p>If <var>m</var> is <code>VOIDmode</code>, the bits of the value are stored in
+<var>i0</var> and <var>i1</var>. <var>i0</var> is customarily accessed with the macro
+<code>CONST_DOUBLE_LOW</code> and <var>i1</var> with <code>CONST_DOUBLE_HIGH</code>.
+</p>
+<p>If the constant is floating point (regardless of its precision), then
+the number of integers used to store the value depends on the size of
+<code>REAL_VALUE_TYPE</code> (see <a href="Floating-Point.html#Floating-Point">Floating Point</a>). The integers
+represent a floating point number, but not precisely in the target
+machine&rsquo;s or host machine&rsquo;s floating point format. To convert them to
+the precise bit pattern used by the target machine, use the macro
+<code>REAL_VALUE_TO_TARGET_DOUBLE</code> and friends (see <a href="Data-Output.html#Data-Output">Data Output</a>).
+</p>
+<a name="index-const_005fdouble_005fzero"></a>
+<p>The host dependency for the number of integers used to store a double
+value makes it problematic for machine descriptions to use expressions
+of code <code>const_double</code> and therefore a syntactic alias has been
+provided:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(const_double_zero:<var>m</var>)
+</pre></div>
+
+<p>standing for:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(const_double:<var>m</var> 0 0 &hellip;)
+</pre></div>
+
+<p>for matching the floating-point value zero, possibly the only useful one.
+</p>
+<a name="index-CONST_005fWIDE_005fINT"></a>
+</dd>
+<dt><code>(const_wide_int:<var>m</var> <var>nunits</var> <var>elt0</var> &hellip;)</code></dt>
+<dd><p>This contains an array of <code>HOST_WIDE_INT</code>s that is large enough
+to hold any constant that can be represented on the target. This form
+of rtl is only used on targets that define
+<code>TARGET_SUPPORTS_WIDE_INT</code> to be nonzero and then
+<code>CONST_DOUBLE</code>s are only used to hold floating-point values. If
+the target leaves <code>TARGET_SUPPORTS_WIDE_INT</code> defined as 0,
+<code>CONST_WIDE_INT</code>s are not used and <code>CONST_DOUBLE</code>s are as
+they were before.
+</p>
+<p>The values are stored in a compressed format. The higher-order
+0s or -1s are not represented if they are just the logical sign
+extension of the number that is represented.
+</p>
+<a name="index-CONST_005fWIDE_005fINT_005fVEC"></a>
+</dd>
+<dt><code>CONST_WIDE_INT_VEC (<var>code</var>)</code></dt>
+<dd><p>Returns the entire array of <code>HOST_WIDE_INT</code>s that are used to
+store the value. This macro should be rarely used.
+</p>
+<a name="index-CONST_005fWIDE_005fINT_005fNUNITS"></a>
+</dd>
+<dt><code>CONST_WIDE_INT_NUNITS (<var>code</var>)</code></dt>
+<dd><p>The number of <code>HOST_WIDE_INT</code>s used to represent the number.
+Note that this generally is smaller than the number of
+<code>HOST_WIDE_INT</code>s implied by the mode size.
+</p>
+<a name="index-CONST_005fWIDE_005fINT_005fELT"></a>
+</dd>
+<dt><code>CONST_WIDE_INT_ELT (<var>code</var>,<var>i</var>)</code></dt>
+<dd><p>Returns the <code>i</code>th element of the array. Element 0 is contains
+the low order bits of the constant.
+</p>
+<a name="index-const_005ffixed"></a>
+</dd>
+<dt><code>(const_fixed:<var>m</var> &hellip;)</code></dt>
+<dd><p>Represents a fixed-point constant of mode <var>m</var>.
+The operand is a data structure of type <code>struct fixed_value</code> and
+is accessed with the macro <code>CONST_FIXED_VALUE</code>. The high part of
+data is accessed with <code>CONST_FIXED_VALUE_HIGH</code>; the low part is
+accessed with <code>CONST_FIXED_VALUE_LOW</code>.
+</p>
+<a name="index-const_005fpoly_005fint"></a>
+</dd>
+<dt><code>(const_poly_int:<var>m</var> [<var>c0</var> <var>c1</var> &hellip;])</code></dt>
+<dd><p>Represents a <code>poly_int</code>-style polynomial integer with coefficients
+<var>c0</var>, <var>c1</var>, &hellip;. The coefficients are <code>wide_int</code>-based
+integers rather than rtxes. <code>CONST_POLY_INT_COEFFS</code> gives the
+values of individual coefficients (which is mostly only useful in
+low-level routines) and <code>const_poly_int_value</code> gives the full
+<code>poly_int</code> value.
+</p>
+<a name="index-const_005fvector"></a>
+</dd>
+<dt><code>(const_vector:<var>m</var> [<var>x0</var> <var>x1</var> &hellip;])</code></dt>
+<dd><p>Represents a vector constant. The values in square brackets are
+elements of the vector, which are always <code>const_int</code>,
+<code>const_wide_int</code>, <code>const_double</code> or <code>const_fixed</code>
+expressions.
+</p>
+<p>Each vector constant <var>v</var> is treated as a specific instance of an
+arbitrary-length sequence that itself contains
+&lsquo;<samp>CONST_VECTOR_NPATTERNS (<var>v</var>)</samp>&rsquo; interleaved patterns. Each
+pattern has the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ <var>base0</var>, <var>base1</var>, <var>base1</var> + <var>step</var>, <var>base1</var> + <var>step</var> * 2, &hellip; }
+</pre></div>
+
+<p>The first three elements in each pattern are enough to determine the
+values of the other elements. However, if all <var>step</var>s are zero,
+only the first two elements are needed. If in addition each <var>base1</var>
+is equal to the corresponding <var>base0</var>, only the first element in
+each pattern is needed. The number of determining elements per pattern
+is given by &lsquo;<samp>CONST_VECTOR_NELTS_PER_PATTERN (<var>v</var>)</samp>&rsquo;.
+</p>
+<p>For example, the constant:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ 0, 1, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18 }
+</pre></div>
+
+<p>is interpreted as an interleaving of the sequences:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ 0, 2, 3, 4, 5, 6, 7, 8 }
+{ 1, 6, 8, 10, 12, 14, 16, 18 }
+</pre></div>
+
+<p>where the sequences are represented by the following patterns:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>base0</var> == 0, <var>base1</var> == 2, <var>step</var> == 1
+<var>base0</var> == 1, <var>base1</var> == 6, <var>step</var> == 2
+</pre></div>
+
+<p>In this case:
+</p>
+<div class="smallexample">
+<pre class="smallexample">CONST_VECTOR_NPATTERNS (<var>v</var>) == 2
+CONST_VECTOR_NELTS_PER_PATTERN (<var>v</var>) == 3
+</pre></div>
+
+<p>Thus the first 6 elements (&lsquo;<samp>{ 0, 1, 2, 6, 3, 8 }</samp>&rsquo;) are enough
+to determine the whole sequence; we refer to them as the &ldquo;encoded&rdquo;
+elements. They are the only elements present in the square brackets
+for variable-length <code>const_vector</code>s (i.e. for
+<code>const_vector</code>s whose mode <var>m</var> has a variable number of
+elements). However, as a convenience to code that needs to handle
+both <code>const_vector</code>s and <code>parallel</code>s, all elements are
+present in the square brackets for fixed-length <code>const_vector</code>s;
+the encoding scheme simply reduces the amount of work involved in
+processing constants that follow a regular pattern.
+</p>
+<p>Sometimes this scheme can create two possible encodings of the same
+vector. For example { 0, 1 } could be seen as two patterns with
+one element each or one pattern with two elements (<var>base0</var> and
+<var>base1</var>). The canonical encoding is always the one with the
+fewest patterns or (if both encodings have the same number of
+petterns) the one with the fewest encoded elements.
+</p>
+<p>&lsquo;<samp>const_vector_encoding_nelts (<var>v</var>)</samp>&rsquo; gives the total number of
+encoded elements in <var>v</var>, which is 6 in the example above.
+<code>CONST_VECTOR_ENCODED_ELT (<var>v</var>, <var>i</var>)</code> accesses the value
+of encoded element <var>i</var>.
+</p>
+<p>&lsquo;<samp>CONST_VECTOR_DUPLICATE_P (<var>v</var>)</samp>&rsquo; is true if <var>v</var> simply contains
+repeated instances of &lsquo;<samp>CONST_VECTOR_NPATTERNS (<var>v</var>)</samp>&rsquo; values. This is
+a shorthand for testing &lsquo;<samp>CONST_VECTOR_NELTS_PER_PATTERN (<var>v</var>) == 1</samp>&rsquo;.
+</p>
+<p>&lsquo;<samp>CONST_VECTOR_STEPPED_P (<var>v</var>)</samp>&rsquo; is true if at least one
+pattern in <var>v</var> has a nonzero step. This is a shorthand for
+testing &lsquo;<samp>CONST_VECTOR_NELTS_PER_PATTERN (<var>v</var>) == 3</samp>&rsquo;.
+</p>
+<p><code>CONST_VECTOR_NUNITS (<var>v</var>)</code> gives the total number of elements
+in <var>v</var>; it is a shorthand for getting the number of units in
+&lsquo;<samp>GET_MODE (<var>v</var>)</samp>&rsquo;.
+</p>
+<p>The utility function <code>const_vector_elt</code> gives the value of an
+arbitrary element as an <code>rtx</code>. <code>const_vector_int_elt</code> gives
+the same value as a <code>wide_int</code>.
+</p>
+<a name="index-const_005fstring"></a>
+</dd>
+<dt><code>(const_string <var>str</var>)</code></dt>
+<dd><p>Represents a constant string with value <var>str</var>. Currently this is
+used only for insn attributes (see <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>) since constant
+strings in C are placed in memory.
+</p>
+<a name="index-symbol_005fref"></a>
+</dd>
+<dt><code>(symbol_ref:<var>mode</var> <var>symbol</var>)</code></dt>
+<dd><p>Represents the value of an assembler label for data. <var>symbol</var> is
+a string that describes the name of the assembler label. If it starts
+with a &lsquo;<samp>*</samp>&rsquo;, the label is the rest of <var>symbol</var> not including
+the &lsquo;<samp>*</samp>&rsquo;. Otherwise, the label is <var>symbol</var>, usually prefixed
+with &lsquo;<samp>_</samp>&rsquo;.
+</p>
+<p>The <code>symbol_ref</code> contains a mode, which is usually <code>Pmode</code>.
+Usually that is the only mode for which a symbol is directly valid.
+</p>
+<a name="index-label_005fref"></a>
+</dd>
+<dt><code>(label_ref:<var>mode</var> <var>label</var>)</code></dt>
+<dd><p>Represents the value of an assembler label for code. It contains one
+operand, an expression, which must be a <code>code_label</code> or a <code>note</code>
+of type <code>NOTE_INSN_DELETED_LABEL</code> that appears in the instruction
+sequence to identify the place where the label should go.
+</p>
+<p>The reason for using a distinct expression type for code label
+references is so that jump optimization can distinguish them.
+</p>
+<p>The <code>label_ref</code> contains a mode, which is usually <code>Pmode</code>.
+Usually that is the only mode for which a label is directly valid.
+</p>
+<a name="index-const"></a>
+</dd>
+<dt><code>(const:<var>m</var> <var>exp</var>)</code></dt>
+<dd><p>Represents a constant that is the result of an assembly-time
+arithmetic computation. The operand, <var>exp</var>, contains only
+<code>const_int</code>, <code>symbol_ref</code>, <code>label_ref</code> or <code>unspec</code>
+expressions, combined with <code>plus</code> and <code>minus</code>. Any such
+<code>unspec</code>s are target-specific and typically represent some form
+of relocation operator. <var>m</var> should be a valid address mode.
+</p>
+<a name="index-high"></a>
+</dd>
+<dt><code>(high:<var>m</var> <var>exp</var>)</code></dt>
+<dd><p>Represents the high-order bits of <var>exp</var>.
+The number of bits is machine-dependent and is
+normally the number of bits specified in an instruction that initializes
+the high order bits of a register. It is used with <code>lo_sum</code> to
+represent the typical two-instruction sequence used in RISC machines to
+reference large immediate values and/or link-time constants such
+as global memory addresses. In the latter case, <var>m</var> is <code>Pmode</code>
+and <var>exp</var> is usually a constant expression involving <code>symbol_ref</code>.
+</p></dd>
+</dl>
+
+<a name="index-CONST0_005fRTX"></a>
+<a name="index-CONST1_005fRTX"></a>
+<a name="index-CONST2_005fRTX"></a>
+<p>The macro <code>CONST0_RTX (<var>mode</var>)</code> refers to an expression with
+value 0 in mode <var>mode</var>. If mode <var>mode</var> is of mode class
+<code>MODE_INT</code>, it returns <code>const0_rtx</code>. If mode <var>mode</var> is of
+mode class <code>MODE_FLOAT</code>, it returns a <code>CONST_DOUBLE</code>
+expression in mode <var>mode</var>. Otherwise, it returns a
+<code>CONST_VECTOR</code> expression in mode <var>mode</var>. Similarly, the macro
+<code>CONST1_RTX (<var>mode</var>)</code> refers to an expression with value 1 in
+mode <var>mode</var> and similarly for <code>CONST2_RTX</code>. The
+<code>CONST1_RTX</code> and <code>CONST2_RTX</code> macros are undefined
+for vector modes.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="n" rel="next">Regs and Memory</a>, Previous: <a href="Machine-Modes.html#Machine-Modes" accesskey="p" rel="previous">Machine Modes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Constraints.html b/share/doc/gccint/Constraints.html
new file mode 100644
index 0000000..bb20030
--- /dev/null
+++ b/share/doc/gccint/Constraints.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Constraints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Constraints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Constraints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Simple-Constraints.html#Simple-Constraints" rel="next" title="Simple Constraints">
+<link href="Defining-Predicates.html#Defining-Predicates" rel="previous" title="Defining Predicates">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Constraints"></a>
+<div class="header">
+<p>
+Next: <a href="Standard-Names.html#Standard-Names" accesskey="n" rel="next">Standard Names</a>, Previous: <a href="Predicates.html#Predicates" accesskey="p" rel="previous">Predicates</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Operand-Constraints"></a>
+<h3 class="section">17.8 Operand Constraints</h3>
+<a name="index-operand-constraints"></a>
+<a name="index-constraints"></a>
+
+<p>Each <code>match_operand</code> in an instruction pattern can specify
+constraints for the operands allowed. The constraints allow you to
+fine-tune matching within the set of operands allowed by the
+predicate.
+</p>
+<p>Constraints can say whether
+an operand may be in a register, and which kinds of register; whether the
+operand can be a memory reference, and which kinds of address; whether the
+operand may be an immediate constant, and which possible values it may
+have. Constraints can also require two operands to match.
+Side-effects aren&rsquo;t allowed in operands of inline <code>asm</code>, unless
+&lsquo;<samp>&lt;</samp>&rsquo; or &lsquo;<samp>&gt;</samp>&rsquo; constraints are used, because there is no guarantee
+that the side effects will happen exactly once in an instruction that can update
+the addressing register.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Simple-Constraints.html#Simple-Constraints" accesskey="1">Simple Constraints</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic use of constraints.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Multi_002dAlternative.html#Multi_002dAlternative" accesskey="2">Multi-Alternative</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When an insn has two alternative constraint-patterns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Class-Preferences.html#Class-Preferences" accesskey="3">Class Preferences</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Constraints guide which hard register to put things in.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Modifiers.html#Modifiers" accesskey="4">Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More precise control over effects of constraints.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Machine-Constraints.html#Machine-Constraints" accesskey="5">Machine Constraints</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Existing constraints for some particular machines.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" accesskey="6">Disable Insn Alternatives</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Disable insn alternatives using attributes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Define-Constraints.html#Define-Constraints" accesskey="7">Define Constraints</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to define machine-specific constraints.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="C-Constraint-Interface.html#C-Constraint-Interface" accesskey="8">C Constraint Interface</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to test constraints from C code.
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Containers.html b/share/doc/gccint/Containers.html
new file mode 100644
index 0000000..138b99e
--- /dev/null
+++ b/share/doc/gccint/Containers.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Containers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Containers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Containers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-overview.html#Tree-overview" rel="up" title="Tree overview">
+<link href="Types.html#Types" rel="next" title="Types">
+<link href="Identifiers.html#Identifiers" rel="previous" title="Identifiers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Containers"></a>
+<div class="header">
+<p>
+Previous: <a href="Identifiers.html#Identifiers" accesskey="p" rel="previous">Identifiers</a>, Up: <a href="Tree-overview.html#Tree-overview" accesskey="u" rel="up">Tree overview</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Containers-1"></a>
+<h4 class="subsection">11.2.3 Containers</h4>
+<a name="index-container"></a>
+<a name="index-list"></a>
+<a name="index-vector"></a>
+<a name="index-TREE_005fLIST"></a>
+<a name="index-TREE_005fVEC"></a>
+<a name="index-TREE_005fPURPOSE"></a>
+<a name="index-TREE_005fVALUE"></a>
+<a name="index-TREE_005fVEC_005fLENGTH"></a>
+<a name="index-TREE_005fVEC_005fELT"></a>
+
+<p>Two common container data structures can be represented directly with
+tree nodes. A <code>TREE_LIST</code> is a singly linked list containing two
+trees per node. These are the <code>TREE_PURPOSE</code> and <code>TREE_VALUE</code>
+of each node. (Often, the <code>TREE_PURPOSE</code> contains some kind of
+tag, or additional information, while the <code>TREE_VALUE</code> contains the
+majority of the payload. In other cases, the <code>TREE_PURPOSE</code> is
+simply <code>NULL_TREE</code>, while in still others both the
+<code>TREE_PURPOSE</code> and <code>TREE_VALUE</code> are of equal stature.) Given
+one <code>TREE_LIST</code> node, the next node is found by following the
+<code>TREE_CHAIN</code>. If the <code>TREE_CHAIN</code> is <code>NULL_TREE</code>, then
+you have reached the end of the list.
+</p>
+<p>A <code>TREE_VEC</code> is a simple vector. The <code>TREE_VEC_LENGTH</code> is an
+integer (not a tree) giving the number of nodes in the vector. The
+nodes themselves are accessed using the <code>TREE_VEC_ELT</code> macro, which
+takes two arguments. The first is the <code>TREE_VEC</code> in question; the
+second is an integer indicating which element in the vector is desired.
+The elements are indexed from zero.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Contributing.html b/share/doc/gccint/Contributing.html
new file mode 100644
index 0000000..e8e90e1
--- /dev/null
+++ b/share/doc/gccint/Contributing.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Contributing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Contributing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Contributing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Portability.html#Portability" rel="next" title="Portability">
+<link href="index.html#Top" rel="previous" title="Top">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Contributing"></a>
+<div class="header">
+<p>
+Next: <a href="Portability.html#Portability" accesskey="n" rel="next">Portability</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Contributing-to-GCC-Development"></a>
+<h2 class="chapter">1 Contributing to GCC Development</h2>
+
+<p>If you would like to help pretest GCC releases to assure they work well,
+current development sources are available via Git (see
+<a href="https://gcc.gnu.org/git.html">https://gcc.gnu.org/git.html</a>). Source and binary snapshots are
+also available for FTP; see <a href="https://gcc.gnu.org/snapshots.html">https://gcc.gnu.org/snapshots.html</a>.
+</p>
+<p>If you would like to work on improvements to GCC, please read the
+advice at these URLs:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><a href="https://gcc.gnu.org/contribute.html">https://gcc.gnu.org/contribute.html</a>
+<a href="https://gcc.gnu.org/contributewhy.html">https://gcc.gnu.org/contributewhy.html</a>
+</pre></div>
+
+<p>for information on how to make useful contributions and avoid
+duplication of effort. Suggested projects are listed at
+<a href="https://gcc.gnu.org/projects/">https://gcc.gnu.org/projects/</a>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Contributors.html b/share/doc/gccint/Contributors.html
new file mode 100644
index 0000000..c95ca82
--- /dev/null
+++ b/share/doc/gccint/Contributors.html
@@ -0,0 +1,1367 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Contributors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Contributors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Contributors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Option-Index.html#Option-Index" rel="next" title="Option Index">
+<link href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" rel="previous" title="GNU Free Documentation License">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Contributors"></a>
+<div class="header">
+<p>
+Next: <a href="Option-Index.html#Option-Index" accesskey="n" rel="next">Option Index</a>, Previous: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="p" rel="previous">GNU Free Documentation License</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Contributors-to-GCC"></a>
+<h2 class="unnumbered">Contributors to GCC</h2>
+<a name="index-contributors"></a>
+
+<p>The GCC project would like to thank its many contributors. Without them the
+project would not have been nearly as successful as it has been. Any omissions
+in this list are accidental. Feel free to contact
+<a href="mailto:jlaw@ventanamicro.com">jlaw@ventanamicro.com</a> or <a href="mailto:gerald@pfeifer.com">gerald@pfeifer.com</a> if you have been left
+out or some of your contributions are not listed. Please keep this list in
+alphabetical order.
+</p>
+<ul>
+<li> Analog Devices helped implement the support for complex data types
+and iterators.
+
+</li><li> John David Anglin for threading-related fixes and improvements to
+libstdc++-v3, and the HP-UX port.
+
+</li><li> James van Artsdalen wrote the code that makes efficient use of
+the Intel 80387 register stack.
+
+</li><li> Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta Series
+port.
+
+</li><li> Alasdair Baird for various bug fixes.
+
+</li><li> Giovanni Bajo for analyzing lots of complicated C++ problem reports.
+
+</li><li> Peter Barada for his work to improve code generation for new
+ColdFire cores.
+
+</li><li> Gerald Baumgartner added the signature extension to the C++ front end.
+
+</li><li> Godmar Back for his Java improvements and encouragement.
+
+</li><li> Scott Bambrough for help porting the Java compiler.
+
+</li><li> Wolfgang Bangerth for processing tons of bug reports.
+
+</li><li> Jon Beniston for his Microsoft Windows port of Java and port to Lattice Mico32.
+
+</li><li> Daniel Berlin for better DWARF 2 support, faster/better optimizations,
+improved alias analysis, plus migrating GCC to Bugzilla.
+
+</li><li> Geoff Berry for his Java object serialization work and various patches.
+
+</li><li> David Binderman tests weekly snapshots of GCC trunk against Fedora Rawhide
+for several architectures.
+
+</li><li> Laurynas Biveinis for memory management work and DJGPP port fixes.
+
+</li><li> Uros Bizjak for the implementation of x87 math built-in functions and
+for various middle end and i386 back end improvements and bug fixes.
+
+</li><li> Eric Blake for helping to make GCJ and libgcj conform to the
+specifications.
+
+</li><li> Janne Blomqvist for contributions to GNU Fortran.
+
+</li><li> Hans-J. Boehm for his garbage collector, IA-64 libffi port, and other
+Java work.
+
+</li><li> Segher Boessenkool for helping maintain the PowerPC port and the
+instruction combiner plus various contributions to the middle end.
+
+</li><li> Neil Booth for work on cpplib, lang hooks, debug hooks and other
+miscellaneous clean-ups.
+
+</li><li> Steven Bosscher for integrating the GNU Fortran front end into GCC and for
+contributing to the tree-ssa branch.
+
+</li><li> Eric Botcazou for fixing middle- and backend bugs left and right.
+
+</li><li> Per Bothner for his direction via the steering committee and various
+improvements to the infrastructure for supporting new languages. Chill
+front end implementation. Initial implementations of
+cpplib, fix-header, config.guess, libio, and past C++ library (libg++)
+maintainer. Dreaming up, designing and implementing much of GCJ.
+
+</li><li> Devon Bowen helped port GCC to the Tahoe.
+
+</li><li> Don Bowman for mips-vxworks contributions.
+
+</li><li> James Bowman for the FT32 port.
+
+</li><li> Dave Brolley for work on cpplib and Chill.
+
+</li><li> Paul Brook for work on the ARM architecture and maintaining GNU Fortran.
+
+</li><li> Robert Brown implemented the support for Encore 32000 systems.
+
+</li><li> Christian Bruel for improvements to local store elimination.
+
+</li><li> Herman A.J. ten Brugge for various fixes.
+
+</li><li> Joerg Brunsmann for Java compiler hacking and help with the GCJ FAQ.
+
+</li><li> Joe Buck for his direction via the steering committee from its creation
+to 2013.
+
+</li><li> Iain Buclaw for the D frontend.
+
+</li><li> Craig Burley for leadership of the G77 Fortran effort.
+
+</li><li> Tobias Burnus for contributions to GNU Fortran.
+
+</li><li> Stephan Buys for contributing Doxygen notes for libstdc++.
+
+</li><li> Paolo Carlini for libstdc++ work: lots of efficiency improvements to
+the C++ strings, streambufs and formatted I/O, hard detective work on
+the frustrating localization issues, and keeping up with the problem reports.
+
+</li><li> John Carr for his alias work, SPARC hacking, infrastructure improvements,
+previous contributions to the steering committee, loop optimizations, etc.
+
+</li><li> Stephane Carrez for 68HC11 and 68HC12 ports.
+
+</li><li> Steve Chamberlain for support for the Renesas SH and H8 processors
+and the PicoJava processor, and for GCJ config fixes.
+
+</li><li> Glenn Chambers for help with the GCJ FAQ.
+
+</li><li> John-Marc Chandonia for various libgcj patches.
+
+</li><li> Denis Chertykov for contributing and maintaining the AVR port, the first GCC port
+for an 8-bit architecture.
+
+</li><li> Kito Cheng for his work on the RISC-V port, including bringing up the test
+suite and maintenance.
+
+</li><li> Scott Christley for his Objective-C contributions.
+
+</li><li> Eric Christopher for his Java porting help and clean-ups.
+
+</li><li> Branko Cibej for more warning contributions.
+
+</li><li> The <a href="https://www.gnu.org/software/classpath/">GNU Classpath project</a>
+for all of their merged runtime code.
+
+</li><li> Nick Clifton for arm, mcore, fr30, v850, m32r, msp430 rx work,
+<samp>--help</samp>, and other random hacking.
+
+</li><li> Michael Cook for libstdc++ cleanup patches to reduce warnings.
+
+</li><li> R. Kelley Cook for making GCC buildable from a read-only directory as
+well as other miscellaneous build process and documentation clean-ups.
+
+</li><li> Ralf Corsepius for SH testing and minor bug fixing.
+
+</li><li> Fran&ccedil;ois-Xavier Coudert for contributions to GNU Fortran.
+
+</li><li> Stan Cox for care and feeding of the x86 port and lots of behind
+the scenes hacking.
+
+</li><li> Alex Crain provided changes for the 3b1.
+
+</li><li> Ian Dall for major improvements to the NS32k port.
+
+</li><li> Paul Dale for his work to add uClinux platform support to the
+m68k backend.
+
+</li><li> Palmer Dabbelt for his work maintaining the RISC-V port.
+
+</li><li> Dario Dariol contributed the four varieties of sample programs
+that print a copy of their source.
+
+</li><li> Russell Davidson for fstream and stringstream fixes in libstdc++.
+
+</li><li> Bud Davis for work on the G77 and GNU Fortran compilers.
+
+</li><li> Mo DeJong for GCJ and libgcj bug fixes.
+
+</li><li> Jerry DeLisle for contributions to GNU Fortran.
+
+</li><li> DJ Delorie for the DJGPP port, build and libiberty maintenance,
+various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
+
+</li><li> Arnaud Desitter for helping to debug GNU Fortran.
+
+</li><li> Gabriel Dos Reis for contributions to G++, contributions and
+maintenance of GCC diagnostics infrastructure, libstdc++-v3,
+including <code>valarray&lt;&gt;</code>, <code>complex&lt;&gt;</code>, maintaining the numerics library
+(including that pesky <code>&lt;limits&gt;</code> :-) and keeping up-to-date anything
+to do with numbers.
+
+</li><li> Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99
+support, CFG dumping support, etc., plus support of the C++ runtime
+libraries including for all kinds of C interface issues, contributing and
+maintaining <code>complex&lt;&gt;</code>, sanity checking and disbursement, configuration
+architecture, libio maintenance, and early math work.
+
+</li><li> Fran&ccedil;ois Dumont for his work on libstdc++-v3, especially maintaining and
+improving <code>debug-mode</code> and associative and unordered containers.
+
+</li><li> Zdenek Dvorak for a new loop unroller and various fixes.
+
+</li><li> Michael Eager for his work on the Xilinx MicroBlaze port.
+
+</li><li> Richard Earnshaw for his ongoing work with the ARM.
+
+</li><li> David Edelsohn for his direction via the steering committee, ongoing work
+with the RS6000/PowerPC port, help cleaning up Haifa loop changes,
+doing the entire AIX port of libstdc++ with his bare hands, and for
+ensuring GCC properly keeps working on AIX.
+
+</li><li> Kevin Ediger for the floating point formatting of num_put::do_put in
+libstdc++.
+
+</li><li> Phil Edwards for libstdc++ work including configuration hackery,
+documentation maintainer, chief breaker of the web pages, the occasional
+iostream bug fix, and work on shared library symbol versioning.
+
+</li><li> Paul Eggert for random hacking all over GCC.
+
+</li><li> Mark Elbrecht for various DJGPP improvements, and for libstdc++
+configuration support for locales and fstream-related fixes.
+
+</li><li> Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams.
+
+</li><li> Christian Ehrhardt for dealing with bug reports.
+
+</li><li> Ben Elliston for his work to move the Objective-C runtime into its
+own subdirectory and for his work on autoconf.
+
+</li><li> Revital Eres for work on the PowerPC 750CL port.
+
+</li><li> Marc Espie for OpenBSD support.
+
+</li><li> Doug Evans for much of the global optimization framework, arc, m32r,
+and SPARC work.
+
+</li><li> Christopher Faylor for his work on the Cygwin port and for caring and
+feeding the gcc.gnu.org box and saving its users tons of spam.
+
+</li><li> Fred Fish for BeOS support and Ada fixes.
+
+</li><li> Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
+
+</li><li> Peter Gerwinski for various bug fixes and the Pascal front end.
+
+</li><li> Kaveh R. Ghazi for his direction via the steering committee, amazing
+work to make &lsquo;<samp>-W -Wall -W* -Werror</samp>&rsquo; useful, and
+testing GCC on a plethora of platforms. Kaveh extends his gratitude to
+the CAIP Center at Rutgers University for providing him with computing
+resources to work on Free Software from the late 1980s to 2010.
+
+</li><li> John Gilmore for a donation to the FSF earmarked improving GNU Java.
+
+</li><li> Judy Goldberg for c++ contributions.
+
+</li><li> Torbjorn Granlund for various fixes and the c-torture testsuite,
+multiply- and divide-by-constant optimization, improved long long
+support, improved leaf function register allocation, and his direction
+via the steering committee.
+
+</li><li> Jonny Grant for improvements to <code>collect2's</code> <samp>--help</samp> documentation.
+
+</li><li> Anthony Green for his <samp>-Os</samp> contributions, the moxie port, and
+Java front end work.
+
+</li><li> Stu Grossman for gdb hacking, allowing GCJ developers to debug Java code.
+
+</li><li> Michael K. Gschwind contributed the port to the PDP-11.
+
+</li><li> Richard Biener for his ongoing middle-end contributions and bug fixes
+and for release management.
+
+</li><li> Ron Guilmette implemented the <code>protoize</code> and <code>unprotoize</code>
+tools, the support for DWARF 1 symbolic debugging information, and much of
+the support for System V Release 4. He has also worked heavily on the
+Intel 386 and 860 support.
+
+</li><li> Sumanth Gundapaneni for contributing the CR16 port.
+
+</li><li> Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload GCSE.
+
+</li><li> Bruno Haible for improvements in the runtime overhead for EH, new
+warnings and assorted bug fixes.
+
+</li><li> Andrew Haley for his amazing Java compiler and library efforts.
+
+</li><li> Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300.
+
+</li><li> Michael Hayes for various thankless work he&rsquo;s done trying to get
+the c30/c40 ports functional. Lots of loop and unroll improvements and
+fixes.
+
+</li><li> Dara Hazeghi for wading through myriads of target-specific bug reports.
+
+</li><li> Kate Hedstrom for staking the G77 folks with an initial testsuite.
+
+</li><li> Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64 work, loop
+opts, and generally fixing lots of old problems we&rsquo;ve ignored for
+years, flow rewrite and lots of further stuff, including reviewing
+tons of patches.
+
+</li><li> Aldy Hernandez for working on the PowerPC port, SIMD support, and
+various fixes.
+
+</li><li> Nobuyuki Hikichi of Software Research Associates, Tokyo, contributed
+the support for the Sony NEWS machine.
+
+</li><li> Kazu Hirata for caring and feeding the Renesas H8/300 port and various fixes.
+
+</li><li> Katherine Holcomb for work on GNU Fortran.
+
+</li><li> Manfred Hollstein for his ongoing work to keep the m88k alive, lots
+of testing and bug fixing, particularly of GCC configury code.
+
+</li><li> Steve Holmgren for MachTen patches.
+
+</li><li> Mat Hostetter for work on the TILE-Gx and TILEPro ports.
+
+</li><li> Jan Hubicka for his x86 port improvements.
+
+</li><li> Falk Hueffner for working on C and optimization bug reports.
+
+</li><li> Bernardo Innocenti for his m68k work, including merging of
+ColdFire improvements and uClinux support.
+
+</li><li> Christian Iseli for various bug fixes.
+
+</li><li> Kamil Iskra for general m68k hacking.
+
+</li><li> Lee Iverson for random fixes and MIPS testing.
+
+</li><li> Balaji V. Iyer for Cilk+ development and merging.
+
+</li><li> Andreas Jaeger for testing and benchmarking of GCC and various bug fixes.
+
+</li><li> Martin Jambor for his work on inter-procedural optimizations, the
+switch conversion pass, and scalar replacement of aggregates.
+
+</li><li> Jakub Jelinek for his SPARC work and sibling call optimizations as well
+as lots of bug fixes and test cases, and for improving the Java build
+system.
+
+</li><li> Janis Johnson for ia64 testing and fixes, her quality improvement
+sidetracks, and web page maintenance.
+
+</li><li> Kean Johnston for SCO OpenServer support and various fixes.
+
+</li><li> Tim Josling for the sample language treelang based originally on Richard
+Kenner&rsquo;s &ldquo;toy&rdquo; language.
+
+</li><li> Nicolai Josuttis for additional libstdc++ documentation.
+
+</li><li> Klaus Kaempf for his ongoing work to make alpha-vms a viable target.
+
+</li><li> Steven G. Kargl for work on GNU Fortran.
+
+</li><li> David Kashtan of SRI adapted GCC to VMS.
+
+</li><li> Ryszard Kabatek for many, many libstdc++ bug fixes and optimizations of
+strings, especially member functions, and for auto_ptr fixes.
+
+</li><li> Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux
+and his automatic regression tester.
+
+</li><li> Brendan Kehoe for his ongoing work with G++ and for a lot of early work
+in just about every part of libstdc++.
+
+</li><li> Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
+MIL-STD-1750A.
+
+</li><li> Richard Kenner of the New York University Ultracomputer Research
+Laboratory wrote the machine descriptions for the AMD 29000, the DEC
+Alpha, the IBM RT PC, and the IBM RS/6000 as well as the support for
+instruction attributes. He also made changes to better support RISC
+processors including changes to common subexpression elimination,
+strength reduction, function calling sequence handling, and condition
+code support, in addition to generalizing the code for frame pointer
+elimination and delay slot scheduling. Richard Kenner was also the
+head maintainer of GCC for several years.
+
+</li><li> Mumit Khan for various contributions to the Cygwin and Mingw32 ports and
+maintaining binary releases for Microsoft Windows hosts, and for massive libstdc++
+porting work to Cygwin/Mingw32.
+
+</li><li> Robin Kirkham for cpu32 support.
+
+</li><li> Mark Klein for PA improvements.
+
+</li><li> Thomas Koenig for various bug fixes.
+
+</li><li> Bruce Korb for the new and improved fixincludes code.
+
+</li><li> Benjamin Kosnik for his G++ work and for leading the libstdc++-v3 effort.
+
+</li><li> Maxim Kuvyrkov for contributions to the instruction scheduler, the Android
+and m68k/Coldfire ports, and optimizations.
+
+</li><li> Charles LaBrec contributed the support for the Integrated Solutions
+68020 system.
+
+</li><li> Asher Langton and Mike Kumbera for contributing Cray pointer support
+to GNU Fortran, and for other GNU Fortran improvements.
+
+</li><li> Jeff Law for his direction via the steering committee, coordinating the
+entire egcs project and GCC 2.95, rolling out snapshots and releases,
+handling merges from GCC2, reviewing tons of patches that might have
+fallen through the cracks else, and random but extensive hacking.
+
+</li><li> Walter Lee for work on the TILE-Gx and TILEPro ports.
+
+</li><li> Marc Lehmann for his direction via the steering committee and helping
+with analysis and improvements of x86 performance.
+
+</li><li> Victor Leikehman for work on GNU Fortran.
+
+</li><li> Ted Lemon wrote parts of the RTL reader and printer.
+
+</li><li> Kriang Lerdsuwanakij for C++ improvements including template as template
+parameter support, and many C++ fixes.
+
+</li><li> Warren Levy for tremendous work on libgcj (Java Runtime Library) and
+random work on the Java front end.
+
+</li><li> Alain Lichnewsky ported GCC to the MIPS CPU.
+
+</li><li> Oskar Liljeblad for hacking on AWT and his many Java bug reports and
+patches.
+
+</li><li> Robert Lipe for OpenServer support, new testsuites, testing, etc.
+
+</li><li> Chen Liqin for various S+core related fixes/improvement, and for
+maintaining the S+core port.
+
+</li><li> Martin Liska for his work on identical code folding, the sanitizers,
+HSA, general bug fixing and for running automated regression testing of GCC
+and reporting numerous bugs.
+
+</li><li> Weiwen Liu for testing and various bug fixes.
+
+</li><li> Manuel L&oacute;pez-Ib&aacute;&ntilde;ez for improving <samp>-Wconversion</samp> and
+many other diagnostics fixes and improvements.
+
+</li><li> Dave Love for his ongoing work with the Fortran front end and
+runtime libraries.
+
+</li><li> Martin von L&ouml;wis for internal consistency checking infrastructure,
+various C++ improvements including namespace support, and tons of
+assistance with libstdc++/compiler merges.
+
+</li><li> H.J. Lu for his previous contributions to the steering committee, many x86
+bug reports, prototype patches, and keeping the GNU/Linux ports working.
+
+</li><li> Greg McGary for random fixes and (someday) bounded pointers.
+
+</li><li> Andrew MacLeod for his ongoing work in building a real EH system,
+various code generation improvements, work on the global optimizer, etc.
+
+</li><li> Vladimir Makarov for hacking some ugly i960 problems, PowerPC hacking
+improvements to compile-time performance, overall knowledge and
+direction in the area of instruction scheduling, design and
+implementation of the automaton based instruction scheduler and
+design and implementation of the integrated and local register allocators.
+
+</li><li> David Malcolm for his work on improving GCC diagnostics, JIT, self-tests
+and unit testing.
+
+</li><li> Bob Manson for his behind the scenes work on dejagnu.
+
+</li><li> Jose E. Marchesi for contributing the eBPF backend and his ongoing
+work maintaining it.
+
+</li><li> John Marino for contributing the DragonFly BSD port.
+
+</li><li> Philip Martin for lots of libstdc++ string and vector iterator fixes and
+improvements, and string clean up and testsuites.
+
+</li><li> Michael Matz for his work on dominance tree discovery, the x86-64 port,
+link-time optimization framework and general optimization improvements.
+
+</li><li> All of the Mauve project contributors for Java test code.
+
+</li><li> Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
+
+</li><li> Adam Megacz for his work on the Microsoft Windows port of GCJ.
+
+</li><li> Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
+powerpc, haifa, ECOFF debug support, and other assorted hacking.
+
+</li><li> Jason Merrill for his direction via the steering committee and leading
+the G++ effort.
+
+</li><li> Martin Michlmayr for testing GCC on several architectures using the
+entire Debian archive.
+
+</li><li> David Miller for his direction via the steering committee, lots of
+SPARC work, improvements in jump.cc and interfacing with the Linux kernel
+developers.
+
+</li><li> Gary Miller ported GCC to Charles River Data Systems machines.
+
+</li><li> Alfred Minarik for libstdc++ string and ios bug fixes, and turning the
+entire libstdc++ testsuite namespace-compatible.
+
+</li><li> Mark Mitchell for his direction via the steering committee, mountains of
+C++ work, load/store hoisting out of loops, alias analysis improvements,
+ISO C <code>restrict</code> support, and serving as release manager from 2000
+to 2011.
+
+</li><li> Alan Modra for various GNU/Linux bits and testing.
+
+</li><li> Toon Moene for his direction via the steering committee, Fortran
+maintenance, and his ongoing work to make us make Fortran run fast.
+
+</li><li> Jason Molenda for major help in the care and feeding of all the services
+on the gcc.gnu.org (formerly egcs.cygnus.com) machine&mdash;mail, web
+services, ftp services, etc etc. Doing all this work on scrap paper and
+the backs of envelopes would have been&hellip; difficult.
+
+</li><li> Catherine Moore for fixing various ugly problems we have sent her
+way, including the haifa bug which was killing the Alpha &amp; PowerPC
+Linux kernels.
+
+</li><li> Mike Moreton for his various Java patches.
+
+</li><li> David Mosberger-Tang for various Alpha improvements, and for the initial
+IA-64 port.
+
+</li><li> Stephen Moshier contributed the floating point emulator that assists in
+cross-compilation and permits support for floating point numbers wider
+than 64 bits and for ISO C99 support.
+
+</li><li> Bill Moyer for his behind the scenes work on various issues.
+
+</li><li> Philippe De Muyter for his work on the m68k port.
+
+</li><li> Joseph S. Myers for his work on the PDP-11 port, format checking and ISO
+C99 support, and continuous emphasis on (and contributions to) documentation.
+
+</li><li> Nathan Myers for his work on libstdc++-v3: architecture and authorship
+through the first three snapshots, including implementation of locale
+infrastructure, string, shadow C headers, and the initial project
+documentation (DESIGN, CHECKLIST, and so forth). Later, more work on
+MT-safe string and shadow headers.
+
+</li><li> Felix Natter for documentation on porting libstdc++.
+
+</li><li> Nathanael Nerode for cleaning up the configuration/build process.
+
+</li><li> NeXT, Inc. donated the front end that supports the Objective-C
+language.
+
+</li><li> Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the search
+engine setup, various documentation fixes and other small fixes.
+
+</li><li> Geoff Noer for his work on getting cygwin native builds working.
+
+</li><li> Vegard Nossum for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance
+tracking web pages, GIMPLE tuples, and assorted fixes.
+
+</li><li> David O&rsquo;Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64, FreeBSD/ARM,
+FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related infrastructure
+improvements.
+
+</li><li> Alexandre Oliva for various build infrastructure improvements, scripts and
+amazing testing work, including keeping libtool issues sane and happy.
+
+</li><li> Stefan Olsson for work on mt_alloc.
+
+</li><li> Melissa O&rsquo;Neill for various NeXT fixes.
+
+</li><li> Rainer Orth for random MIPS work, including improvements to GCC&rsquo;s o32
+ABI support, improvements to dejagnu&rsquo;s MIPS support, Java configuration
+clean-ups and porting work, and maintaining the IRIX, Solaris 2, and
+Tru64 UNIX ports.
+
+</li><li> Steven Pemberton for his contribution of <samp>enquire</samp> which allowed GCC to
+determine various properties of the floating point unit and generate
+<samp>float.h</samp> in older versions of GCC.
+
+</li><li> Hartmut Penner for work on the s390 port.
+
+</li><li> Paul Petersen wrote the machine description for the Alliant FX/8.
+
+</li><li> Alexandre Petit-Bianco for implementing much of the Java compiler and
+continued Java maintainership.
+
+</li><li> Matthias Pfaller for major improvements to the NS32k port.
+
+</li><li> Gerald Pfeifer for his direction via the steering committee, pointing
+out lots of problems we need to solve, maintenance of the web pages, and
+taking care of documentation maintenance in general.
+
+</li><li> Marek Polacek for his work on the C front end, the sanitizers and general
+bug fixing.
+
+</li><li> Andrew Pinski for processing bug reports by the dozen.
+
+</li><li> Ovidiu Predescu for his work on the Objective-C front end and runtime
+libraries.
+
+</li><li> Jerry Quinn for major performance improvements in C++ formatted I/O.
+
+</li><li> Ken Raeburn for various improvements to checker, MIPS ports and various
+cleanups in the compiler.
+
+</li><li> Rolf W. Rasmussen for hacking on AWT.
+
+</li><li> David Reese of Sun Microsystems contributed to the Solaris on PowerPC
+port.
+
+</li><li> John Regehr for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Volker Reichelt for running automated regression testing of GCC and reporting
+numerous bugs and for keeping up with the problem reports.
+
+</li><li> Joern Rennecke for maintaining the sh port, loop, regmove &amp; reload
+hacking and developing and maintaining the Epiphany port.
+
+</li><li> Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD
+port, threading fixes, thread-related configury changes, critical
+threading documentation, and solutions to really tricky I/O problems,
+as well as keeping GCC properly working on FreeBSD and continuous testing.
+
+</li><li> Craig Rodrigues for processing tons of bug reports.
+
+</li><li> Ola R&ouml;nnerup for work on mt_alloc.
+
+</li><li> Gavin Romig-Koch for lots of behind the scenes MIPS work.
+
+</li><li> David Ronis inspired and encouraged Craig to rewrite the G77
+documentation in texinfo format by contributing a first pass at a
+translation of the old <samp>g77-0.5.16/f/DOC</samp> file.
+
+</li><li> Ken Rose for fixes to GCC&rsquo;s delay slot filling code.
+
+</li><li> Ira Rosen for her contributions to the auto-vectorizer.
+
+</li><li> Paul Rubin wrote most of the preprocessor.
+
+</li><li> P&eacute;tur Run&oacute;lfsson for major performance improvements in C++ formatted I/O and
+large file support in C++ filebuf.
+
+</li><li> Chip Salzenberg for libstdc++ patches and improvements to locales, traits,
+Makefiles, libio, libtool hackery, and &ldquo;long long&rdquo; support.
+
+</li><li> Juha Sarlin for improvements to the H8 code generator.
+
+</li><li> Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300.
+
+</li><li> Roger Sayle for improvements to constant folding and GCC&rsquo;s RTL optimizers
+as well as for fixing numerous bugs.
+
+</li><li> Bradley Schatz for his work on the GCJ FAQ.
+
+</li><li> Peter Schauer wrote the code to allow debugging to work on the Alpha.
+
+</li><li> William Schelter did most of the work on the Intel 80386 support.
+
+</li><li> Tobias Schl&uuml;ter for work on GNU Fortran.
+
+</li><li> Bernd Schmidt for various code generation improvements and major
+work in the reload pass, serving as release manager for
+GCC 2.95.3, and work on the Blackfin and C6X ports.
+
+</li><li> Peter Schmid for constant testing of libstdc++&mdash;especially application
+testing, going above and beyond what was requested for the release
+criteria&mdash;and libstdc++ header file tweaks.
+
+</li><li> Jason Schroeder for jcf-dump patches.
+
+</li><li> Andreas Schwab for his work on the m68k port.
+
+</li><li> Lars Segerlund for work on GNU Fortran.
+
+</li><li> Dodji Seketeli for numerous C++ bug fixes and debug info improvements.
+
+</li><li> Tim Shen for major work on <code>&lt;regex&gt;</code>.
+
+</li><li> Joel Sherrill for his direction via the steering committee, RTEMS
+contributions and RTEMS testing.
+
+</li><li> Nathan Sidwell for many C++ fixes/improvements.
+
+</li><li> Jeffrey Siegal for helping RMS with the original design of GCC, some
+code which handles the parse tree and RTL data structures, constant
+folding and help with the original VAX &amp; m68k ports.
+
+</li><li> Kenny Simpson for prompting libstdc++ fixes due to defect reports from
+the LWG (thereby keeping GCC in line with updates from the ISO).
+
+</li><li> Franz Sirl for his ongoing work with making the PPC port stable
+for GNU/Linux.
+
+</li><li> Andrey Slepuhin for assorted AIX hacking.
+
+</li><li> Trevor Smigiel for contributing the SPU port.
+
+</li><li> Christopher Smith did the port for Convex machines.
+
+</li><li> Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
+Retired from GCC maintainership August 2010, having mentored two
+new maintainers into the role.
+
+</li><li> Randy Smith finished the Sun FPA support.
+
+</li><li> Ed Smith-Rowland for his continuous work on libstdc++-v3, special functions,
+<code>&lt;random&gt;</code>, and various improvements to C++11 features.
+
+</li><li> Scott Snyder for queue, iterator, istream, and string fixes and libstdc++
+testsuite entries. Also for providing the patch to G77 to add
+rudimentary support for <code>INTEGER*1</code>, <code>INTEGER*2</code>, and
+<code>LOGICAL*1</code>.
+
+</li><li> Zdenek Sojka for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Arseny Solokha for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Jayant Sonar for contributing the CR16 port.
+
+</li><li> Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
+
+</li><li> Richard Stallman, for writing the original GCC and launching the GNU project.
+
+</li><li> Jan Stein of the Chalmers Computer Society provided support for
+Genix, as well as part of the 32000 machine description.
+
+</li><li> Gerhard Steinmetz for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Nigel Stephens for various mips16 related fixes/improvements.
+
+</li><li> Jonathan Stone wrote the machine description for the Pyramid computer.
+
+</li><li> Graham Stott for various infrastructure improvements.
+
+</li><li> John Stracke for his Java HTTP protocol fixes.
+
+</li><li> Mike Stump for his Elxsi port, G++ contributions over the years and more
+recently his vxworks contributions
+
+</li><li> Jeff Sturm for Java porting help, bug fixes, and encouragement.
+
+</li><li> Zhendong Su for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Chengnian Sun for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Shigeya Suzuki for this fixes for the bsdi platforms.
+
+</li><li> Ian Lance Taylor for the Go frontend, the initial mips16 and mips64
+support, general configury hacking, fixincludes, etc.
+
+</li><li> Holger Teutsch provided the support for the Clipper CPU.
+
+</li><li> Gary Thomas for his ongoing work to make the PPC work for GNU/Linux.
+
+</li><li> Paul Thomas for contributions to GNU Fortran.
+
+</li><li> Philipp Thomas for random bug fixes throughout the compiler
+
+</li><li> Jason Thorpe for thread support in libstdc++ on NetBSD.
+
+</li><li> Kresten Krab Thorup wrote the run time support for the Objective-C
+language and the fantastic Java bytecode interpreter.
+
+</li><li> Michael Tiemann for random bug fixes, the first instruction scheduler,
+initial C++ support, function integration, NS32k, SPARC and M88k
+machine description work, delay slot scheduling.
+
+</li><li> Andreas Tobler for his work porting libgcj to Darwin.
+
+</li><li> Teemu Torma for thread safe exception handling support.
+
+</li><li> Leonard Tower wrote parts of the parser, RTL generator, and RTL
+definitions, and of the VAX machine description.
+
+</li><li> Daniel Towner and Hariharan Sandanagobalane contributed and
+maintain the picoChip port.
+
+</li><li> Tom Tromey for internationalization support and for his many Java
+contributions and libgcj maintainership.
+
+</li><li> Lassi Tuura for improvements to config.guess to determine HP processor
+types.
+
+</li><li> Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
+
+</li><li> Andy Vaught for the design and initial implementation of the GNU Fortran
+front end.
+
+</li><li> Brent Verner for work with the libstdc++ cshadow files and their
+associated configure steps.
+
+</li><li> Todd Vierling for contributions for NetBSD ports.
+
+</li><li> Andrew Waterman for contributing the RISC-V port, as well as maintaining it.
+
+</li><li> Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML
+guidance and maintaining libstdc++.
+
+</li><li> Dean Wakerley for converting the install documentation from HTML to texinfo
+in time for GCC 3.0.
+
+</li><li> Krister Walfridsson for random bug fixes.
+
+</li><li> Feng Wang for contributions to GNU Fortran.
+
+</li><li> Stephen M. Webb for time and effort on making libstdc++ shadow files
+work with the tricky Solaris 8+ headers, and for pushing the build-time
+header tree. Also, for starting and driving the <code>&lt;regex&gt;</code> effort.
+
+</li><li> John Wehle for various improvements for the x86 code generator,
+related infrastructure improvements to help x86 code generation,
+value range propagation and other work, WE32k port.
+
+</li><li> Ulrich Weigand for work on the s390 port.
+
+</li><li> Janus Weil for contributions to GNU Fortran.
+
+</li><li> Zack Weinberg for major work on cpplib and various other bug fixes.
+
+</li><li> Matt Welsh for help with Linux Threads support in GCJ.
+
+</li><li> Urban Widmark for help fixing java.io.
+
+</li><li> Mark Wielaard for new Java library code and his work integrating with
+Classpath.
+
+</li><li> Dale Wiles helped port GCC to the Tahoe.
+
+</li><li> Bob Wilson from Tensilica, Inc. for the Xtensa port.
+
+</li><li> Jim Wilson for his direction via the steering committee, tackling hard
+problems in various places that nobody else wanted to work on, strength
+reduction and other loop optimizations.
+
+</li><li> Paul Woegerer and Tal Agmon for the CRX port.
+
+</li><li> Carlo Wood for various fixes.
+
+</li><li> Tom Wood for work on the m88k port.
+
+</li><li> Chung-Ju Wu for his work on the Andes NDS32 port.
+
+</li><li> Canqun Yang for work on GNU Fortran.
+
+</li><li> Masanobu Yuhara of Fujitsu Laboratories implemented the machine
+description for the Tron architecture (specifically, the Gmicro).
+
+</li><li> Kevin Zachmann helped port GCC to the Tahoe.
+
+</li><li> Ayal Zaks for Swing Modulo Scheduling (SMS).
+
+</li><li> Qirun Zhang for running automated regression testing of GCC and reporting
+numerous bugs.
+
+</li><li> Xiaoqiang Zhang for work on GNU Fortran.
+
+</li><li> Gilles Zunino for help porting Java to Irix.
+
+</li></ul>
+
+<p>The following people are recognized for their contributions to GNAT,
+the Ada front end of GCC:
+</p><ul>
+<li> Bernard Banner
+
+</li><li> Romain Berrendonner
+
+</li><li> Geert Bosch
+
+</li><li> Emmanuel Briot
+
+</li><li> Joel Brobecker
+
+</li><li> Ben Brosgol
+
+</li><li> Vincent Celier
+
+</li><li> Arnaud Charlet
+
+</li><li> Chien Chieng
+
+</li><li> Cyrille Comar
+
+</li><li> Cyrille Crozes
+
+</li><li> Robert Dewar
+
+</li><li> Gary Dismukes
+
+</li><li> Robert Duff
+
+</li><li> Ed Falis
+
+</li><li> Ramon Fernandez
+
+</li><li> Sam Figueroa
+
+</li><li> Vasiliy Fofanov
+
+</li><li> Michael Friess
+
+</li><li> Franco Gasperoni
+
+</li><li> Ted Giering
+
+</li><li> Matthew Gingell
+
+</li><li> Laurent Guerby
+
+</li><li> Jerome Guitton
+
+</li><li> Olivier Hainque
+
+</li><li> Jerome Hugues
+
+</li><li> Hristian Kirtchev
+
+</li><li> Jerome Lambourg
+
+</li><li> Bruno Leclerc
+
+</li><li> Albert Lee
+
+</li><li> Sean McNeil
+
+</li><li> Javier Miranda
+
+</li><li> Laurent Nana
+
+</li><li> Pascal Obry
+
+</li><li> Dong-Ik Oh
+
+</li><li> Laurent Pautet
+
+</li><li> Brett Porter
+
+</li><li> Thomas Quinot
+
+</li><li> Nicolas Roche
+
+</li><li> Pat Rogers
+
+</li><li> Jose Ruiz
+
+</li><li> Douglas Rupp
+
+</li><li> Sergey Rybin
+
+</li><li> Gail Schenker
+
+</li><li> Ed Schonberg
+
+</li><li> Nicolas Setton
+
+</li><li> Samuel Tardieu
+
+</li></ul>
+
+
+<p>The following people are recognized for their contributions of new
+features, bug reports, testing and integration of classpath/libgcj for
+GCC version 4.1:
+</p><ul>
+<li> Lillian Angel for <code>JTree</code> implementation and lots Free Swing
+additions and bug fixes.
+
+</li><li> Wolfgang Baer for <code>GapContent</code> bug fixes.
+
+</li><li> Anthony Balkissoon for <code>JList</code>, Free Swing 1.5 updates and mouse event
+fixes, lots of Free Swing work including <code>JTable</code> editing.
+
+</li><li> Stuart Ballard for RMI constant fixes.
+
+</li><li> Goffredo Baroncelli for <code>HTTPURLConnection</code> fixes.
+
+</li><li> Gary Benson for <code>MessageFormat</code> fixes.
+
+</li><li> Daniel Bonniot for <code>Serialization</code> fixes.
+
+</li><li> Chris Burdess for lots of gnu.xml and http protocol fixes, <code>StAX</code>
+and <code>DOM xml:id</code> support.
+
+</li><li> Ka-Hing Cheung for <code>TreePath</code> and <code>TreeSelection</code> fixes.
+
+</li><li> Archie Cobbs for build fixes, VM interface updates,
+<code>URLClassLoader</code> updates.
+
+</li><li> Kelley Cook for build fixes.
+
+</li><li> Martin Cordova for Suggestions for better <code>SocketTimeoutException</code>.
+
+</li><li> David Daney for <code>BitSet</code> bug fixes, <code>HttpURLConnection</code>
+rewrite and improvements.
+
+</li><li> Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo 2D
+support. Lots of imageio framework additions, lots of AWT and Free
+Swing bug fixes.
+
+</li><li> Jeroen Frijters for <code>ClassLoader</code> and nio cleanups, serialization fixes,
+better <code>Proxy</code> support, bug fixes and IKVM integration.
+
+</li><li> Santiago Gala for <code>AccessControlContext</code> fixes.
+
+</li><li> Nicolas Geoffray for <code>VMClassLoader</code> and <code>AccessController</code>
+improvements.
+
+</li><li> David Gilbert for <code>basic</code> and <code>metal</code> icon and plaf support
+and lots of documenting, Lots of Free Swing and metal theme
+additions. <code>MetalIconFactory</code> implementation.
+
+</li><li> Anthony Green for <code>MIDI</code> framework, <code>ALSA</code> and <code>DSSI</code>
+providers.
+
+</li><li> Andrew Haley for <code>Serialization</code> and <code>URLClassLoader</code> fixes,
+gcj build speedups.
+
+</li><li> Kim Ho for <code>JFileChooser</code> implementation.
+
+</li><li> Andrew John Hughes for <code>Locale</code> and net fixes, URI RFC2986
+updates, <code>Serialization</code> fixes, <code>Properties</code> XML support and
+generic branch work, VMIntegration guide update.
+
+</li><li> Bastiaan Huisman for <code>TimeZone</code> bug fixing.
+
+</li><li> Andreas Jaeger for mprec updates.
+
+</li><li> Paul Jenner for better <samp>-Werror</samp> support.
+
+</li><li> Ito Kazumitsu for <code>NetworkInterface</code> implementation and updates.
+
+</li><li> Roman Kennke for <code>BoxLayout</code>, <code>GrayFilter</code> and
+<code>SplitPane</code>, plus bug fixes all over. Lots of Free Swing work
+including styled text.
+
+</li><li> Simon Kitching for <code>String</code> cleanups and optimization suggestions.
+
+</li><li> Michael Koch for configuration fixes, <code>Locale</code> updates, bug and
+build fixes.
+
+</li><li> Guilhem Lavaux for configuration, thread and channel fixes and Kaffe
+integration. JCL native <code>Pointer</code> updates. Logger bug fixes.
+
+</li><li> David Lichteblau for JCL support library global/local reference
+cleanups.
+
+</li><li> Aaron Luchko for JDWP updates and documentation fixes.
+
+</li><li> Ziga Mahkovec for <code>Graphics2D</code> upgraded to Cairo 0.5 and new regex
+features.
+
+</li><li> Sven de Marothy for BMP imageio support, CSS and <code>TextLayout</code>
+fixes. <code>GtkImage</code> rewrite, 2D, awt, free swing and date/time fixes and
+implementing the Qt4 peers.
+
+</li><li> Casey Marshall for crypto algorithm fixes, <code>FileChannel</code> lock,
+<code>SystemLogger</code> and <code>FileHandler</code> rotate implementations, NIO
+<code>FileChannel.map</code> support, security and policy updates.
+
+</li><li> Bryce McKinlay for RMI work.
+
+</li><li> Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus
+testing and documenting.
+
+</li><li> Kalle Olavi Niemitalo for build fixes.
+
+</li><li> Rainer Orth for build fixes.
+
+</li><li> Andrew Overholt for <code>File</code> locking fixes.
+
+</li><li> Ingo Proetel for <code>Image</code>, <code>Logger</code> and <code>URLClassLoader</code>
+updates.
+
+</li><li> Olga Rodimina for <code>MenuSelectionManager</code> implementation.
+
+</li><li> Jan Roehrich for <code>BasicTreeUI</code> and <code>JTree</code> fixes.
+
+</li><li> Julian Scheid for documentation updates and gjdoc support.
+
+</li><li> Christian Schlichtherle for zip fixes and cleanups.
+
+</li><li> Robert Schuster for documentation updates and beans fixes,
+<code>TreeNode</code> enumerations and <code>ActionCommand</code> and various
+fixes, XML and URL, AWT and Free Swing bug fixes.
+
+</li><li> Keith Seitz for lots of JDWP work.
+
+</li><li> Christian Thalinger for 64-bit cleanups, Configuration and VM
+interface fixes and <code>CACAO</code> integration, <code>fdlibm</code> updates.
+
+</li><li> Gael Thomas for <code>VMClassLoader</code> boot packages support suggestions.
+
+</li><li> Andreas Tobler for Darwin and Solaris testing and fixing, <code>Qt4</code>
+support for Darwin/OS X, <code>Graphics2D</code> support, <code>gtk+</code>
+updates.
+
+</li><li> Dalibor Topic for better <code>DEBUG</code> support, build cleanups and
+Kaffe integration. <code>Qt4</code> build infrastructure, <code>SHA1PRNG</code>
+and <code>GdkPixbugDecoder</code> updates.
+
+</li><li> Tom Tromey for Eclipse integration, generics work, lots of bug fixes
+and gcj integration including coordinating The Big Merge.
+
+</li><li> Mark Wielaard for bug fixes, packaging and release management,
+<code>Clipboard</code> implementation, system call interrupts and network
+timeouts and <code>GdkPixpufDecoder</code> fixes.
+
+</li></ul>
+
+
+<p>In addition to the above, all of which also contributed time and energy in
+testing GCC, we would like to thank the following for their contributions
+to testing:
+</p>
+<ul>
+<li> Michael Abd-El-Malek
+
+</li><li> Thomas Arend
+
+</li><li> Bonzo Armstrong
+
+</li><li> Steven Ashe
+
+</li><li> Chris Baldwin
+
+</li><li> David Billinghurst
+
+</li><li> Jim Blandy
+
+</li><li> Stephane Bortzmeyer
+
+</li><li> Horst von Brand
+
+</li><li> Frank Braun
+
+</li><li> Rodney Brown
+
+</li><li> Sidney Cadot
+
+</li><li> Bradford Castalia
+
+</li><li> Robert Clark
+
+</li><li> Jonathan Corbet
+
+</li><li> Ralph Doncaster
+
+</li><li> Richard Emberson
+
+</li><li> Levente Farkas
+
+</li><li> Graham Fawcett
+
+</li><li> Mark Fernyhough
+
+</li><li> Robert A. French
+
+</li><li> J&ouml;rgen Freyh
+
+</li><li> Mark K. Gardner
+
+</li><li> Charles-Antoine Gauthier
+
+</li><li> Yung Shing Gene
+
+</li><li> David Gilbert
+
+</li><li> Simon Gornall
+
+</li><li> Fred Gray
+
+</li><li> John Griffin
+
+</li><li> Patrik Hagglund
+
+</li><li> Phil Hargett
+
+</li><li> Amancio Hasty
+
+</li><li> Takafumi Hayashi
+
+</li><li> Bryan W. Headley
+
+</li><li> Kevin B. Hendricks
+
+</li><li> Joep Jansen
+
+</li><li> Christian Joensson
+
+</li><li> Michel Kern
+
+</li><li> David Kidd
+
+</li><li> Tobias Kuipers
+
+</li><li> Anand Krishnaswamy
+
+</li><li> A. O. V. Le Blanc
+
+</li><li> llewelly
+
+</li><li> Damon Love
+
+</li><li> Brad Lucier
+
+</li><li> Matthias Klose
+
+</li><li> Martin Knoblauch
+
+</li><li> Rick Lutowski
+
+</li><li> Jesse Macnish
+
+</li><li> Stefan Morrell
+
+</li><li> Anon A. Mous
+
+</li><li> Matthias Mueller
+
+</li><li> Pekka Nikander
+
+</li><li> Rick Niles
+
+</li><li> Jon Olson
+
+</li><li> Magnus Persson
+
+</li><li> Chris Pollard
+
+</li><li> Richard Polton
+
+</li><li> Derk Reefman
+
+</li><li> David Rees
+
+</li><li> Paul Reilly
+
+</li><li> Tom Reilly
+
+</li><li> Torsten Rueger
+
+</li><li> Danny Sadinoff
+
+</li><li> Marc Schifer
+
+</li><li> Erik Schnetter
+
+</li><li> Wayne K. Schroll
+
+</li><li> David Schuler
+
+</li><li> Vin Shelton
+
+</li><li> Tim Souder
+
+</li><li> Adam Sulmicki
+
+</li><li> Bill Thorson
+
+</li><li> George Talbot
+
+</li><li> Pedro A. M. Vazquez
+
+</li><li> Gregory Warnes
+
+</li><li> Ian Watson
+
+</li><li> David E. Young
+
+</li><li> And many others
+</li></ul>
+
+<p>And finally we&rsquo;d like to thank everyone who uses the compiler, provides
+feedback and generally reminds us why we&rsquo;re doing this work in the first
+place.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Option-Index.html#Option-Index" accesskey="n" rel="next">Option Index</a>, Previous: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="p" rel="previous">GNU Free Documentation License</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Control-Flow.html b/share/doc/gccint/Control-Flow.html
new file mode 100644
index 0000000..8995fde
--- /dev/null
+++ b/share/doc/gccint/Control-Flow.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Control Flow</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Control Flow">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Control Flow">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Basic-Blocks.html#Basic-Blocks" rel="next" title="Basic Blocks">
+<link href="Reading-RTL.html#Reading-RTL" rel="previous" title="Reading RTL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Control-Flow"></a>
+<div class="header">
+<p>
+Next: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="n" rel="next">Loop Analysis and Representation</a>, Previous: <a href="RTL.html#RTL" accesskey="p" rel="previous">RTL</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Control-Flow-Graph"></a>
+<h2 class="chapter">15 Control Flow Graph</h2>
+<a name="index-CFG_002c-Control-Flow-Graph"></a>
+<a name="index-basic_002dblock_002eh"></a>
+
+<p>A control flow graph (CFG) is a data structure built on top of the
+intermediate code representation (the RTL or <code>GIMPLE</code> instruction
+stream) abstracting the control flow behavior of a function that is
+being compiled. The CFG is a directed graph where the vertices
+represent basic blocks and edges represent possible transfer of
+control flow from one basic block to another. The data structures
+used to represent the control flow graph are defined in
+<samp>basic-block.h</samp>.
+</p>
+<p>In GCC, the representation of control flow is maintained throughout
+the compilation process, from constructing the CFG early in
+<code>pass_build_cfg</code> to <code>pass_free_cfg</code> (see <samp>passes.def</samp>).
+The CFG takes various different modes and may undergo extensive
+manipulations, but the graph is always valid between its construction
+and its release. This way, transfer of information such as data flow,
+a measured profile, or the loop tree, can be propagated through the
+passes pipeline, and even from <code>GIMPLE</code> to <code>RTL</code>.
+</p>
+<p>Often the CFG may be better viewed as integral part of instruction
+chain, than structure built on the top of it. Updating the compiler&rsquo;s
+intermediate representation for instructions cannot be easily done
+without proper maintenance of the CFG simultaneously.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Basic-Blocks.html#Basic-Blocks" accesskey="1">Basic Blocks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The definition and representation of basic blocks.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Edges.html#Edges" accesskey="2">Edges</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types of edges and their representation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Profile-information.html#Profile-information" accesskey="3">Profile information</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representation of frequencies and probabilities.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Maintaining-the-CFG.html#Maintaining-the-CFG" accesskey="4">Maintaining the CFG</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Keeping the control flow graph and up to date.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Liveness-information.html#Liveness-information" accesskey="5">Liveness information</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using and maintaining liveness information.
+</td></tr>
+</table>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="n" rel="next">Loop Analysis and Representation</a>, Previous: <a href="RTL.html#RTL" accesskey="p" rel="previous">RTL</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Conversions.html b/share/doc/gccint/Conversions.html
new file mode 100644
index 0000000..5976474
--- /dev/null
+++ b/share/doc/gccint/Conversions.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Conversions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Conversions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Conversions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="RTL-Declarations.html#RTL-Declarations" rel="next" title="RTL Declarations">
+<link href="Vector-Operations.html#Vector-Operations" rel="previous" title="Vector Operations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Conversions"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-Declarations.html#RTL-Declarations" accesskey="n" rel="next">RTL Declarations</a>, Previous: <a href="Vector-Operations.html#Vector-Operations" accesskey="p" rel="previous">Vector Operations</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Conversions-1"></a>
+<h3 class="section">14.13 Conversions</h3>
+<a name="index-conversions"></a>
+<a name="index-machine-mode-conversions"></a>
+
+<p>All conversions between machine modes must be represented by
+explicit conversion operations. For example, an expression
+which is the sum of a byte and a full word cannot be written as
+<code>(plus:SI (reg:QI 34) (reg:SI 80))</code> because the <code>plus</code>
+operation requires two operands of the same machine mode.
+Therefore, the byte-sized operand is enclosed in a conversion
+operation, as in
+</p>
+<div class="smallexample">
+<pre class="smallexample">(plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
+</pre></div>
+
+<p>The conversion operation is not a mere placeholder, because there
+may be more than one way of converting from a given starting mode
+to the desired final mode. The conversion operation code says how
+to do it.
+</p>
+<p>For all conversion operations, <var>x</var> must not be <code>VOIDmode</code>
+because the mode in which to do the conversion would not be known.
+The conversion must either be done at compile-time or <var>x</var>
+must be placed into a register.
+</p>
+<dl compact="compact">
+<dd><a name="index-sign_005fextend"></a>
+</dd>
+<dt><code>(sign_extend:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of sign-extending the value <var>x</var>
+to machine mode <var>m</var>. <var>m</var> must be a fixed-point mode
+and <var>x</var> a fixed-point value of a mode narrower than <var>m</var>.
+</p>
+<a name="index-zero_005fextend"></a>
+</dd>
+<dt><code>(zero_extend:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of zero-extending the value <var>x</var>
+to machine mode <var>m</var>. <var>m</var> must be a fixed-point mode
+and <var>x</var> a fixed-point value of a mode narrower than <var>m</var>.
+</p>
+<a name="index-float_005fextend"></a>
+</dd>
+<dt><code>(float_extend:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of extending the value <var>x</var>
+to machine mode <var>m</var>. <var>m</var> must be a floating point mode
+and <var>x</var> a floating point value of a mode narrower than <var>m</var>.
+</p>
+<a name="index-truncate"></a>
+</dd>
+<dt><code>(truncate:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of truncating the value <var>x</var>
+to machine mode <var>m</var>. <var>m</var> must be a fixed-point mode
+and <var>x</var> a fixed-point value of a mode wider than <var>m</var>.
+</p>
+<a name="index-ss_005ftruncate"></a>
+</dd>
+<dt><code>(ss_truncate:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of truncating the value <var>x</var>
+to machine mode <var>m</var>, using signed saturation in the case of
+overflow. Both <var>m</var> and the mode of <var>x</var> must be fixed-point
+modes.
+</p>
+<a name="index-us_005ftruncate"></a>
+</dd>
+<dt><code>(us_truncate:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of truncating the value <var>x</var>
+to machine mode <var>m</var>, using unsigned saturation in the case of
+overflow. Both <var>m</var> and the mode of <var>x</var> must be fixed-point
+modes.
+</p>
+<a name="index-float_005ftruncate"></a>
+</dd>
+<dt><code>(float_truncate:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of truncating the value <var>x</var>
+to machine mode <var>m</var>. <var>m</var> must be a floating point mode
+and <var>x</var> a floating point value of a mode wider than <var>m</var>.
+</p>
+<a name="index-float"></a>
+</dd>
+<dt><code>(float:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting fixed point value <var>x</var>,
+regarded as signed, to floating point mode <var>m</var>.
+</p>
+<a name="index-unsigned_005ffloat"></a>
+</dd>
+<dt><code>(unsigned_float:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting fixed point value <var>x</var>,
+regarded as unsigned, to floating point mode <var>m</var>.
+</p>
+<a name="index-fix"></a>
+</dd>
+<dt><code>(fix:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>When <var>m</var> is a floating-point mode, represents the result of
+converting floating point value <var>x</var> (valid for mode <var>m</var>) to an
+integer, still represented in floating point mode <var>m</var>, by rounding
+towards zero.
+</p>
+<p>When <var>m</var> is a fixed-point mode, represents the result of
+converting floating point value <var>x</var> to mode <var>m</var>, regarded as
+signed. How rounding is done is not specified, so this operation may
+be used validly in compiling C code only for integer-valued operands.
+</p>
+<a name="index-unsigned_005ffix"></a>
+</dd>
+<dt><code>(unsigned_fix:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting floating point value <var>x</var> to
+fixed point mode <var>m</var>, regarded as unsigned. How rounding is done
+is not specified.
+</p>
+<a name="index-fract_005fconvert"></a>
+</dd>
+<dt><code>(fract_convert:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting fixed-point value <var>x</var> to
+fixed-point mode <var>m</var>, signed integer value <var>x</var> to
+fixed-point mode <var>m</var>, floating-point value <var>x</var> to
+fixed-point mode <var>m</var>, fixed-point value <var>x</var> to integer mode <var>m</var>
+regarded as signed, or fixed-point value <var>x</var> to floating-point mode <var>m</var>.
+When overflows or underflows happen, the results are undefined.
+</p>
+<a name="index-sat_005ffract"></a>
+</dd>
+<dt><code>(sat_fract:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting fixed-point value <var>x</var> to
+fixed-point mode <var>m</var>, signed integer value <var>x</var> to
+fixed-point mode <var>m</var>, or floating-point value <var>x</var> to
+fixed-point mode <var>m</var>.
+When overflows or underflows happen, the results are saturated to the
+maximum or the minimum.
+</p>
+<a name="index-unsigned_005ffract_005fconvert"></a>
+</dd>
+<dt><code>(unsigned_fract_convert:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting fixed-point value <var>x</var> to
+integer mode <var>m</var> regarded as unsigned, or unsigned integer value <var>x</var> to
+fixed-point mode <var>m</var>.
+When overflows or underflows happen, the results are undefined.
+</p>
+<a name="index-unsigned_005fsat_005ffract"></a>
+</dd>
+<dt><code>(unsigned_sat_fract:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the result of converting unsigned integer value <var>x</var> to
+fixed-point mode <var>m</var>.
+When overflows or underflows happen, the results are saturated to the
+maximum or the minimum.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-Declarations.html#RTL-Declarations" accesskey="n" rel="next">RTL Declarations</a>, Previous: <a href="Vector-Operations.html#Vector-Operations" accesskey="p" rel="previous">Vector Operations</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Converting-poly_005fints.html b/share/doc/gccint/Converting-poly_005fints.html
new file mode 100644
index 0000000..52755ad
--- /dev/null
+++ b/share/doc/gccint/Converting-poly_005fints.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Converting poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Converting poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Converting poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" rel="next" title="Miscellaneous poly_int routines">
+<link href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" rel="previous" title="Computing bounds on poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Converting-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" accesskey="n" rel="next">Miscellaneous <code>poly_int</code> routines</a>, Previous: <a href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" accesskey="p" rel="previous">Computing bounds on <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Converting-poly_005fints-1"></a>
+<h3 class="section">10.7 Converting <code>poly_int</code>s</h3>
+
+<p>A <code>poly_int&lt;<var>n</var>, <var>T</var>&gt;</code> can be constructed from up to
+<var>n</var> individual <var>T</var> coefficients, with the remaining coefficients
+being implicitly zero. In particular, this means that every
+<code>poly_int&lt;<var>n</var>, <var>T</var>&gt;</code> can be constructed from a single
+scalar <var>T</var>, or something compatible with <var>T</var>.
+</p>
+<p>Also, a <code>poly_int&lt;<var>n</var>, <var>T</var>&gt;</code> can be constructed from
+a <code>poly_int&lt;<var>n</var>, <var>U</var>&gt;</code> if <var>T</var> can be constructed
+from <var>U</var>.
+</p>
+<p>The following functions provide other forms of conversion,
+or test whether such a conversion would succeed.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp><var>value</var>.is_constant ()</samp>&rsquo;</dt>
+<dd><p>Return true if <code>poly_int</code> <var>value</var> is a compile-time constant.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.is_constant (&amp;<var>c1</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <code>poly_int</code> <var>value</var> is a compile-time constant,
+storing it in <var>c1</var> if so. <var>c1</var> must be able to hold all
+constant values of <var>value</var> without loss of precision.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.to_constant ()</samp>&rsquo;</dt>
+<dd><p>Assert that <var>value</var> is a compile-time constant and return its value.
+When using this function, please add a comment explaining why the
+condition is known to hold (for example, because an earlier phase
+of analysis rejected non-constants).
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.to_shwi (&amp;<var>p2</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if &lsquo;<samp>poly_int&lt;<var>N</var>, <var>T</var>&gt;</samp>&rsquo; <var>value</var> can be
+represented without loss of precision as a
+&lsquo;<samp>poly_int&lt;<var>N</var>, <code>HOST_WIDE_INT</code>&gt;</samp>&rsquo;, storing it in that
+form in <var>p2</var> if so.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.to_uhwi (&amp;<var>p2</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if &lsquo;<samp>poly_int&lt;<var>N</var>, <var>T</var>&gt;</samp>&rsquo; <var>value</var> can be
+represented without loss of precision as a
+&lsquo;<samp>poly_int&lt;<var>N</var>, <code>unsigned HOST_WIDE_INT</code>&gt;</samp>&rsquo;, storing it in that
+form in <var>p2</var> if so.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.force_shwi ()</samp>&rsquo;</dt>
+<dd><p>Forcibly convert each coefficient of &lsquo;<samp>poly_int&lt;<var>N</var>, <var>T</var>&gt;</samp>&rsquo;
+<var>value</var> to <code>HOST_WIDE_INT</code>, truncating any that are out of range.
+Return the result as a &lsquo;<samp>poly_int&lt;<var>N</var>, <code>HOST_WIDE_INT</code>&gt;</samp>&rsquo;.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>value</var>.force_uhwi ()</samp>&rsquo;</dt>
+<dd><p>Forcibly convert each coefficient of &lsquo;<samp>poly_int&lt;<var>N</var>, <var>T</var>&gt;</samp>&rsquo;
+<var>value</var> to <code>unsigned HOST_WIDE_INT</code>, truncating any that are
+out of range. Return the result as a
+&lsquo;<samp>poly_int&lt;<var>N</var>, <code>unsigned HOST_WIDE_INT</code>&gt;</samp>&rsquo;.
+</p>
+</dd>
+<dt>&lsquo;<samp>wi::shwi (<var>value</var>, <var>precision</var>)</samp>&rsquo;</dt>
+<dd><p>Return a <code>poly_int</code> with the same value as <var>value</var>, but with
+the coefficients converted from <code>HOST_WIDE_INT</code> to <code>wide_int</code>.
+<var>precision</var> specifies the precision of the <code>wide_int</code> cofficients;
+if this is wider than a <code>HOST_WIDE_INT</code>, the coefficients of
+<var>value</var> will be sign-extended to fit.
+</p>
+</dd>
+<dt>&lsquo;<samp>wi::uhwi (<var>value</var>, <var>precision</var>)</samp>&rsquo;</dt>
+<dd><p>Like <code>wi::shwi</code>, except that <var>value</var> has coefficients of
+type <code>unsigned HOST_WIDE_INT</code>. If <var>precision</var> is wider than
+a <code>HOST_WIDE_INT</code>, the coefficients of <var>value</var> will be
+zero-extended to fit.
+</p>
+</dd>
+<dt>&lsquo;<samp>wi::sext (<var>value</var>, <var>precision</var>)</samp>&rsquo;</dt>
+<dd><p>Return a <code>poly_int</code> of the same type as <var>value</var>, sign-extending
+every coefficient from the low <var>precision</var> bits. This in effect
+applies <code>wi::sext</code> to each coefficient individually.
+</p>
+</dd>
+<dt>&lsquo;<samp>wi::zext (<var>value</var>, <var>precision</var>)</samp>&rsquo;</dt>
+<dd><p>Like <code>wi::sext</code>, but for zero extension.
+</p>
+</dd>
+<dt>&lsquo;<samp>poly_wide_int::from (<var>value</var>, <var>precision</var>, <var>sign</var>)</samp>&rsquo;</dt>
+<dd><p>Convert <var>value</var> to a <code>poly_wide_int</code> in which each coefficient
+has <var>precision</var> bits. Extend the coefficients according to
+<var>sign</var> if the coefficients have fewer bits.
+</p>
+</dd>
+<dt>&lsquo;<samp>poly_offset_int::from (<var>value</var>, <var>sign</var>)</samp>&rsquo;</dt>
+<dd><p>Convert <var>value</var> to a <code>poly_offset_int</code>, extending its coefficients
+according to <var>sign</var> if they have fewer bits than <code>offset_int</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp>poly_widest_int::from (<var>value</var>, <var>sign</var>)</samp>&rsquo;</dt>
+<dd><p>Convert <var>value</var> to a <code>poly_widest_int</code>, extending its coefficients
+according to <var>sign</var> if they have fewer bits than <code>widest_int</code>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" accesskey="n" rel="next">Miscellaneous <code>poly_int</code> routines</a>, Previous: <a href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" accesskey="p" rel="previous">Computing bounds on <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Copying.html b/share/doc/gccint/Copying.html
new file mode 100644
index 0000000..2392678
--- /dev/null
+++ b/share/doc/gccint/Copying.html
@@ -0,0 +1,793 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Copying</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Copying">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Copying">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" rel="next" title="GNU Free Documentation License">
+<link href="GNU-Project.html#GNU-Project" rel="previous" title="GNU Project">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Copying"></a>
+<div class="header">
+<p>
+Next: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="GNU-Project.html#GNU-Project" accesskey="p" rel="previous">GNU Project</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GNU-General-Public-License"></a>
+<h2 class="unnumbered">GNU General Public License</h2>
+<div align="center">Version 3, 29 June 2007
+</div>
+
+<div class="display">
+<pre class="display">Copyright &copy; 2007 Free Software Foundation, Inc. <a href="https://www.fsf.org">https://www.fsf.org</a>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+</pre></div>
+
+<a name="Preamble"></a>
+<h3 class="heading">Preamble</h3>
+
+<p>The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+</p>
+<p>The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program&ndash;to make sure it remains
+free software for all its users. We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors. You
+can apply it to your programs, too.
+</p>
+<p>When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+</p>
+<p>To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+</p>
+<p>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too,
+receive or can get the source code. And you must show them these
+terms so they know their rights.
+</p>
+<p>Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+</p>
+<p>For the developers&rsquo; and authors&rsquo; protection, the GPL clearly explains
+that there is no warranty for this free software. For both users&rsquo; and
+authors&rsquo; sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+</p>
+<p>Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so. This is fundamentally incompatible with the
+aim of protecting users&rsquo; freedom to change the software. The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products. If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+</p>
+<p>Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary. To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+</p>
+<p>The precise terms and conditions for copying, distribution and
+modification follow.
+</p>
+<a name="TERMS-AND-CONDITIONS"></a>
+<h3 class="heading">TERMS AND CONDITIONS</h3>
+
+<ol>
+<li> Definitions.
+
+<p>&ldquo;This License&rdquo; refers to version 3 of the GNU General Public License.
+</p>
+<p>&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+</p>
+<p>&ldquo;The Program&rdquo; refers to any copyrightable work licensed under this
+License. Each licensee is addressed as &ldquo;you&rdquo;. &ldquo;Licensees&rdquo; and
+&ldquo;recipients&rdquo; may be individuals or organizations.
+</p>
+<p>To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy. The resulting work is called a &ldquo;modified version&rdquo; of
+the earlier work or a work &ldquo;based on&rdquo; the earlier work.
+</p>
+<p>A &ldquo;covered work&rdquo; means either the unmodified Program or a work based
+on the Program.
+</p>
+<p>To &ldquo;propagate&rdquo; a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+</p>
+<p>To &ldquo;convey&rdquo; a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+</p>
+<p>An interactive user interface displays &ldquo;Appropriate Legal Notices&rdquo; to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+</p>
+</li><li> Source Code.
+
+<p>The &ldquo;source code&rdquo; for a work means the preferred form of the work for
+making modifications to it. &ldquo;Object code&rdquo; means any non-source form
+of a work.
+</p>
+<p>A &ldquo;Standard Interface&rdquo; means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+</p>
+<p>The &ldquo;System Libraries&rdquo; of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+&ldquo;Major Component&rdquo;, in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+</p>
+<p>The &ldquo;Corresponding Source&rdquo; for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work&rsquo;s
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+</p>
+<p>The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+</p>
+<p>The Corresponding Source for a work in source code form is that same
+work.
+</p>
+</li><li> Basic Permissions.
+
+<p>All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+</p>
+<p>You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright. Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+</p>
+<p>Conveying under any other circumstances is permitted solely under the
+conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+</p>
+</li><li> Protecting Users&rsquo; Legal Rights From Anti-Circumvention Law.
+
+<p>No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+</p>
+<p>When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work&rsquo;s users, your or third parties&rsquo; legal rights to forbid
+circumvention of technological measures.
+</p>
+</li><li> Conveying Verbatim Copies.
+
+<p>You may convey verbatim copies of the Program&rsquo;s source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+</p>
+<p>You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+</p>
+</li><li> Conveying Modified Source Versions.
+
+<p>You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+</p>
+<ol>
+<li> The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+</li><li> The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7. This
+requirement modifies the requirement in section 4 to &ldquo;keep intact all
+notices&rdquo;.
+
+</li><li> You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy. This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged. This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+</li><li> If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+</li></ol>
+
+<p>A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+&ldquo;aggregate&rdquo; if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation&rsquo;s users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+</p>
+</li><li> Conveying Non-Source Forms.
+
+<p>You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+</p>
+<ol>
+<li> Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+</li><li> Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+</li><li> Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source. This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+</li><li> Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge. You need not require recipients to copy the
+Corresponding Source along with the object code. If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+</li><li> Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+</li></ol>
+
+<p>A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+</p>
+<p>A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling. In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage. For a particular product received by a particular user,
+&ldquo;normally used&rdquo; refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product. A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+</p>
+<p>&ldquo;Installation Information&rdquo; for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source. The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+</p>
+<p>If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+</p>
+<p>The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed. Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+</p>
+<p>Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+</p>
+</li><li> Additional Terms.
+
+<p>&ldquo;Additional permissions&rdquo; are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+</p>
+<p>When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+</p>
+<p>Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+</p>
+<ol>
+<li> Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+</li><li> Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+</li><li> Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+</li><li> Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+</li><li> Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+</li><li> Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+</li></ol>
+
+<p>All other non-permissive additional terms are considered &ldquo;further
+restrictions&rdquo; within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+</p>
+<p>If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+</p>
+<p>Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+</p>
+</li><li> Termination.
+
+<p>You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+</p>
+</li><li> Acceptance Not Required for Having Copies.
+
+<p>You are not required to accept this License in order to receive or run
+a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+</p>
+</li><li> Automatic Licensing of Downstream Recipients.
+
+<p>Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+</p>
+<p>An &ldquo;entity transaction&rdquo; is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party&rsquo;s predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+</p>
+<p>You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+</p>
+</li><li> Patents.
+
+<p>A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor&rsquo;s &ldquo;contributor version&rdquo;.
+</p>
+<p>A contributor&rsquo;s &ldquo;essential patent claims&rdquo; are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, &ldquo;control&rdquo; includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+</p>
+<p>Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor&rsquo;s essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+</p>
+<p>In the following three paragraphs, a &ldquo;patent license&rdquo; is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To &ldquo;grant&rdquo; such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+</p>
+<p>If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. &ldquo;Knowingly relying&rdquo; means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient&rsquo;s use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+</p>
+<p>If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+</p>
+<p>A patent license is &ldquo;discriminatory&rdquo; if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License. You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+</p>
+<p>Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+</p>
+</li><li> No Surrender of Others&rsquo; Freedom.
+
+<p>If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all. For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+</p>
+</li><li> Use with the GNU Affero General Public License.
+
+<p>Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+</p>
+</li><li> Revised Versions of this License.
+
+<p>The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+</p>
+<p>Each version is given a distinguishing version number. If the Program
+specifies that a certain numbered version of the GNU General Public
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation. If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+</p>
+<p>If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy&rsquo;s public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+</p>
+<p>Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+</p>
+</li><li> Disclaimer of Warranty.
+
+<p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+</p>
+</li><li> Limitation of Liability.
+
+<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+</p>
+</li><li> Interpretation of Sections 15 and 16.
+
+<p>If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+</p>
+</li></ol>
+
+<a name="END-OF-TERMS-AND-CONDITIONS"></a>
+<h3 class="heading">END OF TERMS AND CONDITIONS</h3>
+
+<a name="How-to-Apply-These-Terms-to-Your-New-Programs"></a>
+<h3 class="heading">How to Apply These Terms to Your New Programs</h3>
+
+<p>If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+</p>
+<p>To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the &ldquo;copyright&rdquo; line and a pointer to where the full notice is found.
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>one line to give the program's name and a brief idea of what it does.</var>
+Copyright (C) <var>year</var> <var>name of author</var>
+
+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 <a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.
+</pre></div>
+
+<p>Also add information on how to contact you by electronic and paper mail.
+</p>
+<p>If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>program</var> Copyright (C) <var>year</var> <var>name of author</var>
+This program comes with ABSOLUTELY NO WARRANTY; for details type &lsquo;<samp>show w</samp>&rsquo;.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type &lsquo;<samp>show c</samp>&rsquo; for details.
+</pre></div>
+
+<p>The hypothetical commands &lsquo;<samp>show w</samp>&rsquo; and &lsquo;<samp>show c</samp>&rsquo; should show
+the appropriate parts of the General Public License. Of course, your
+program&rsquo;s commands might be different; for a GUI interface, you would
+use an &ldquo;about box&rdquo;.
+</p>
+<p>You should also get your employer (if you work as a programmer) or school,
+if any, to sign a &ldquo;copyright disclaimer&rdquo; for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.
+</p>
+<p>The GNU General Public License does not permit incorporating your
+program into proprietary programs. If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library. If this is what you want to do, use
+the GNU Lesser General Public License instead of this License. But
+first, please read <a href="https://www.gnu.org/licenses/why-not-lgpl.html">https://www.gnu.org/licenses/why-not-lgpl.html</a>.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="GNU-Project.html#GNU-Project" accesskey="p" rel="previous">GNU Project</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Costs.html b/share/doc/gccint/Costs.html
new file mode 100644
index 0000000..fc49111
--- /dev/null
+++ b/share/doc/gccint/Costs.html
@@ -0,0 +1,584 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Costs</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Costs">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Costs">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Scheduling.html#Scheduling" rel="next" title="Scheduling">
+<link href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes" rel="previous" title="MODE_CC Condition Codes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Costs"></a>
+<div class="header">
+<p>
+Next: <a href="Scheduling.html#Scheduling" accesskey="n" rel="next">Scheduling</a>, Previous: <a href="Condition-Code.html#Condition-Code" accesskey="p" rel="previous">Condition Code</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Describing-Relative-Costs-of-Operations"></a>
+<h3 class="section">18.16 Describing Relative Costs of Operations</h3>
+<a name="index-costs-of-instructions"></a>
+<a name="index-relative-costs"></a>
+<a name="index-speed-of-instructions"></a>
+
+<p>These macros let you describe the relative speed of various operations
+on the target machine.
+</p>
+<dl>
+<dt><a name="index-REGISTER_005fMOVE_005fCOST"></a>Macro: <strong>REGISTER_MOVE_COST</strong> <em>(<var>mode</var>, <var>from</var>, <var>to</var>)</em></dt>
+<dd><p>A C expression for the cost of moving data of mode <var>mode</var> from a
+register in class <var>from</var> to one in class <var>to</var>. The classes are
+expressed using the enumeration values such as <code>GENERAL_REGS</code>. A
+value of 2 is the default; other values are interpreted relative to
+that.
+</p>
+<p>It is not required that the cost always equal 2 when <var>from</var> is the
+same as <var>to</var>; on some machines it is expensive to move between
+registers if they are not general registers.
+</p>
+<p>If reload sees an insn consisting of a single <code>set</code> between two
+hard registers, and if <code>REGISTER_MOVE_COST</code> applied to their
+classes returns a value of 2, reload does not check to ensure that the
+constraints of the insn are met. Setting a cost of other than 2 will
+allow reload to verify that the constraints are met. You should do this
+if the &lsquo;<samp>mov<var>m</var></samp>&rsquo; pattern&rsquo;s constraints do not allow such copying.
+</p>
+<p>These macros are obsolete, new ports should use the target hook
+<code>TARGET_REGISTER_MOVE_COST</code> instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fREGISTER_005fMOVE_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_REGISTER_MOVE_COST</strong> <em>(machine_mode <var>mode</var>, reg_class_t <var>from</var>, reg_class_t <var>to</var>)</em></dt>
+<dd><p>This target hook should return the cost of moving data of mode <var>mode</var>
+from a register in class <var>from</var> to one in class <var>to</var>. The classes
+are expressed using the enumeration values such as <code>GENERAL_REGS</code>.
+A value of 2 is the default; other values are interpreted relative to
+that.
+</p>
+<p>It is not required that the cost always equal 2 when <var>from</var> is the
+same as <var>to</var>; on some machines it is expensive to move between
+registers if they are not general registers.
+</p>
+<p>If reload sees an insn consisting of a single <code>set</code> between two
+hard registers, and if <code>TARGET_REGISTER_MOVE_COST</code> applied to their
+classes returns a value of 2, reload does not check to ensure that the
+constraints of the insn are met. Setting a cost of other than 2 will
+allow reload to verify that the constraints are met. You should do this
+if the &lsquo;<samp>mov<var>m</var></samp>&rsquo; pattern&rsquo;s constraints do not allow such copying.
+</p>
+<p>The default version of this function returns 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MEMORY_005fMOVE_005fCOST"></a>Macro: <strong>MEMORY_MOVE_COST</strong> <em>(<var>mode</var>, <var>class</var>, <var>in</var>)</em></dt>
+<dd><p>A C expression for the cost of moving data of mode <var>mode</var> between a
+register of class <var>class</var> and memory; <var>in</var> is zero if the value
+is to be written to memory, nonzero if it is to be read in. This cost
+is relative to those in <code>REGISTER_MOVE_COST</code>. If moving between
+registers and memory is more expensive than between two registers, you
+should define this macro to express the relative cost.
+</p>
+<p>If you do not define this macro, GCC uses a default cost of 4 plus
+the cost of copying via a secondary reload register, if one is
+needed. If your machine requires a secondary reload register to copy
+between memory and a register of <var>class</var> but the reload mechanism is
+more complex than copying via an intermediate, define this macro to
+reflect the actual cost of the move.
+</p>
+<p>GCC defines the function <code>memory_move_secondary_cost</code> if
+secondary reloads are needed. It computes the costs due to copying via
+a secondary register. If your machine copies from memory using a
+secondary register in the conventional way but the default base value of
+4 is not correct for your machine, define this macro to add some other
+value to the result of that function. The arguments to that function
+are the same as to this macro.
+</p>
+<p>These macros are obsolete, new ports should use the target hook
+<code>TARGET_MEMORY_MOVE_COST</code> instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMORY_005fMOVE_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_MEMORY_MOVE_COST</strong> <em>(machine_mode <var>mode</var>, reg_class_t <var>rclass</var>, bool <var>in</var>)</em></dt>
+<dd><p>This target hook should return the cost of moving data of mode <var>mode</var>
+between a register of class <var>rclass</var> and memory; <var>in</var> is <code>false</code>
+if the value is to be written to memory, <code>true</code> if it is to be read in.
+This cost is relative to those in <code>TARGET_REGISTER_MOVE_COST</code>.
+If moving between registers and memory is more expensive than between two
+registers, you should add this target hook to express the relative cost.
+</p>
+<p>If you do not add this target hook, GCC uses a default cost of 4 plus
+the cost of copying via a secondary reload register, if one is
+needed. If your machine requires a secondary reload register to copy
+between memory and a register of <var>rclass</var> but the reload mechanism is
+more complex than copying via an intermediate, use this target hook to
+reflect the actual cost of the move.
+</p>
+<p>GCC defines the function <code>memory_move_secondary_cost</code> if
+secondary reloads are needed. It computes the costs due to copying via
+a secondary register. If your machine copies from memory using a
+secondary register in the conventional way but the default base value of
+4 is not correct for your machine, use this target hook to add some other
+value to the result of that function. The arguments to that function
+are the same as to this target hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BRANCH_005fCOST"></a>Macro: <strong>BRANCH_COST</strong> <em>(<var>speed_p</var>, <var>predictable_p</var>)</em></dt>
+<dd><p>A C expression for the cost of a branch instruction. A value of 1 is
+the default; other values are interpreted relative to that. Parameter
+<var>speed_p</var> is true when the branch in question should be optimized
+for speed. When it is false, <code>BRANCH_COST</code> should return a value
+optimal for code size rather than performance. <var>predictable_p</var> is
+true for well-predicted branches. On many architectures the
+<code>BRANCH_COST</code> can be reduced then.
+</p></dd></dl>
+
+<p>Here are additional macros which do not specify precise relative costs,
+but only that certain actions are more expensive than GCC would
+ordinarily expect.
+</p>
+<dl>
+<dt><a name="index-SLOW_005fBYTE_005fACCESS"></a>Macro: <strong>SLOW_BYTE_ACCESS</strong></dt>
+<dd><p>Define this macro as a C expression which is nonzero if accessing less
+than a word of memory (i.e. a <code>char</code> or a <code>short</code>) is no
+faster than accessing a word of memory, i.e., if such access
+require more than one instruction or if there is no difference in cost
+between byte and (aligned) word loads.
+</p>
+<p>When this macro is not defined, the compiler will access a field by
+finding the smallest containing object; when it is defined, a fullword
+load will be used if alignment permits. Unless bytes accesses are
+faster than word accesses, using word accesses is preferable since it
+may eliminate subsequent memory access if subsequent accesses occur to
+other fields in the same word of the structure, but to different bytes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSLOW_005fUNALIGNED_005fACCESS"></a>Target Hook: <em>bool</em> <strong>TARGET_SLOW_UNALIGNED_ACCESS</strong> <em>(machine_mode <var>mode</var>, unsigned int <var>align</var>)</em></dt>
+<dd><p>This hook returns true if memory accesses described by the
+<var>mode</var> and <var>alignment</var> parameters have a cost many times greater
+than aligned accesses, for example if they are emulated in a trap handler.
+This hook is invoked only for unaligned accesses, i.e. when
+<code><var>alignment</var> &lt; GET_MODE_ALIGNMENT (<var>mode</var>)</code>.
+</p>
+<p>When this hook returns true, the compiler will act as if
+<code>STRICT_ALIGNMENT</code> were true when generating code for block
+moves. This can cause significantly more instructions to be produced.
+Therefore, do not make this hook return true if unaligned accesses only
+add a cycle or two to the time for a memory access.
+</p>
+<p>The hook must return true whenever <code>STRICT_ALIGNMENT</code> is true.
+The default implementation returns <code>STRICT_ALIGNMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MOVE_005fRATIO"></a>Macro: <strong>MOVE_RATIO</strong> <em>(<var>speed</var>)</em></dt>
+<dd><p>The threshold of number of scalar memory-to-memory move insns, <em>below</em>
+which a sequence of insns should be generated instead of a
+string move insn or a library call. Increasing the value will always
+make code faster, but eventually incurs high cost in increased code size.
+</p>
+<p>Note that on machines where the corresponding move insn is a
+<code>define_expand</code> that emits a sequence of insns, this macro counts
+the number of such sequences.
+</p>
+<p>The parameter <var>speed</var> is true if the code is currently being
+optimized for speed rather than size.
+</p>
+<p>If you don&rsquo;t define this, a reasonable default is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSE_005fBY_005fPIECES_005fINFRASTRUCTURE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_USE_BY_PIECES_INFRASTRUCTURE_P</strong> <em>(unsigned HOST_WIDE_INT <var>size</var>, unsigned int <var>alignment</var>, enum by_pieces_operation <var>op</var>, bool <var>speed_p</var>)</em></dt>
+<dd><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</code>. The <code>by_pieces</code> infrastructure
+implements such memory operations as a sequence of load, store or move
+insns. Alternate strategies are to expand the
+<code>cpymem</code> or <code>setmem</code> optabs, to emit a library call, or to emit
+unit-by-unit, loop-based operations.
+</p>
+<p>This target hook should return true if, for a memory operation with a
+given <var>size</var> and <var>alignment</var>, using the <code>by_pieces</code>
+infrastructure is expected to result in better code generation.
+Both <var>size</var> and <var>alignment</var> are measured in terms of storage
+units.
+</p>
+<p>The parameter <var>op</var> is one of: <code>CLEAR_BY_PIECES</code>,
+<code>MOVE_BY_PIECES</code>, <code>SET_BY_PIECES</code>, <code>STORE_BY_PIECES</code> or
+<code>COMPARE_BY_PIECES</code>. These describe the type of memory operation
+under consideration.
+</p>
+<p>The parameter <var>speed_p</var> is true if the code is currently being
+optimized for speed rather than size.
+</p>
+<p>Returning true for higher values of <var>size</var> can improve code generation
+for speed if the target does not provide an implementation of the
+<code>cpymem</code> or <code>setmem</code> standard names, if the <code>cpymem</code> or
+<code>setmem</code> 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.
+</p>
+<p>Returning true for higher values of <code>size</code> 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.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOVERLAP_005fOP_005fBY_005fPIECES_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_OVERLAP_OP_BY_PIECES_P</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return true if when the <code>by_pieces</code>
+infrastructure is used, an offset adjusted unaligned memory operation
+in the smallest integer mode for the last piece operation of a memory
+region can be generated to avoid doing more than one smaller operations.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPARE_005fBY_005fPIECES_005fBRANCH_005fRATIO"></a>Target Hook: <em>int</em> <strong>TARGET_COMPARE_BY_PIECES_BRANCH_RATIO</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>When expanding a block comparison in MODE, gcc can try to reduce the
+number of branches at the expense of more memory operations. This hook
+allows the target to override the default choice. It should return the
+factor by which branches should be reduced over the plain expansion with
+one comparison per <var>mode</var>-sized piece. A port can also prevent a
+particular mode from being used for block comparisons by returning a
+negative number from this hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MOVE_005fMAX_005fPIECES"></a>Macro: <strong>MOVE_MAX_PIECES</strong></dt>
+<dd><p>A C expression used by <code>move_by_pieces</code> to determine the largest unit
+a load or store used to copy memory is. Defaults to <code>MOVE_MAX</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STORE_005fMAX_005fPIECES"></a>Macro: <strong>STORE_MAX_PIECES</strong></dt>
+<dd><p>A C expression used by <code>store_by_pieces</code> to determine the largest unit
+a store used to memory is. Defaults to <code>MOVE_MAX_PIECES</code>, or two times
+the size of <code>HOST_WIDE_INT</code>, whichever is smaller.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-COMPARE_005fMAX_005fPIECES"></a>Macro: <strong>COMPARE_MAX_PIECES</strong></dt>
+<dd><p>A C expression used by <code>compare_by_pieces</code> to determine the largest unit
+a load or store used to compare memory is. Defaults to
+<code>MOVE_MAX_PIECES</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CLEAR_005fRATIO"></a>Macro: <strong>CLEAR_RATIO</strong> <em>(<var>speed</var>)</em></dt>
+<dd><p>The threshold of number of scalar move insns, <em>below</em> which a sequence
+of insns should be generated to clear memory instead of a string clear insn
+or a library call. Increasing the value will always make code faster, but
+eventually incurs high cost in increased code size.
+</p>
+<p>The parameter <var>speed</var> is true if the code is currently being
+optimized for speed rather than size.
+</p>
+<p>If you don&rsquo;t define this, a reasonable default is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SET_005fRATIO"></a>Macro: <strong>SET_RATIO</strong> <em>(<var>speed</var>)</em></dt>
+<dd><p>The threshold of number of scalar move insns, <em>below</em> which a sequence
+of insns should be generated to set memory to a constant value, instead of
+a block set insn or a library call.
+Increasing the value will always make code faster, but
+eventually incurs high cost in increased code size.
+</p>
+<p>The parameter <var>speed</var> is true if the code is currently being
+optimized for speed rather than size.
+</p>
+<p>If you don&rsquo;t define this, it defaults to the value of <code>MOVE_RATIO</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fLOAD_005fPOST_005fINCREMENT"></a>Macro: <strong>USE_LOAD_POST_INCREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>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
+<code>HAVE_POST_INCREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fLOAD_005fPOST_005fDECREMENT"></a>Macro: <strong>USE_LOAD_POST_DECREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression used to determine whether a load postdecrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_POST_DECREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fLOAD_005fPRE_005fINCREMENT"></a>Macro: <strong>USE_LOAD_PRE_INCREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression used to determine whether a load preincrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_PRE_INCREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fLOAD_005fPRE_005fDECREMENT"></a>Macro: <strong>USE_LOAD_PRE_DECREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression used to determine whether a load predecrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_PRE_DECREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fSTORE_005fPOST_005fINCREMENT"></a>Macro: <strong>USE_STORE_POST_INCREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression used to determine whether a store postincrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_POST_INCREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fSTORE_005fPOST_005fDECREMENT"></a>Macro: <strong>USE_STORE_POST_DECREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression used to determine whether a store postdecrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_POST_DECREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fSTORE_005fPRE_005fINCREMENT"></a>Macro: <strong>USE_STORE_PRE_INCREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>This macro is used to determine whether a store preincrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_PRE_INCREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fSTORE_005fPRE_005fDECREMENT"></a>Macro: <strong>USE_STORE_PRE_DECREMENT</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>This macro is used to determine whether a store predecrement is a good
+thing to use for a given mode. Defaults to the value of
+<code>HAVE_PRE_DECREMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NO_005fFUNCTION_005fCSE"></a>Macro: <strong>NO_FUNCTION_CSE</strong></dt>
+<dd><p>Define this macro to be true if it is as good or better to call a constant
+function address than to call an address kept in a register.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOGICAL_005fOP_005fNON_005fSHORT_005fCIRCUIT"></a>Macro: <strong>LOGICAL_OP_NON_SHORT_CIRCUIT</strong></dt>
+<dd><p>Define this macro if a non-short-circuit operation produced by
+&lsquo;<samp>fold_range_test ()</samp>&rsquo; is optimal. This macro defaults to true if
+<code>BRANCH_COST</code> is greater than or equal to the value 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTAB_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_OPTAB_SUPPORTED_P</strong> <em>(int <var>op</var>, machine_mode <var>mode1</var>, machine_mode <var>mode2</var>, optimization_type <var>opt_type</var>)</em></dt>
+<dd><p>Return true if the optimizers should use optab <var>op</var> with
+modes <var>mode1</var> and <var>mode2</var> for optimization type <var>opt_type</var>.
+The optab is known to have an associated <samp>.md</samp> instruction
+whose C condition is true. <var>mode2</var> is only meaningful for conversion
+optabs; for direct optabs it is a copy of <var>mode1</var>.
+</p>
+<p>For example, when called with <var>op</var> equal to <code>rint_optab</code> and
+<var>mode1</var> equal to <code>DFmode</code>, the hook should say whether the
+optimizers should use optab <code>rintdf2</code>.
+</p>
+<p>The default hook returns true for all inputs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRTX_005fCOSTS"></a>Target Hook: <em>bool</em> <strong>TARGET_RTX_COSTS</strong> <em>(rtx <var>x</var>, machine_mode <var>mode</var>, int <var>outer_code</var>, int <var>opno</var>, int *<var>total</var>, bool <var>speed</var>)</em></dt>
+<dd><p>This target hook describes the relative costs of RTL expressions.
+</p>
+<p>The cost may depend on the precise form of the expression, which is
+available for examination in <var>x</var>, and the fact that <var>x</var> appears
+as operand <var>opno</var> of an expression with rtx code <var>outer_code</var>.
+That is, the hook can assume that there is some rtx <var>y</var> such
+that &lsquo;<samp>GET_CODE (<var>y</var>) == <var>outer_code</var></samp>&rsquo; and such that
+either (a) &lsquo;<samp>XEXP (<var>y</var>, <var>opno</var>) == <var>x</var></samp>&rsquo; or
+(b) &lsquo;<samp>XVEC (<var>y</var>, <var>opno</var>)</samp>&rsquo; contains <var>x</var>.
+</p>
+<p><var>mode</var> is <var>x</var>&rsquo;s machine mode, or for cases like <code>const_int</code> that
+do not have a mode, the mode in which <var>x</var> is used.
+</p>
+<p>In implementing this hook, you can use the construct
+<code>COSTS_N_INSNS (<var>n</var>)</code> to specify a cost equal to <var>n</var> fast
+instructions.
+</p>
+<p>On entry to the hook, <code>*<var>total</var></code> contains a default estimate
+for the cost of the expression. The hook should modify this value as
+necessary. Traditionally, the default costs are <code>COSTS_N_INSNS (5)</code>
+for multiplications, <code>COSTS_N_INSNS (7)</code> for division and modulus
+operations, and <code>COSTS_N_INSNS (1)</code> for all other operations.
+</p>
+<p>When optimizing for code size, i.e. when <code>speed</code> is
+false, this target hook should be used to estimate the relative
+size cost of an expression, again relative to <code>COSTS_N_INSNS</code>.
+</p>
+<p>The hook returns true when all subexpressions of <var>x</var> have been
+processed, and false when <code>rtx_cost</code> should recurse.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDRESS_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_ADDRESS_COST</strong> <em>(rtx <var>address</var>, machine_mode <var>mode</var>, addr_space_t <var>as</var>, bool <var>speed</var>)</em></dt>
+<dd><p>This hook computes the cost of an addressing mode that contains
+<var>address</var>. If not defined, the cost is computed from
+the <var>address</var> expression and the <code>TARGET_RTX_COST</code> hook.
+</p>
+<p>For most CISC machines, the default cost is a good approximation of the
+true cost of the addressing mode. However, on RISC machines, all
+instructions normally have the same length and execution time. Hence
+all addresses will have equal costs.
+</p>
+<p>In cases where more than one form of an address is known, the form with
+the lowest cost will be used. If multiple forms have the same, lowest,
+cost, the one that is the most complex will be used.
+</p>
+<p>For example, suppose an address that is equal to the sum of a register
+and a constant is used twice in the same basic block. When this macro
+is not defined, the address will be computed in a register and memory
+references will be indirect through that register. On machines where
+the cost of the addressing mode containing the sum is no higher than
+that of a simple indirect reference, this will produce an additional
+instruction and possibly require an additional register. Proper
+specification of this macro eliminates this overhead for such machines.
+</p>
+<p>This hook is never called with an invalid address.
+</p>
+<p>On machines where an address involving more than one register is as
+cheap as an address computation involving only one register, defining
+<code>TARGET_ADDRESS_COST</code> to reflect this can cause two registers to
+be live over a region of code where only one would have been if
+<code>TARGET_ADDRESS_COST</code> were not defined in that manner. This effect
+should be considered in the definition of this macro. Equivalent costs
+should probably only be given to addresses with different numbers of
+registers on machines with lots of registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINSN_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_INSN_COST</strong> <em>(rtx_insn *<var>insn</var>, bool <var>speed</var>)</em></dt>
+<dd><p>This target hook describes the relative costs of RTL instructions.
+</p>
+<p>In implementing this hook, you can use the construct
+<code>COSTS_N_INSNS (<var>n</var>)</code> to specify a cost equal to <var>n</var> fast
+instructions.
+</p>
+<p>When optimizing for code size, i.e. when <code>speed</code> is
+false, this target hook should be used to estimate the relative
+size cost of an expression, again relative to <code>COSTS_N_INSNS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMAX_005fNOCE_005fIFCVT_005fSEQ_005fCOST"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_MAX_NOCE_IFCVT_SEQ_COST</strong> <em>(edge <var>e</var>)</em></dt>
+<dd><p>This hook returns a value in the same units as <code>TARGET_RTX_COSTS</code>,
+giving the maximum acceptable cost for a sequence generated by the RTL
+if-conversion pass when conditional execution is not available.
+The RTL if-conversion pass attempts to convert conditional operations
+that would require a branch to a series of unconditional operations and
+<code>mov<var>mode</var>cc</code> insns. This hook returns the maximum cost of the
+unconditional instructions and the <code>mov<var>mode</var>cc</code> insns.
+RTL if-conversion is cancelled if the cost of the converted sequence
+is greater than the value returned by this hook.
+</p>
+<p><code>e</code> is the edge between the basic block containing the conditional
+branch to the basic block which would be executed if the condition
+were true.
+</p>
+<p>The default implementation of this hook uses the
+<code>max-rtl-if-conversion-[un]predictable</code> parameters if they are set,
+and uses a multiple of <code>BRANCH_COST</code> otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNOCE_005fCONVERSION_005fPROFITABLE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_NOCE_CONVERSION_PROFITABLE_P</strong> <em>(rtx_insn *<var>seq</var>, struct noce_if_info *<var>if_info</var>)</em></dt>
+<dd><p>This hook returns true if the instruction sequence <code>seq</code> is a good
+candidate as a replacement for the if-convertible sequence described in
+<code>if_info</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNEW_005fADDRESS_005fPROFITABLE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_NEW_ADDRESS_PROFITABLE_P</strong> <em>(rtx <var>memref</var>, rtx_insn * <var>insn</var>, rtx <var>new_addr</var>)</em></dt>
+<dd><p>Return <code>true</code> if it is profitable to replace the address in
+<var>memref</var> with <var>new_addr</var>. This allows targets to prevent the
+scheduler from undoing address optimizations. The instruction containing the
+memref is <var>insn</var>. The default implementation returns <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNO_005fSPECULATION_005fIN_005fDELAY_005fSLOTS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P</strong> <em>(void)</em></dt>
+<dd><p>This predicate controls the use of the eager delay slot filler to disallow
+speculatively executed instructions being placed in delay slots. Targets
+such as certain MIPS architectures possess both branches with and without
+delay slots. As the eager delay slot filler can decrease performance,
+disabling it is beneficial when ordinary branches are available. Use of
+delay slot branches filled using the basic filler is often still desirable
+as the delay slot can hide a pipeline bubble.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fESTIMATED_005fPOLY_005fVALUE"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_ESTIMATED_POLY_VALUE</strong> <em>(poly_int64 <var>val</var>, poly_value_estimate_kind <var>kind</var>)</em></dt>
+<dd><p>Return an estimate of the runtime value of <var>val</var>, for use in
+things like cost calculations or profiling frequencies. <var>kind</var> is used
+to ask for the minimum, maximum, and likely estimates of the value through
+the <code>POLY_VALUE_MIN</code>, <code>POLY_VALUE_MAX</code> and
+<code>POLY_VALUE_LIKELY</code> values. The default
+implementation returns the lowest possible value of <var>val</var>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Scheduling.html#Scheduling" accesskey="n" rel="next">Scheduling</a>, Previous: <a href="Condition-Code.html#Condition-Code" accesskey="p" rel="previous">Condition Code</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Current-structure-hierarchy.html b/share/doc/gccint/Current-structure-hierarchy.html
new file mode 100644
index 0000000..d50ea20
--- /dev/null
+++ b/share/doc/gccint/Current-structure-hierarchy.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Current structure hierarchy</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Current structure hierarchy">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Current structure hierarchy">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Internal-structure.html#Internal-structure" rel="up" title="Internal structure">
+<link href="Adding-new-DECL-node-types.html#Adding-new-DECL-node-types" rel="next" title="Adding new DECL node types">
+<link href="Internal-structure.html#Internal-structure" rel="previous" title="Internal structure">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Current-structure-hierarchy"></a>
+<div class="header">
+<p>
+Next: <a href="Adding-new-DECL-node-types.html#Adding-new-DECL-node-types" accesskey="n" rel="next">Adding new DECL node types</a>, Up: <a href="Internal-structure.html#Internal-structure" accesskey="u" rel="up">Internal structure</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Current-structure-hierarchy-1"></a>
+<h4 class="subsubsection">11.4.2.1 Current structure hierarchy</h4>
+
+<dl compact="compact">
+<dt><code>struct tree_decl_minimal</code></dt>
+<dd><p>This is the minimal structure to inherit from in order for common
+<code>DECL</code> macros to work. The fields it contains are a unique ID,
+source location, context, and name.
+</p>
+</dd>
+<dt><code>struct tree_decl_common</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_minimal</code>. It
+contains fields that most <code>DECL</code> nodes need, such as a field to
+store alignment, machine mode, size, and attributes.
+</p>
+</dd>
+<dt><code>struct tree_field_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_common</code>. It is
+used to represent <code>FIELD_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_label_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_common</code>. It is
+used to represent <code>LABEL_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_translation_unit_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_common</code>. It is
+used to represent <code>TRANSLATION_UNIT_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_decl_with_rtl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_common</code>. It
+contains a field to store the low-level RTL associated with a
+<code>DECL</code> node.
+</p>
+</dd>
+<dt><code>struct tree_result_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_rtl</code>. It is
+used to represent <code>RESULT_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_const_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_rtl</code>. It is
+used to represent <code>CONST_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_parm_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_rtl</code>. It is
+used to represent <code>PARM_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_decl_with_vis</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_rtl</code>. It
+contains fields necessary to store visibility information, as well as
+a section name and assembler name.
+</p>
+</dd>
+<dt><code>struct tree_var_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_vis</code>. It is
+used to represent <code>VAR_DECL</code>.
+</p>
+</dd>
+<dt><code>struct tree_function_decl</code></dt>
+<dd><p>This structure inherits from <code>struct tree_decl_with_vis</code>. It is
+used to represent <code>FUNCTION_DECL</code>.
+</p>
+</dd>
+</dl>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/D-Language-and-ABI.html b/share/doc/gccint/D-Language-and-ABI.html
new file mode 100644
index 0000000..764d8ef
--- /dev/null
+++ b/share/doc/gccint/D-Language-and-ABI.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: D Language and ABI</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: D Language and ABI">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: D Language and ABI">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Named-Address-Spaces.html#Named-Address-Spaces" rel="next" title="Named Address Spaces">
+<link href="C_002b_002b-ABI.html#C_002b_002b-ABI" rel="previous" title="C++ ABI">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="D-Language-and-ABI"></a>
+<div class="header">
+<p>
+Next: <a href="Named-Address-Spaces.html#Named-Address-Spaces" accesskey="n" rel="next">Named Address Spaces</a>, Previous: <a href="C_002b_002b-ABI.html#C_002b_002b-ABI" accesskey="p" rel="previous">C++ ABI</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="D-ABI-parameters"></a>
+<h3 class="section">18.29 D ABI parameters</h3>
+<a name="index-parameters_002c-d-abi"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fCPU_005fVERSIONS"></a>D Target Hook: <em>void</em> <strong>TARGET_D_CPU_VERSIONS</strong> <em>(void)</em></dt>
+<dd><p>Declare all environmental version identifiers relating to the target CPU
+using the function <code>builtin_version</code>, which takes a string representing
+the name of the version. Version identifiers predefined by this hook apply
+to all modules that are being compiled and imported.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fOS_005fVERSIONS"></a>D Target Hook: <em>void</em> <strong>TARGET_D_OS_VERSIONS</strong> <em>(void)</em></dt>
+<dd><p>Similarly to <code>TARGET_D_CPU_VERSIONS</code>, but is used for versions
+relating to the target operating system.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fREGISTER_005fCPU_005fTARGET_005fINFO"></a>D Target Hook: <em>void</em> <strong>TARGET_D_REGISTER_CPU_TARGET_INFO</strong> <em>(void)</em></dt>
+<dd><p>Register all target information keys relating to the target CPU using the
+function <code>d_add_target_info_handlers</code>, which takes a
+&lsquo;<samp>struct d_target_info_spec</samp>&rsquo; (defined in <samp>d/d-target.h</samp>). The keys
+added by this hook are made available at compile time by the
+<code>__traits(getTargetInfo)</code> extension, the result is an expression
+describing the requested target information.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fREGISTER_005fOS_005fTARGET_005fINFO"></a>D Target Hook: <em>void</em> <strong>TARGET_D_REGISTER_OS_TARGET_INFO</strong> <em>(void)</em></dt>
+<dd><p>Same as <code>TARGET_D_CPU_TARGET_INFO</code>, but is used for keys relating to
+the target operating system.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fMINFO_005fSECTION"></a>D Target Hook: <em>const char *</em> <strong>TARGET_D_MINFO_SECTION</strong></dt>
+<dd><p>Contains the name of the section in which module info references should be
+placed. By default, the compiler puts all module info symbols in the
+<code>&quot;minfo&quot;</code> section. Define this macro to override the string if a
+different section name should be used. This section is expected to be
+bracketed by two symbols <code>TARGET_D_MINFO_SECTION_START</code> and
+<code>TARGET_D_MINFO_SECTION_END</code> to indicate the start and end address of
+the section, so that the runtime library can collect all modules for each
+loaded shared library and executable. Setting the value to <code>NULL</code>
+disables the use of sections for storing module info altogether.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fMINFO_005fSECTION_005fSTART"></a>D Target Hook: <em>const char *</em> <strong>TARGET_D_MINFO_SECTION_START</strong></dt>
+<dd><p>If <code>TARGET_D_MINFO_SECTION</code> is defined, then this must also be defined
+as the name of the symbol indicating the start address of the module info
+section
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fMINFO_005fSECTION_005fEND"></a>D Target Hook: <em>const char *</em> <strong>TARGET_D_MINFO_SECTION_END</strong></dt>
+<dd><p>If <code>TARGET_D_MINFO_SECTION</code> is defined, then this must also be defined
+as the name of the symbol indicating the end address of the module info
+section
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fHAS_005fSTDCALL_005fCONVENTION"></a>D Target Hook: <em>bool</em> <strong>TARGET_D_HAS_STDCALL_CONVENTION</strong> <em>(unsigned int *<var>link_system</var>, unsigned int *<var>link_windows</var>)</em></dt>
+<dd><p>Returns <code>true</code> if the target supports the stdcall calling convention.
+The hook should also set <var>link_system</var> to <code>1</code> if the <code>stdcall</code>
+attribute should be applied to functions with <code>extern(System)</code> linkage,
+and <var>link_windows</var> to <code>1</code> to apply <code>stdcall</code> to functions with
+<code>extern(Windows)</code> linkage.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fD_005fTEMPLATES_005fALWAYS_005fCOMDAT"></a>D Target Hook: <em>bool</em> <strong>TARGET_D_TEMPLATES_ALWAYS_COMDAT</strong></dt>
+<dd><p>This flag is true if instantiated functions and variables are always COMDAT
+if they have external linkage. If this flag is false, then instantiated
+decls will be emitted as weak symbols. The default is <code>false</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Named-Address-Spaces.html#Named-Address-Spaces" accesskey="n" rel="next">Named Address Spaces</a>, Previous: <a href="C_002b_002b-ABI.html#C_002b_002b-ABI" accesskey="p" rel="previous">C++ ABI</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/DWARF.html b/share/doc/gccint/DWARF.html
new file mode 100644
index 0000000..47ccc66
--- /dev/null
+++ b/share/doc/gccint/DWARF.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: DWARF</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: DWARF">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: DWARF">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging-Info.html#Debugging-Info" rel="up" title="Debugging Info">
+<link href="VMS-Debug.html#VMS-Debug" rel="next" title="VMS Debug">
+<link href="All-Debuggers.html#All-Debuggers" rel="previous" title="All Debuggers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="DWARF"></a>
+<div class="header">
+<p>
+Next: <a href="VMS-Debug.html#VMS-Debug" accesskey="n" rel="next">VMS Debug</a>, Previous: <a href="All-Debuggers.html#All-Debuggers" accesskey="p" rel="previous">All Debuggers</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-for-DWARF-Output"></a>
+<h4 class="subsection">18.21.2 Macros for DWARF Output</h4>
+
+<p>Here are macros for DWARF output.
+</p>
+<dl>
+<dt><a name="index-DWARF2_005fDEBUGGING_005fINFO"></a>Macro: <strong>DWARF2_DEBUGGING_INFO</strong></dt>
+<dd><p>Define this macro if GCC should produce dwarf version 2 format
+debugging output in response to the <samp>-g</samp> option.
+</p>
+<p>To support optional call frame debugging information, you must also
+define <code>INCOMING_RETURN_ADDR_RTX</code> and either set
+<code>RTX_FRAME_RELATED_P</code> on the prologue insns if you use RTL for the
+prologue, or call <code>dwarf2out_def_cfa</code> and <code>dwarf2out_reg_save</code>
+as appropriate from <code>TARGET_ASM_FUNCTION_PROLOGUE</code> if you don&rsquo;t.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDWARF_005fCALLING_005fCONVENTION"></a>Target Hook: <em>int</em> <strong>TARGET_DWARF_CALLING_CONVENTION</strong> <em>(const_tree <var>function</var>)</em></dt>
+<dd><p>Define this to enable the dwarf attribute <code>DW_AT_calling_convention</code> to
+be emitted for each function. Instead of an integer return the enum
+value for the <code>DW_CC_</code> tag.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF2_005fFRAME_005fINFO"></a>Macro: <strong>DWARF2_FRAME_INFO</strong></dt>
+<dd><p>Define this macro to a nonzero value if GCC should always output
+Dwarf 2 frame information. If <code>TARGET_EXCEPT_UNWIND_INFO</code>
+(see <a href="Exception-Region-Output.html#Exception-Region-Output">Exception Region Output</a>) returns <code>UI_DWARF2</code>, and
+exceptions are enabled, GCC will output this information not matter
+how you define <code>DWARF2_FRAME_INFO</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDEBUG_005fUNWIND_005fINFO"></a>Target Hook: <em>enum unwind_info_type</em> <strong>TARGET_DEBUG_UNWIND_INFO</strong> <em>(void)</em></dt>
+<dd><p>This hook defines the mechanism that will be used for describing frame
+unwind information to the debugger. Normally the hook will return
+<code>UI_DWARF2</code> if DWARF 2 debug information is enabled, and
+return <code>UI_NONE</code> otherwise.
+</p>
+<p>A target may return <code>UI_DWARF2</code> even when DWARF 2 debug information
+is disabled in order to always output DWARF 2 frame information.
+</p>
+<p>A target may return <code>UI_TARGET</code> if it has ABI specified unwind tables.
+This will suppress generation of the normal debug frame unwind information.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF2_005fASM_005fLINE_005fDEBUG_005fINFO"></a>Macro: <strong>DWARF2_ASM_LINE_DEBUG_INFO</strong></dt>
+<dd><p>Define this macro to be a nonzero value if the assembler can generate Dwarf 2
+line debug info sections. This will result in much more compact line number
+tables, and hence is desirable if it works.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF2_005fASM_005fVIEW_005fDEBUG_005fINFO"></a>Macro: <strong>DWARF2_ASM_VIEW_DEBUG_INFO</strong></dt>
+<dd><p>Define this macro to be a nonzero value if the assembler supports view
+assignment and verification in <code>.loc</code>. If it does not, but the
+user enables location views, the compiler may have to fallback to
+internal line number tables.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRESET_005fLOCATION_005fVIEW"></a>Target Hook: <em>int</em> <strong>TARGET_RESET_LOCATION_VIEW</strong> <em>(rtx_insn *<var></var>)</em></dt>
+<dd><p>This hook, if defined, enables -ginternal-reset-location-views, and
+uses its result to override cases in which the estimated min insn
+length might be nonzero even when a PC advance (i.e., a view reset)
+cannot be taken for granted.
+</p>
+<p>If the hook is defined, it must return a positive value to indicate
+the insn definitely advances the PC, and so the view number can be
+safely assumed to be reset; a negative value to mean the insn
+definitely does not advance the PC, and os the view number must not
+be reset; or zero to decide based on the estimated insn length.
+</p>
+<p>If insn length is to be regarded as reliable, set the hook to
+<code>hook_int_rtx_insn_0</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fWANT_005fDEBUG_005fPUB_005fSECTIONS"></a>Target Hook: <em>bool</em> <strong>TARGET_WANT_DEBUG_PUB_SECTIONS</strong></dt>
+<dd><p>True if the <code>.debug_pubtypes</code> and <code>.debug_pubnames</code> sections
+should be emitted. These sections are not used on most platforms, and
+in particular GDB does not use them.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDELAY_005fSCHED2"></a>Target Hook: <em>bool</em> <strong>TARGET_DELAY_SCHED2</strong></dt>
+<dd><p>True if sched2 is not to be run at its normal place.
+This usually means it will be run as part of machine-specific reorg.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDELAY_005fVARTRACK"></a>Target Hook: <em>bool</em> <strong>TARGET_DELAY_VARTRACK</strong></dt>
+<dd><p>True if vartrack is not to be run at its normal place.
+This usually means it will be run as part of machine-specific reorg.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNO_005fREGISTER_005fALLOCATION"></a>Target Hook: <em>bool</em> <strong>TARGET_NO_REGISTER_ALLOCATION</strong></dt>
+<dd><p>True if register allocation and the passes
+following it should not be run. Usually true only for virtual assembler
+targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fDELTA"></a>Macro: <strong>ASM_OUTPUT_DWARF_DELTA</strong> <em>(<var>stream</var>, <var>size</var>, <var>label1</var>, <var>label2</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a difference
+<var>lab1</var> minus <var>lab2</var>, using an integer of the given <var>size</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fVMS_005fDELTA"></a>Macro: <strong>ASM_OUTPUT_DWARF_VMS_DELTA</strong> <em>(<var>stream</var>, <var>size</var>, <var>label1</var>, <var>label2</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a difference
+between the two given labels in system defined units, e.g. instruction
+slots on IA64 VMS, using an integer of the given size.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fOFFSET"></a>Macro: <strong>ASM_OUTPUT_DWARF_OFFSET</strong> <em>(<var>stream</var>, <var>size</var>, <var>label</var>, <var>offset</var>, <var>section</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a
+section-relative reference to the given <var>label</var> plus <var>offset</var>, using
+an integer of the given <var>size</var>. The label is known to be defined in the
+given <var>section</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fPCREL"></a>Macro: <strong>ASM_OUTPUT_DWARF_PCREL</strong> <em>(<var>stream</var>, <var>size</var>, <var>label</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a self-relative
+reference to the given <var>label</var>, using an integer of the given <var>size</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fDATAREL"></a>Macro: <strong>ASM_OUTPUT_DWARF_DATAREL</strong> <em>(<var>stream</var>, <var>size</var>, <var>label</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a reference to the
+given <var>label</var> relative to the dbase, using an integer of the given <var>size</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDWARF_005fTABLE_005fREF"></a>Macro: <strong>ASM_OUTPUT_DWARF_TABLE_REF</strong> <em>(<var>label</var>)</em></dt>
+<dd><p>A C statement to issue assembly directives that create a reference to
+the DWARF table identifier <var>label</var> from the current section. This
+is used on some systems to avoid garbage collecting a DWARF table which
+is referenced by a function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fDWARF_005fDTPREL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_OUTPUT_DWARF_DTPREL</strong> <em>(FILE *<var>file</var>, int <var>size</var>, rtx <var>x</var>)</em></dt>
+<dd><p>If defined, this target hook is a function which outputs a DTP-relative
+reference to the given TLS symbol of the specified size.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="VMS-Debug.html#VMS-Debug" accesskey="n" rel="next">VMS Debug</a>, Previous: <a href="All-Debuggers.html#All-Debuggers" accesskey="p" rel="previous">All Debuggers</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Data-Output.html b/share/doc/gccint/Data-Output.html
new file mode 100644
index 0000000..2e85ea6
--- /dev/null
+++ b/share/doc/gccint/Data-Output.html
@@ -0,0 +1,278 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Data Output</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Data Output">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Data Output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Uninitialized-Data.html#Uninitialized-Data" rel="next" title="Uninitialized Data">
+<link href="File-Framework.html#File-Framework" rel="previous" title="File Framework">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Data-Output"></a>
+<div class="header">
+<p>
+Next: <a href="Uninitialized-Data.html#Uninitialized-Data" accesskey="n" rel="next">Uninitialized Data</a>, Previous: <a href="File-Framework.html#File-Framework" accesskey="p" rel="previous">File Framework</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-of-Data"></a>
+<h4 class="subsection">18.20.2 Output of Data</h4>
+
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fBYTE_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_BYTE_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fHI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_HI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fPSI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_PSI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fSI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_SI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fPDI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_PDI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fDI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_DI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fPTI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_PTI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fALIGNED_005fTI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_ALIGNED_TI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fHI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_HI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fPSI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_PSI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fSI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_SI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fPDI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_PDI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fDI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_DI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fPTI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_PTI_OP</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fUNALIGNED_005fTI_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_UNALIGNED_TI_OP</strong></dt>
+<dd><p>These hooks specify assembly directives for creating certain kinds
+of integer object. The <code>TARGET_ASM_BYTE_OP</code> directive creates a
+byte-sized object, the <code>TARGET_ASM_ALIGNED_HI_OP</code> one creates an
+aligned two-byte object, and so on. Any of the hooks may be
+<code>NULL</code>, indicating that no suitable directive is available.
+</p>
+<p>The compiler will print these strings at the start of a new line,
+followed immediately by the object&rsquo;s initial value. In most cases,
+the string should contain a tab, a pseudo-op, and then another tab.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fINTEGER"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_INTEGER</strong> <em>(rtx <var>x</var>, unsigned int <var>size</var>, int <var>aligned_p</var>)</em></dt>
+<dd><p>The <code>assemble_integer</code> function uses this hook to output an
+integer object. <var>x</var> is the object&rsquo;s value, <var>size</var> is its size
+in bytes and <var>aligned_p</var> indicates whether it is aligned. The
+function should return <code>true</code> if it was able to output the
+object. If it returns false, <code>assemble_integer</code> will try to
+split the object into smaller parts.
+</p>
+<p>The default implementation of this hook will use the
+<code>TARGET_ASM_BYTE_OP</code> family of strings, returning <code>false</code>
+when the relevant string is <code>NULL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fDECL_005fEND"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_DECL_END</strong> <em>(void)</em></dt>
+<dd><p>Define this hook if the target assembler requires a special marker to
+terminate an initialized variable declaration.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fADDR_005fCONST_005fEXTRA"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA</strong> <em>(FILE *<var>file</var>, rtx <var>x</var>)</em></dt>
+<dd><p>A target hook to recognize <var>rtx</var> patterns that <code>output_addr_const</code>
+can&rsquo;t deal with, and output assembly code to <var>file</var> corresponding to
+the pattern <var>x</var>. This may be used to allow machine-dependent
+<code>UNSPEC</code>s to appear within constants.
+</p>
+<p>If target hook fails to recognize a pattern, it must return <code>false</code>,
+so that a standard error message is printed. If it prints an error message
+itself, by calling, for example, <code>output_operand_lossage</code>, it may just
+return <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fASCII"></a>Macro: <strong>ASM_OUTPUT_ASCII</strong> <em>(<var>stream</var>, <var>ptr</var>, <var>len</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> an assembler
+instruction to assemble a string constant containing the <var>len</var>
+bytes at <var>ptr</var>. <var>ptr</var> will be a C expression of type
+<code>char *</code> and <var>len</var> a C expression of type <code>int</code>.
+</p>
+<p>If the assembler has a <code>.ascii</code> pseudo-op as found in the
+Berkeley Unix assembler, do not define the macro
+<code>ASM_OUTPUT_ASCII</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fFDESC"></a>Macro: <strong>ASM_OUTPUT_FDESC</strong> <em>(<var>stream</var>, <var>decl</var>, <var>n</var>)</em></dt>
+<dd><p>A C statement to output word <var>n</var> of a function descriptor for
+<var>decl</var>. This must be defined if <code>TARGET_VTABLE_USES_DESCRIPTORS</code>
+is defined, and is otherwise unused.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CONSTANT_005fPOOL_005fBEFORE_005fFUNCTION"></a>Macro: <strong>CONSTANT_POOL_BEFORE_FUNCTION</strong></dt>
+<dd><p>You may define this macro as a C expression. You should define the
+expression to have a nonzero value if GCC should output the constant
+pool for a function before the code for the function, or a zero value if
+GCC should output the constant pool after the function. If you do
+not define this macro, the usual case, GCC will output the constant
+pool before the function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fPOOL_005fPROLOGUE"></a>Macro: <strong>ASM_OUTPUT_POOL_PROLOGUE</strong> <em>(<var>file</var>, <var>funname</var>, <var>fundecl</var>, <var>size</var>)</em></dt>
+<dd><p>A C statement to output assembler commands to define the start of the
+constant pool for a function. <var>funname</var> is a string giving
+the name of the function. Should the return type of the function
+be required, it can be obtained via <var>fundecl</var>. <var>size</var>
+is the size, in bytes, of the constant pool that will be written
+immediately after this call.
+</p>
+<p>If no constant-pool prefix is required, the usual case, this macro need
+not be defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fSPECIAL_005fPOOL_005fENTRY"></a>Macro: <strong>ASM_OUTPUT_SPECIAL_POOL_ENTRY</strong> <em>(<var>file</var>, <var>x</var>, <var>mode</var>, <var>align</var>, <var>labelno</var>, <var>jumpto</var>)</em></dt>
+<dd><p>A C statement (with or without semicolon) to output a constant in the
+constant pool, if it needs special treatment. (This macro need not do
+anything for RTL expressions that can be output normally.)
+</p>
+<p>The argument <var>file</var> is the standard I/O stream to output the
+assembler code on. <var>x</var> is the RTL expression for the constant to
+output, and <var>mode</var> is the machine mode (in case <var>x</var> is a
+&lsquo;<samp>const_int</samp>&rsquo;). <var>align</var> is the required alignment for the value
+<var>x</var>; you should output an assembler directive to force this much
+alignment.
+</p>
+<p>The argument <var>labelno</var> is a number to use in an internal label for
+the address of this pool entry. The definition of this macro is
+responsible for outputting the label definition at the proper place.
+Here is how to do this:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><code>(*targetm.asm_out.internal_label)</code> (<var>file</var>, &quot;LC&quot;, <var>labelno</var>);
+</pre></div>
+
+<p>When you output a pool entry specially, you should end with a
+<code>goto</code> to the label <var>jumpto</var>. This will prevent the same pool
+entry from being output a second time in the usual manner.
+</p>
+<p>You need not define this macro if it would do nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fPOOL_005fEPILOGUE"></a>Macro: <strong>ASM_OUTPUT_POOL_EPILOGUE</strong> <em>(<var>file</var> <var>funname</var> <var>fundecl</var> <var>size</var>)</em></dt>
+<dd><p>A C statement to output assembler commands to at the end of the constant
+pool for a function. <var>funname</var> is a string giving the name of the
+function. Should the return type of the function be required, you can
+obtain it via <var>fundecl</var>. <var>size</var> is the size, in bytes, of the
+constant pool that GCC wrote immediately before this call.
+</p>
+<p>If no constant-pool epilogue is required, the usual case, you need not
+define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IS_005fASM_005fLOGICAL_005fLINE_005fSEPARATOR"></a>Macro: <strong>IS_ASM_LOGICAL_LINE_SEPARATOR</strong> <em>(<var>C</var>, <var>STR</var>)</em></dt>
+<dd><p>Define this macro as a C expression which is nonzero if <var>C</var> is
+used as a logical line separator by the assembler. <var>STR</var> points
+to the position in the string where <var>C</var> was found; this can be used if
+a line separator uses multiple characters.
+</p>
+<p>If you do not define this macro, the default is that only
+the character &lsquo;<samp>;</samp>&rsquo; is treated as a logical line separator.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOPEN_005fPAREN"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_OPEN_PAREN</strong></dt>
+<dt><a name="index-TARGET_005fASM_005fCLOSE_005fPAREN"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_CLOSE_PAREN</strong></dt>
+<dd><p>These target hooks are C string constants, describing the syntax in the
+assembler for grouping arithmetic expressions. If not overridden, they
+default to normal parentheses, which is correct for most assemblers.
+</p></dd></dl>
+
+<p>These macros are provided by <samp>real.h</samp> for writing the definitions
+of <code>ASM_OUTPUT_DOUBLE</code> and the like:
+</p>
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fSINGLE"></a>Macro: <strong>REAL_VALUE_TO_TARGET_SINGLE</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fDOUBLE"></a>Macro: <strong>REAL_VALUE_TO_TARGET_DOUBLE</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fLONG_005fDOUBLE"></a>Macro: <strong>REAL_VALUE_TO_TARGET_LONG_DOUBLE</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL32"></a>Macro: <strong>REAL_VALUE_TO_TARGET_DECIMAL32</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL64"></a>Macro: <strong>REAL_VALUE_TO_TARGET_DECIMAL64</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dt><a name="index-REAL_005fVALUE_005fTO_005fTARGET_005fDECIMAL128"></a>Macro: <strong>REAL_VALUE_TO_TARGET_DECIMAL128</strong> <em>(<var>x</var>, <var>l</var>)</em></dt>
+<dd><p>These translate <var>x</var>, of type <code>REAL_VALUE_TYPE</code>, to the
+target&rsquo;s floating point representation, and store its bit pattern in
+the variable <var>l</var>. For <code>REAL_VALUE_TO_TARGET_SINGLE</code> and
+<code>REAL_VALUE_TO_TARGET_DECIMAL32</code>, this variable should be a
+simple <code>long int</code>. For the others, it should be an array of
+<code>long int</code>. The number of elements in this array is determined
+by the size of the desired target floating point data type: 32 bits of
+it go in each <code>long int</code> array element. Each array element holds
+32 bits of the result, even if <code>long int</code> is wider than 32 bits
+on the host machine.
+</p>
+<p>The array element values are designed so that you can print them out
+using <code>fprintf</code> in the order they should appear in the target
+machine&rsquo;s memory.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Uninitialized-Data.html#Uninitialized-Data" accesskey="n" rel="next">Uninitialized Data</a>, Previous: <a href="File-Framework.html#File-Framework" accesskey="p" rel="previous">File Framework</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Debug-Information.html b/share/doc/gccint/Debug-Information.html
new file mode 100644
index 0000000..1333bbf
--- /dev/null
+++ b/share/doc/gccint/Debug-Information.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Debug Information</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Debug Information">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Debug Information">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Insns.html#Insns" rel="next" title="Insns">
+<link href="Assembler.html#Assembler" rel="previous" title="Assembler">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Debug-Information"></a>
+<div class="header">
+<p>
+Next: <a href="Insns.html#Insns" accesskey="n" rel="next">Insns</a>, Previous: <a href="Assembler.html#Assembler" accesskey="p" rel="previous">Assembler</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Variable-Location-Debug-Information-in-RTL"></a>
+<h3 class="section">14.18 Variable Location Debug Information in RTL</h3>
+<a name="index-Variable-Location-Debug-Information-in-RTL"></a>
+
+<p>Variable tracking relies on <code>MEM_EXPR</code> and <code>REG_EXPR</code>
+annotations to determine what user variables memory and register
+references refer to.
+</p>
+<p>Variable tracking at assignments uses these notes only when they refer
+to variables that live at fixed locations (e.g., addressable
+variables, global non-automatic variables). For variables whose
+location may vary, it relies on the following types of notes.
+</p>
+<dl compact="compact">
+<dd><a name="index-var_005flocation"></a>
+</dd>
+<dt><code>(var_location:<var>mode</var> <var>var</var> <var>exp</var> <var>stat</var>)</code></dt>
+<dd><p>Binds variable <code>var</code>, a tree, to value <var>exp</var>, an RTL
+expression. It appears only in <code>NOTE_INSN_VAR_LOCATION</code> and
+<code>DEBUG_INSN</code>s, with slightly different meanings. <var>mode</var>, if
+present, represents the mode of <var>exp</var>, which is useful if it is a
+modeless expression. <var>stat</var> is only meaningful in notes,
+indicating whether the variable is known to be initialized or
+uninitialized.
+</p>
+<a name="index-debug_005fexpr"></a>
+</dd>
+<dt><code>(debug_expr:<var>mode</var> <var>decl</var>)</code></dt>
+<dd><p>Stands for the value bound to the <code>DEBUG_EXPR_DECL</code> <var>decl</var>,
+that points back to it, within value expressions in
+<code>VAR_LOCATION</code> nodes.
+</p>
+<a name="index-debug_005fimplicit_005fptr"></a>
+</dd>
+<dt><code>(debug_implicit_ptr:<var>mode</var> <var>decl</var>)</code></dt>
+<dd><p>Stands for the location of a <var>decl</var> that is no longer addressable.
+</p>
+<a name="index-entry_005fvalue"></a>
+</dd>
+<dt><code>(entry_value:<var>mode</var> <var>decl</var>)</code></dt>
+<dd><p>Stands for the value a <var>decl</var> had at the entry point of the
+containing function.
+</p>
+<a name="index-debug_005fparameter_005fref"></a>
+</dd>
+<dt><code>(debug_parameter_ref:<var>mode</var> <var>decl</var>)</code></dt>
+<dd><p>Refers to a parameter that was completely optimized out.
+</p>
+<a name="index-debug_005fmarker"></a>
+</dd>
+<dt><code>(debug_marker:<var>mode</var>)</code></dt>
+<dd><p>Marks a program location. With <code>VOIDmode</code>, it stands for the
+beginning of a statement, a recommended inspection point logically after
+all prior side effects, and before any subsequent side effects. With
+<code>BLKmode</code>, it indicates an inline entry point: the lexical block
+encoded in the <code>INSN_LOCATION</code> is the enclosing block that encloses
+the inlined function.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Insns.html#Insns" accesskey="n" rel="next">Insns</a>, Previous: <a href="Assembler.html#Assembler" accesskey="p" rel="previous">Assembler</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Debugging-Info.html b/share/doc/gccint/Debugging-Info.html
new file mode 100644
index 0000000..204a961
--- /dev/null
+++ b/share/doc/gccint/Debugging-Info.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Debugging Info</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Debugging Info">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Debugging Info">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="All-Debuggers.html#All-Debuggers" rel="next" title="All Debuggers">
+<link href="Alignment-Output.html#Alignment-Output" rel="previous" title="Alignment Output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Debugging-Info"></a>
+<div class="header">
+<p>
+Next: <a href="Floating-Point.html#Floating-Point" accesskey="n" rel="next">Floating Point</a>, Previous: <a href="Assembler-Format.html#Assembler-Format" accesskey="p" rel="previous">Assembler Format</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Controlling-Debugging-Information-Format"></a>
+<h3 class="section">18.21 Controlling Debugging Information Format</h3>
+
+<p>This describes how to specify debugging information.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="All-Debuggers.html#All-Debuggers" accesskey="1">All Debuggers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros that affect all debugging formats uniformly.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="DWARF.html#DWARF" accesskey="2">DWARF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros for DWARF format.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="VMS-Debug.html#VMS-Debug" accesskey="3">VMS Debug</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros for VMS debug format.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="CTF-Debug.html#CTF-Debug" accesskey="4">CTF Debug</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros for CTF debug format.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="BTF-Debug.html#BTF-Debug" accesskey="5">BTF Debug</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros for BTF debug format.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Debugging-the-Analyzer.html b/share/doc/gccint/Debugging-the-Analyzer.html
new file mode 100644
index 0000000..75734f4
--- /dev/null
+++ b/share/doc/gccint/Debugging-the-Analyzer.html
@@ -0,0 +1,349 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Debugging the Analyzer</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Debugging the Analyzer">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Debugging the Analyzer">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Static-Analyzer.html#Static-Analyzer" rel="up" title="Static Analyzer">
+<link href="User-Experience-Guidelines.html#User-Experience-Guidelines" rel="next" title="User Experience Guidelines">
+<link href="Analyzer-Internals.html#Analyzer-Internals" rel="previous" title="Analyzer Internals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Debugging-the-Analyzer"></a>
+<div class="header">
+<p>
+Previous: <a href="Analyzer-Internals.html#Analyzer-Internals" accesskey="p" rel="previous">Analyzer Internals</a>, Up: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="u" rel="up">Static Analyzer</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Debugging-the-Analyzer-1"></a>
+<h3 class="section">27.2 Debugging the Analyzer</h3>
+<a name="index-analyzer_002c-debugging"></a>
+<a name="index-static-analyzer_002c-debugging"></a>
+
+<p>When debugging the analyzer I normally use all of these options
+together:
+</p>
+<div class="smallexample">
+<pre class="smallexample">./xgcc -B. \
+ -S \
+ -fanalyzer \
+ OTHER_GCC_ARGS \
+ -wrapper gdb,--args \
+ -fdump-analyzer-stderr \
+ -fanalyzer-fine-grained \
+ -fdump-ipa-analyzer=stderr
+</pre></div>
+
+<p>where:
+</p>
+<ul>
+<li> <code>./xgcc -B.</code>
+is the usual way to invoke a self-built GCC from within the <samp>BUILDDIR/gcc</samp>
+subdirectory.
+
+</li><li> <code>-S</code>
+so that the driver (<code>./xgcc</code>) invokes <code>cc1</code>, but doesn&rsquo;t bother
+running the assembler or linker (since the analyzer runs inside <code>cc1</code>).
+
+</li><li> <code>-fanalyzer</code>
+enables the analyzer, obviously.
+
+</li><li> <code>-wrapper gdb,--args</code>
+invokes <code>cc1</code> under the debugger so that I can debug <code>cc1</code> and
+set breakpoints and step through things.
+
+</li><li> <code>-fdump-analyzer-stderr</code>
+so that the logging interface is enabled and goes to stderr, which often
+gives valuable context into what&rsquo;s happening when stepping through the
+analyzer
+
+</li><li> <code>-fanalyzer-fine-grained</code>
+which splits the effect of every statement into its own
+exploded_node, rather than the default (which tries to combine
+successive stmts to reduce the size of the exploded_graph). This makes
+it easier to see exactly where a particular change happens.
+
+</li><li> <code>-fdump-ipa-analyzer=stderr</code>
+which dumps the GIMPLE IR seen by the analyzer pass to stderr
+
+</li></ul>
+
+<p>Other useful options:
+</p>
+<ul>
+<li> <code>-fdump-analyzer-exploded-graph</code>
+which dumps a <samp>SRC.eg.dot</samp> GraphViz file that I can look at (with
+python-xdot)
+
+</li><li> <code>-fdump-analyzer-exploded-nodes-2</code>
+which dumps a <samp>SRC.eg.txt</samp> file containing the full <code>exploded_graph</code>.
+
+</li></ul>
+
+<p>Assuming that you have the
+<a href="https://gcc-newbies-guide.readthedocs.io/en/latest/debugging.html">python support scripts for gdb</a>
+installed, you can use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(gdb) break-on-saved-diagnostic
+</pre></div>
+
+<p>to put a breakpoint at the place where a diagnostic is saved during
+<code>exploded_graph</code> exploration, to see where a particular diagnostic
+is being saved, and:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(gdb) break-on-diagnostic
+</pre></div>
+
+<p>to put a breakpoint at the place where diagnostics are actually emitted.
+</p>
+<a name="Special-Functions-for-Debugging-the-Analyzer"></a>
+<h4 class="subsection">27.2.1 Special Functions for Debugging the Analyzer</h4>
+
+<p>The analyzer recognizes various special functions by name, for use
+in debugging the analyzer, and for use in DejaGnu tests.
+</p>
+<p>The declarations of these functions can be seen in the testsuite
+in <samp>analyzer-decls.h</samp>. None of these functions are actually
+implemented in terms of code, merely as <code>known_function</code> subclasses
+(in <samp>gcc/analyzer/kf-analyzer.cc</samp>).
+</p>
+<dl compact="compact">
+<dt><code>__analyzer_break</code></dt>
+<dd><p>Add:
+</p><div class="smallexample">
+<pre class="smallexample"> __analyzer_break ();
+</pre></div>
+<p>to the source being analyzed to trigger a breakpoint in the analyzer when
+that source is reached. By putting a series of these in the source, it&rsquo;s
+much easier to effectively step through the program state as it&rsquo;s analyzed.
+</p>
+</dd>
+<dt><code>__analyzer_describe</code></dt>
+<dd><p>The analyzer handles:
+</p>
+<div class="smallexample">
+<pre class="smallexample">__analyzer_describe (0, expr);
+</pre></div>
+
+<p>by emitting a warning describing the 2nd argument (which can be of any
+type), at a verbosity level given by the 1st argument. This is for use when
+debugging, and may be of use in DejaGnu tests.
+</p>
+</dd>
+<dt><code>__analyzer_dump</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">__analyzer_dump ();
+</pre></div>
+
+<p>will dump the copious information about the analyzer&rsquo;s state each time it
+reaches the call in its traversal of the source.
+</p>
+</dd>
+<dt><code>__analyzer_dump_capacity</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">extern void __analyzer_dump_capacity (const void *ptr);
+</pre></div>
+
+<p>will emit a warning describing the capacity of the base region of
+the region pointed to by the 1st argument.
+</p>
+</dd>
+<dt><code>__analyzer_dump_escaped</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">extern void __analyzer_dump_escaped (void);
+</pre></div>
+
+<p>will emit a warning giving the number of decls that have escaped on this
+analysis path, followed by a comma-separated list of their names,
+in alphabetical order.
+</p>
+</dd>
+<dt><code>__analyzer_dump_path</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">__analyzer_dump_path ();
+</pre></div>
+
+<p>will emit a placeholder &ldquo;note&rdquo; diagnostic with a path to that call site,
+if the analyzer finds a feasible path to it. This can be useful for
+writing DejaGnu tests for constraint-tracking and feasibility checking.
+</p>
+</dd>
+<dt><code>__analyzer_dump_exploded_nodes</code></dt>
+<dd><p>For every callsite to <code>__analyzer_dump_exploded_nodes</code> the analyzer
+will emit a warning after it finished the analysis containing information
+on all of the exploded nodes at that program point.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> __analyzer_dump_exploded_nodes (0);
+</pre></div>
+
+<p>will output the number of &ldquo;processed&rdquo; nodes, and the IDs of
+both &ldquo;processed&rdquo; and &ldquo;merger&rdquo; nodes, such as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">warning: 2 processed enodes: [EN: 56, EN: 58] merger(s): [EN: 54-55, EN: 57, EN: 59]
+</pre></div>
+
+<p>With a non-zero argument
+</p>
+<div class="smallexample">
+<pre class="smallexample"> __analyzer_dump_exploded_nodes (1);
+</pre></div>
+
+<p>it will also dump all of the states within the &ldquo;processed&rdquo; nodes.
+</p>
+</dd>
+<dt><code>__analyzer_dump_named_constant</code></dt>
+<dd><p>When the analyzer sees a call to <code>__analyzer_dump_named_constant</code> it
+will emit a warning describing what is known about the value of a given
+named constant, for parts of the analyzer that interact with target
+headers.
+</p>
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">__analyzer_dump_named_constant (&quot;O_RDONLY&quot;);
+</pre></div>
+
+<p>might lead to the analyzer emitting the warning:
+</p>
+<div class="smallexample">
+<pre class="smallexample">warning: named constant 'O_RDONLY' has value '1'
+</pre></div>
+
+</dd>
+<dt><code>__analyzer_dump_region_model</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample"> __analyzer_dump_region_model ();
+</pre></div>
+<p>will dump the region_model&rsquo;s state to stderr.
+</p>
+</dd>
+<dt><code>__analyzer_dump_state</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">__analyzer_dump_state (&quot;malloc&quot;, ptr);
+</pre></div>
+
+<p>will emit a warning describing the state of the 2nd argument
+(which can be of any type) with respect to the state machine with
+a name matching the 1st argument (which must be a string literal).
+This is for use when debugging, and may be of use in DejaGnu tests.
+</p>
+</dd>
+<dt><code>__analyzer_eval</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">__analyzer_eval (expr);
+</pre></div>
+<p>will emit a warning with text &quot;TRUE&quot;, FALSE&quot; or &quot;UNKNOWN&quot; based on the
+truthfulness of the argument. This is useful for writing DejaGnu tests.
+</p>
+</dd>
+<dt><code>__analyzer_get_unknown_ptr</code></dt>
+<dd><div class="smallexample">
+<pre class="smallexample">__analyzer_get_unknown_ptr ();
+</pre></div>
+<p>will obtain an unknown <code>void *</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Other-Debugging-Techniques"></a>
+<h4 class="subsection">27.2.2 Other Debugging Techniques</h4>
+
+<p>To compare two different exploded graphs, try
+<code>-fdump-analyzer-exploded-nodes-2 -fdump-noaddr -fanalyzer-fine-grained</code>.
+This will dump a <samp>SRC.eg.txt</samp> file containing the full
+<code>exploded_graph</code>. I use <code>diff -u50 -p</code> to compare two different
+such files (e.g. before and after a patch) to find the first place where the
+two graphs diverge. The option <samp>-fdump-noaddr</samp> will suppress
+printing pointers withihn the dumps (which would otherwise hide the real
+differences with irrelevent churn).
+</p>
+<p>The option <samp>-fdump-analyzer-json</samp> will dump both the supergraph
+and the exploded graph in compressed JSON form.
+</p>
+<p>One approach when tracking down where a particular bogus state is
+introduced into the <code>exploded_graph</code> is to add custom code to
+<code>program_state::validate</code>.
+</p>
+<p>The debug function <code>region::is_named_decl_p</code> can be used when debugging,
+such as for assertions and conditional breakpoints. For example, when
+tracking down a bug in handling a decl called <code>yy_buffer_stack</code>, I
+temporarily added a:
+</p><div class="smallexample">
+<pre class="smallexample"> gcc_assert (!m_base_region-&gt;is_named_decl_p (&quot;yy_buffer_stack&quot;));
+</pre></div>
+<p>to <code>binding_cluster::mark_as_escaped</code> to trap a point where
+<code>yy_buffer_stack</code> was mistakenly being treated as having escaped.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Analyzer-Internals.html#Analyzer-Internals" accesskey="p" rel="previous">Analyzer Internals</a>, Up: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="u" rel="up">Static Analyzer</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Decimal-float-library-routines.html b/share/doc/gccint/Decimal-float-library-routines.html
new file mode 100644
index 0000000..645b2fc
--- /dev/null
+++ b/share/doc/gccint/Decimal-float-library-routines.html
@@ -0,0 +1,417 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Decimal float library routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Decimal float library routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Decimal float library routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" rel="next" title="Fixed-point fractional library routines">
+<link href="Soft-float-library-routines.html#Soft-float-library-routines" rel="previous" title="Soft float library routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Decimal-float-library-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" accesskey="n" rel="next">Fixed-point fractional library routines</a>, Previous: <a href="Soft-float-library-routines.html#Soft-float-library-routines" accesskey="p" rel="previous">Soft float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Routines-for-decimal-floating-point-emulation"></a>
+<h3 class="section">4.3 Routines for decimal floating point emulation</h3>
+<a name="index-decimal-float-library"></a>
+<a name="index-IEEE-754_002d2008"></a>
+
+<p>The software decimal floating point library implements IEEE 754-2008
+decimal floating point arithmetic and is only activated on selected
+targets.
+</p>
+<p>The software decimal floating point library supports either DPD
+(Densely Packed Decimal) or BID (Binary Integer Decimal) encoding
+as selected at configure time.
+</p>
+
+<a name="Arithmetic-functions-2"></a>
+<h4 class="subsection">4.3.1 Arithmetic functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005faddsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_addsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005faddsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_addsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fadddd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_adddd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fadddd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_adddd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005faddtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_addtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005faddtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_addtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fsubsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_subsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fsubsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_subsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fsubdd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_subdd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fsubdd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_subdd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fsubtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_subtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fsubtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_subtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return the difference between <var>b</var> and <var>a</var>;
+that is, <em><var>a</var> - <var>b</var></em><!-- /@w -->.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fmulsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_mulsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fmulsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_mulsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fmuldd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_muldd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fmuldd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_muldd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fmultd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_multd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fmultd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_multd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fdivsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_divsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fdivsd3"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_divsd3</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fdivdd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_divdd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fdivdd3"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_divdd3</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fdivtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_divtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fdivtd3"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_divtd3</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of <var>a</var> and <var>b</var>; that is,
+<em><var>a</var> / <var>b</var></em><!-- /@w -->.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fnegsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_negsd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnegsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_negsd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fnegdd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_negdd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnegdd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_negdd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fnegtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_negtd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnegtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_negtd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var>. They simply flip the
+sign bit, so they can produce negative zero and negative NaN.
+</p></dd></dl>
+
+<a name="Conversion-functions-1"></a>
+<h4 class="subsection">4.3.2 Conversion functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fextendsddd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_extendsddd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsddd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_extendsddd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendsdtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extendsdtd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsdtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extendsdtd2</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendddtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extendddtd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendddtd2"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extendddtd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncddsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_truncddsd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncddsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_truncddsd2</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctdsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_trunctdsd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctdsd2"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_trunctdsd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctddd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_trunctddd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctddd2"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_trunctddd2</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert the value <var>a</var> from one decimal floating type
+to another.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fextendsfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_extendsfdd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_extendsfdd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendsftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extendsftd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extendsftd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextenddftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extenddftd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextenddftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extenddftd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendxftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extendxftd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendxftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extendxftd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncdfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_truncdfsd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncdfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_truncdfsd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncxfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_truncxfsd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncxfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_truncxfsd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_trunctfsd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_trunctfsd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncxfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_truncxfdd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncxfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_truncxfdd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_trunctfdd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_trunctfdd</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert the value of <var>a</var> from a binary floating type
+to a decimal floating type of a different size.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ftruncddsf"></a>Runtime Function: <em>float</em> <strong>__dpd_truncddsf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncddsf"></a>Runtime Function: <em>float</em> <strong>__bid_truncddsf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctdsf"></a>Runtime Function: <em>float</em> <strong>__dpd_trunctdsf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctdsf"></a>Runtime Function: <em>float</em> <strong>__bid_trunctdsf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendsddf"></a>Runtime Function: <em>double</em> <strong>__dpd_extendsddf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsddf"></a>Runtime Function: <em>double</em> <strong>__bid_extendsddf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctddf"></a>Runtime Function: <em>double</em> <strong>__dpd_trunctddf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctddf"></a>Runtime Function: <em>double</em> <strong>__bid_trunctddf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendsdxf"></a>Runtime Function: <em>long double</em> <strong>__dpd_extendsdxf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsdxf"></a>Runtime Function: <em>long double</em> <strong>__bid_extendsdxf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendddxf"></a>Runtime Function: <em>long double</em> <strong>__dpd_extendddxf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendddxf"></a>Runtime Function: <em>long double</em> <strong>__bid_extendddxf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctdxf"></a>Runtime Function: <em>long double</em> <strong>__dpd_trunctdxf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctdxf"></a>Runtime Function: <em>long double</em> <strong>__bid_trunctdxf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendsdtf"></a>Runtime Function: <em>long double</em> <strong>__dpd_extendsdtf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsdtf"></a>Runtime Function: <em>long double</em> <strong>__bid_extendsdtf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendddtf"></a>Runtime Function: <em>long double</em> <strong>__dpd_extendddtf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendddtf"></a>Runtime Function: <em>long double</em> <strong>__bid_extendddtf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dd><p>These functions convert the value of <var>a</var> from a decimal floating type
+to a binary floating type of a different size.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fextendsfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_extendsfsd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendsfsd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_extendsfsd</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextenddfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_extenddfdd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextenddfdd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_extenddfdd</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fextendtftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_extendtftd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fextendtftd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_extendtftd</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncsdsf"></a>Runtime Function: <em>float</em> <strong>__dpd_truncsdsf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncsdsf"></a>Runtime Function: <em>float</em> <strong>__bid_truncsdsf</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftruncdddf"></a>Runtime Function: <em>double</em> <strong>__dpd_truncdddf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftruncdddf"></a>Runtime Function: <em>double</em> <strong>__bid_truncdddf</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ftrunctdtf"></a>Runtime Function: <em>long double</em> <strong>__dpd_trunctdtf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ftrunctdtf"></a>Runtime Function: <em>long double</em> <strong>__bid_trunctdtf</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert the value of <var>a</var> between decimal and
+binary floating types of the same size.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffixsdsi"></a>Runtime Function: <em>int</em> <strong>__dpd_fixsdsi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixsdsi"></a>Runtime Function: <em>int</em> <strong>__bid_fixsdsi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixddsi"></a>Runtime Function: <em>int</em> <strong>__dpd_fixddsi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixddsi"></a>Runtime Function: <em>int</em> <strong>__bid_fixddsi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixtdsi"></a>Runtime Function: <em>int</em> <strong>__dpd_fixtdsi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixtdsi"></a>Runtime Function: <em>int</em> <strong>__bid_fixtdsi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to a signed integer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffixsddi"></a>Runtime Function: <em>long</em> <strong>__dpd_fixsddi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixsddi"></a>Runtime Function: <em>long</em> <strong>__bid_fixsddi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixdddi"></a>Runtime Function: <em>long</em> <strong>__dpd_fixdddi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixdddi"></a>Runtime Function: <em>long</em> <strong>__bid_fixdddi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixtddi"></a>Runtime Function: <em>long</em> <strong>__dpd_fixtddi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixtddi"></a>Runtime Function: <em>long</em> <strong>__bid_fixtddi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to a signed long.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffixunssdsi"></a>Runtime Function: <em>unsigned int</em> <strong>__dpd_fixunssdsi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunssdsi"></a>Runtime Function: <em>unsigned int</em> <strong>__bid_fixunssdsi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixunsddsi"></a>Runtime Function: <em>unsigned int</em> <strong>__dpd_fixunsddsi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunsddsi"></a>Runtime Function: <em>unsigned int</em> <strong>__bid_fixunsddsi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixunstdsi"></a>Runtime Function: <em>unsigned int</em> <strong>__dpd_fixunstdsi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunstdsi"></a>Runtime Function: <em>unsigned int</em> <strong>__bid_fixunstdsi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to an unsigned integer. Negative values all become zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffixunssddi"></a>Runtime Function: <em>unsigned long</em> <strong>__dpd_fixunssddi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunssddi"></a>Runtime Function: <em>unsigned long</em> <strong>__bid_fixunssddi</strong> <em>(_Decimal32 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixunsdddi"></a>Runtime Function: <em>unsigned long</em> <strong>__dpd_fixunsdddi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunsdddi"></a>Runtime Function: <em>unsigned long</em> <strong>__bid_fixunsdddi</strong> <em>(_Decimal64 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffixunstddi"></a>Runtime Function: <em>unsigned long</em> <strong>__dpd_fixunstddi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffixunstddi"></a>Runtime Function: <em>unsigned long</em> <strong>__bid_fixunstddi</strong> <em>(_Decimal128 <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to an unsigned long. Negative values
+all become zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffloatsisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_floatsisd</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatsisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_floatsisd</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatsidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_floatsidd</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatsidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_floatsidd</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatsitd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_floatsitd</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatsitd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_floatsitd</strong> <em>(int <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, a signed integer, to decimal floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffloatdisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_floatdisd</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatdisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_floatdisd</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatdidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_floatdidd</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatdidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_floatdidd</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatditd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_floatditd</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatditd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_floatditd</strong> <em>(long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, a signed long, to decimal floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffloatunssisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_floatunssisd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunssisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_floatunssisd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatunssidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_floatunssidd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunssidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_floatunssidd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatunssitd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_floatunssitd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunssitd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_floatunssitd</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, an unsigned integer, to decimal floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005ffloatunsdisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__dpd_floatunsdisd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunsdisd"></a>Runtime Function: <em>_Decimal32</em> <strong>__bid_floatunsdisd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatunsdidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__dpd_floatunsdidd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunsdidd"></a>Runtime Function: <em>_Decimal64</em> <strong>__bid_floatunsdidd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005ffloatunsditd"></a>Runtime Function: <em>_Decimal128</em> <strong>__dpd_floatunsditd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005ffloatunsditd"></a>Runtime Function: <em>_Decimal128</em> <strong>__bid_floatunsditd</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, an unsigned long, to decimal floating point.
+</p></dd></dl>
+
+<a name="Comparison-functions-2"></a>
+<h4 class="subsection">4.3.3 Comparison functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005funordsd2"></a>Runtime Function: <em>int</em> <strong>__dpd_unordsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005funordsd2"></a>Runtime Function: <em>int</em> <strong>__bid_unordsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005funorddd2"></a>Runtime Function: <em>int</em> <strong>__dpd_unorddd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005funorddd2"></a>Runtime Function: <em>int</em> <strong>__bid_unorddd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005funordtd2"></a>Runtime Function: <em>int</em> <strong>__dpd_unordtd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005funordtd2"></a>Runtime Function: <em>int</em> <strong>__bid_unordtd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a nonzero value if either argument is NaN, otherwise 0.
+</p></dd></dl>
+
+<p>There is also a complete group of higher level functions which
+correspond directly to comparison operators. They implement the ISO C
+semantics for floating-point comparisons, taking NaN into account.
+Pay careful attention to the return values defined for each set.
+Under the hood, all of these routines are implemented as
+</p>
+<div class="smallexample">
+<pre class="smallexample"> if (__bid_unord<var>X</var>d2 (a, b))
+ return <var>E</var>;
+ return __bid_cmp<var>X</var>d2 (a, b);
+</pre></div>
+
+<p>where <var>E</var> is a constant chosen to give the proper behavior for
+NaN. Thus, the meaning of the return value is different for each set.
+Do not rely on this implementation; only the semantics documented
+below are guaranteed.
+</p>
+<dl>
+<dt><a name="index-_005f_005fdpd_005feqsd2"></a>Runtime Function: <em>int</em> <strong>__dpd_eqsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005feqsd2"></a>Runtime Function: <em>int</em> <strong>__bid_eqsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005feqdd2"></a>Runtime Function: <em>int</em> <strong>__dpd_eqdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005feqdd2"></a>Runtime Function: <em>int</em> <strong>__bid_eqdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005feqtd2"></a>Runtime Function: <em>int</em> <strong>__dpd_eqtd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005feqtd2"></a>Runtime Function: <em>int</em> <strong>__bid_eqtd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return zero if neither argument is NaN, and <var>a</var> and
+<var>b</var> are equal.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fnesd2"></a>Runtime Function: <em>int</em> <strong>__dpd_nesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnesd2"></a>Runtime Function: <em>int</em> <strong>__bid_nesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fnedd2"></a>Runtime Function: <em>int</em> <strong>__dpd_nedd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnedd2"></a>Runtime Function: <em>int</em> <strong>__bid_nedd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fnetd2"></a>Runtime Function: <em>int</em> <strong>__dpd_netd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fnetd2"></a>Runtime Function: <em>int</em> <strong>__bid_netd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a nonzero value if either argument is NaN, or
+if <var>a</var> and <var>b</var> are unequal.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fgesd2"></a>Runtime Function: <em>int</em> <strong>__dpd_gesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgesd2"></a>Runtime Function: <em>int</em> <strong>__bid_gesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fgedd2"></a>Runtime Function: <em>int</em> <strong>__dpd_gedd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgedd2"></a>Runtime Function: <em>int</em> <strong>__bid_gedd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fgetd2"></a>Runtime Function: <em>int</em> <strong>__dpd_getd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgetd2"></a>Runtime Function: <em>int</em> <strong>__bid_getd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a value greater than or equal to zero if
+neither argument is NaN, and <var>a</var> is greater than or equal to
+<var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fltsd2"></a>Runtime Function: <em>int</em> <strong>__dpd_ltsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fltsd2"></a>Runtime Function: <em>int</em> <strong>__bid_ltsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fltdd2"></a>Runtime Function: <em>int</em> <strong>__dpd_ltdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fltdd2"></a>Runtime Function: <em>int</em> <strong>__bid_ltdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005flttd2"></a>Runtime Function: <em>int</em> <strong>__dpd_lttd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005flttd2"></a>Runtime Function: <em>int</em> <strong>__bid_lttd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a value less than zero if neither argument is
+NaN, and <var>a</var> is strictly less than <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005flesd2"></a>Runtime Function: <em>int</em> <strong>__dpd_lesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005flesd2"></a>Runtime Function: <em>int</em> <strong>__bid_lesd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fledd2"></a>Runtime Function: <em>int</em> <strong>__dpd_ledd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fledd2"></a>Runtime Function: <em>int</em> <strong>__bid_ledd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fletd2"></a>Runtime Function: <em>int</em> <strong>__dpd_letd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fletd2"></a>Runtime Function: <em>int</em> <strong>__bid_letd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a value less than or equal to zero if neither
+argument is NaN, and <var>a</var> is less than or equal to <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdpd_005fgtsd2"></a>Runtime Function: <em>int</em> <strong>__dpd_gtsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgtsd2"></a>Runtime Function: <em>int</em> <strong>__bid_gtsd2</strong> <em>(_Decimal32 <var>a</var>, _Decimal32 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fgtdd2"></a>Runtime Function: <em>int</em> <strong>__dpd_gtdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgtdd2"></a>Runtime Function: <em>int</em> <strong>__bid_gtdd2</strong> <em>(_Decimal64 <var>a</var>, _Decimal64 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdpd_005fgttd2"></a>Runtime Function: <em>int</em> <strong>__dpd_gttd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fbid_005fgttd2"></a>Runtime Function: <em>int</em> <strong>__bid_gttd2</strong> <em>(_Decimal128 <var>a</var>, _Decimal128 <var>b</var>)</em></dt>
+<dd><p>These functions return a value greater than zero if neither argument
+is NaN, and <var>a</var> is strictly greater than <var>b</var>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" accesskey="n" rel="next">Fixed-point fractional library routines</a>, Previous: <a href="Soft-float-library-routines.html#Soft-float-library-routines" accesskey="p" rel="previous">Soft float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Declarations.html b/share/doc/gccint/Declarations.html
new file mode 100644
index 0000000..9d600d8
--- /dev/null
+++ b/share/doc/gccint/Declarations.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Declarations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Declarations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Declarations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Working-with-declarations.html#Working-with-declarations" rel="next" title="Working with declarations">
+<link href="Types.html#Types" rel="previous" title="Types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Declarations"></a>
+<div class="header">
+<p>
+Next: <a href="Attributes.html#Attributes" accesskey="n" rel="next">Attributes</a>, Previous: <a href="Types.html#Types" accesskey="p" rel="previous">Types</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Declarations-1"></a>
+<h3 class="section">11.4 Declarations</h3>
+<a name="index-declaration"></a>
+<a name="index-variable"></a>
+<a name="index-type-declaration"></a>
+<a name="index-LABEL_005fDECL"></a>
+<a name="index-CONST_005fDECL"></a>
+<a name="index-TYPE_005fDECL"></a>
+<a name="index-VAR_005fDECL"></a>
+<a name="index-PARM_005fDECL"></a>
+<a name="index-DEBUG_005fEXPR_005fDECL"></a>
+<a name="index-FIELD_005fDECL"></a>
+<a name="index-NAMESPACE_005fDECL"></a>
+<a name="index-RESULT_005fDECL"></a>
+<a name="index-TEMPLATE_005fDECL"></a>
+<a name="index-THUNK_005fDECL"></a>
+<a name="index-THUNK_005fDELTA"></a>
+<a name="index-DECL_005fINITIAL"></a>
+<a name="index-DECL_005fSIZE"></a>
+<a name="index-DECL_005fALIGN"></a>
+<a name="index-DECL_005fEXTERNAL"></a>
+
+<p>This section covers the various kinds of declarations that appear in the
+internal representation, except for declarations of functions
+(represented by <code>FUNCTION_DECL</code> nodes), which are described in
+<a href="Functions.html#Functions">Functions</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Working-with-declarations.html#Working-with-declarations" accesskey="1">Working with declarations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros and functions that work on
+declarations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Internal-structure.html#Internal-structure" accesskey="2">Internal structure</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How declaration nodes are represented.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Deficiencies.html b/share/doc/gccint/Deficiencies.html
new file mode 100644
index 0000000..8ea6485
--- /dev/null
+++ b/share/doc/gccint/Deficiencies.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Deficiencies</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Deficiencies">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Deficiencies">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Tree-overview.html#Tree-overview" rel="next" title="Tree overview">
+<link href="GENERIC.html#GENERIC" rel="previous" title="GENERIC">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Deficiencies"></a>
+<div class="header">
+<p>
+Next: <a href="Tree-overview.html#Tree-overview" accesskey="n" rel="next">Tree overview</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Deficiencies-1"></a>
+<h3 class="section">11.1 Deficiencies</h3>
+
+<p>There are many places in which this document is incomplet and incorrekt.
+It is, as of yet, only <em>preliminary</em> documentation.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Define-Constraints.html b/share/doc/gccint/Define-Constraints.html
new file mode 100644
index 0000000..7acc9ee
--- /dev/null
+++ b/share/doc/gccint/Define-Constraints.html
@@ -0,0 +1,291 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Define Constraints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Define Constraints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Define Constraints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="C-Constraint-Interface.html#C-Constraint-Interface" rel="next" title="C Constraint Interface">
+<link href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" rel="previous" title="Disable Insn Alternatives">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Define-Constraints"></a>
+<div class="header">
+<p>
+Next: <a href="C-Constraint-Interface.html#C-Constraint-Interface" accesskey="n" rel="next">C Constraint Interface</a>, Previous: <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" accesskey="p" rel="previous">Disable Insn Alternatives</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Machine_002dSpecific-Constraints"></a>
+<h4 class="subsection">17.8.7 Defining Machine-Specific Constraints</h4>
+<a name="index-defining-constraints"></a>
+<a name="index-constraints_002c-defining"></a>
+
+<p>Machine-specific constraints fall into two categories: register and
+non-register constraints. Within the latter category, constraints
+which allow subsets of all possible memory or address operands should
+be specially marked, to give <code>reload</code> more information.
+</p>
+<p>Machine-specific constraints can be given names of arbitrary length,
+but they must be entirely composed of letters, digits, underscores
+(&lsquo;<samp>_</samp>&rsquo;), and angle brackets (&lsquo;<samp>&lt; &gt;</samp>&rsquo;). Like C identifiers, they
+must begin with a letter or underscore.
+</p>
+<p>In order to avoid ambiguity in operand constraint strings, no
+constraint can have a name that begins with any other constraint&rsquo;s
+name. For example, if <code>x</code> is defined as a constraint name,
+<code>xy</code> may not be, and vice versa. As a consequence of this rule,
+no constraint may begin with one of the generic constraint letters:
+&lsquo;<samp>E F V X g i m n o p r s</samp>&rsquo;.
+</p>
+<p>Register constraints correspond directly to register classes.
+See <a href="Register-Classes.html#Register-Classes">Register Classes</a>. There is thus not much flexibility in their
+definitions.
+</p>
+<dl>
+<dt><a name="index-define_005fregister_005fconstraint"></a>MD Expression: <strong>define_register_constraint</strong> <em>name regclass docstring</em></dt>
+<dd><p>All three arguments are string constants.
+<var>name</var> is the name of the constraint, as it will appear in
+<code>match_operand</code> expressions. If <var>name</var> is a multi-letter
+constraint its length shall be the same for all constraints starting
+with the same letter. <var>regclass</var> can be either the
+name of the corresponding register class (see <a href="Register-Classes.html#Register-Classes">Register Classes</a>),
+or a C expression which evaluates to the appropriate register class.
+If it is an expression, it must have no side effects, and it cannot
+look at the operand. The usual use of expressions is to map some
+register constraints to <code>NO_REGS</code> when the register class
+is not available on a given subarchitecture.
+</p>
+<p><var>docstring</var> is a sentence documenting the meaning of the
+constraint. Docstrings are explained further below.
+</p></dd></dl>
+
+<p>Non-register constraints are more like predicates: the constraint
+definition gives a boolean expression which indicates whether the
+constraint matches.
+</p>
+<dl>
+<dt><a name="index-define_005fconstraint"></a>MD Expression: <strong>define_constraint</strong> <em>name docstring exp</em></dt>
+<dd><p>The <var>name</var> and <var>docstring</var> arguments are the same as for
+<code>define_register_constraint</code>, but note that the docstring comes
+immediately after the name for these expressions. <var>exp</var> is an RTL
+expression, obeying the same rules as the RTL expressions in predicate
+definitions. See <a href="Defining-Predicates.html#Defining-Predicates">Defining Predicates</a>, for details. If it
+evaluates true, the constraint matches; if it evaluates false, it
+doesn&rsquo;t. Constraint expressions should indicate which RTL codes they
+might match, just like predicate expressions.
+</p>
+<p><code>match_test</code> C expressions have access to the
+following variables:
+</p>
+<dl compact="compact">
+<dt><var>op</var></dt>
+<dd><p>The RTL object defining the operand.
+</p></dd>
+<dt><var>mode</var></dt>
+<dd><p>The machine mode of <var>op</var>.
+</p></dd>
+<dt><var>ival</var></dt>
+<dd><p>&lsquo;<samp>INTVAL (<var>op</var>)</samp>&rsquo;, if <var>op</var> is a <code>const_int</code>.
+</p></dd>
+<dt><var>hval</var></dt>
+<dd><p>&lsquo;<samp>CONST_DOUBLE_HIGH (<var>op</var>)</samp>&rsquo;, if <var>op</var> is an integer
+<code>const_double</code>.
+</p></dd>
+<dt><var>lval</var></dt>
+<dd><p>&lsquo;<samp>CONST_DOUBLE_LOW (<var>op</var>)</samp>&rsquo;, if <var>op</var> is an integer
+<code>const_double</code>.
+</p></dd>
+<dt><var>rval</var></dt>
+<dd><p>&lsquo;<samp>CONST_DOUBLE_REAL_VALUE (<var>op</var>)</samp>&rsquo;, if <var>op</var> is a floating-point
+<code>const_double</code>.
+</p></dd>
+</dl>
+
+<p>The <var>*val</var> variables should only be used once another piece of the
+expression has verified that <var>op</var> is the appropriate kind of RTL
+object.
+</p></dd></dl>
+
+<p>Most non-register constraints should be defined with
+<code>define_constraint</code>. The remaining two definition expressions
+are only appropriate for constraints that should be handled specially
+by <code>reload</code> if they fail to match.
+</p>
+<dl>
+<dt><a name="index-define_005fmemory_005fconstraint"></a>MD Expression: <strong>define_memory_constraint</strong> <em>name docstring exp</em></dt>
+<dd><p>Use this expression for constraints that match a subset of all memory
+operands: that is, <code>reload</code> can make them match by converting the
+operand to the form &lsquo;<samp>(mem&nbsp;(reg&nbsp;<var>X</var>))<!-- /@w --></samp>&rsquo;, where <var>X</var> is a
+base register (from the register class specified by
+<code>BASE_REG_CLASS</code>, see <a href="Register-Classes.html#Register-Classes">Register Classes</a>).
+</p>
+<p>For example, on the S/390, some instructions do not accept arbitrary
+memory references, but only those that do not make use of an index
+register. The constraint letter &lsquo;<samp>Q</samp>&rsquo; is defined to represent a
+memory address of this type. If &lsquo;<samp>Q</samp>&rsquo; is defined with
+<code>define_memory_constraint</code>, a &lsquo;<samp>Q</samp>&rsquo; constraint can handle any
+memory operand, because <code>reload</code> knows it can simply copy the
+memory address into a base register if required. This is analogous to
+the way an &lsquo;<samp>o</samp>&rsquo; constraint can handle any memory operand.
+</p>
+<p>The syntax and semantics are otherwise identical to
+<code>define_constraint</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-define_005fspecial_005fmemory_005fconstraint"></a>MD Expression: <strong>define_special_memory_constraint</strong> <em>name docstring exp</em></dt>
+<dd><p>Use this expression for constraints that match a subset of all memory
+operands: that is, <code>reload</code> cannot make them match by reloading
+the address as it is described for <code>define_memory_constraint</code> or
+such address reload is undesirable with the performance point of view.
+</p>
+<p>For example, <code>define_special_memory_constraint</code> can be useful if
+specifically aligned memory is necessary or desirable for some insn
+operand.
+</p>
+<p>The syntax and semantics are otherwise identical to
+<code>define_memory_constraint</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-define_005frelaxed_005fmemory_005fconstraint"></a>MD Expression: <strong>define_relaxed_memory_constraint</strong> <em>name docstring exp</em></dt>
+<dd><p>The test expression in a <code>define_memory_constraint</code> can assume
+that <code>TARGET_LEGITIMATE_ADDRESS_P</code> holds for the address inside
+a <code>mem</code> rtx and so it does not need to test this condition itself.
+In other words, a <code>define_memory_constraint</code> test of the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_test &quot;mem&quot;)
+</pre></div>
+
+<p>is enough to test whether an rtx is a <code>mem</code> <em>and</em> whether
+its address satisfies <code>TARGET_MEM_CONSTRAINT</code> (which is usually
+&lsquo;<samp>'m'</samp>&rsquo;). Thus the conditions imposed by a <code>define_memory_constraint</code>
+always apply on top of the conditions imposed by <code>TARGET_MEM_CONSTRAINT</code>.
+</p>
+<p>However, it is sometimes useful to define memory constraints that allow
+addresses beyond those accepted by <code>TARGET_LEGITIMATE_ADDRESS_P</code>.
+<code>define_relaxed_memory_constraint</code> exists for this case.
+The test expression in a <code>define_relaxed_memory_constraint</code> is
+applied with no preconditions, so that the expression can determine
+&ldquo;from scratch&rdquo; exactly which addresses are valid and which are not.
+</p>
+<p>The syntax and semantics are otherwise identical to
+<code>define_memory_constraint</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-define_005faddress_005fconstraint"></a>MD Expression: <strong>define_address_constraint</strong> <em>name docstring exp</em></dt>
+<dd><p>Use this expression for constraints that match a subset of all address
+operands: that is, <code>reload</code> can make the constraint match by
+converting the operand to the form &lsquo;<samp>(reg&nbsp;<var>X</var>)<!-- /@w --></samp>&rsquo;, again
+with <var>X</var> a base register.
+</p>
+<p>Constraints defined with <code>define_address_constraint</code> can only be
+used with the <code>address_operand</code> predicate, or machine-specific
+predicates that work the same way. They are treated analogously to
+the generic &lsquo;<samp>p</samp>&rsquo; constraint.
+</p>
+<p>The syntax and semantics are otherwise identical to
+<code>define_constraint</code>.
+</p></dd></dl>
+
+<p>For historical reasons, names beginning with the letters &lsquo;<samp>G H</samp>&rsquo;
+are reserved for constraints that match only <code>const_double</code>s, and
+names beginning with the letters &lsquo;<samp>I J K L M N O P</samp>&rsquo; are reserved
+for constraints that match only <code>const_int</code>s. This may change in
+the future. For the time being, constraints with these names must be
+written in a stylized form, so that <code>genpreds</code> can tell you did
+it correctly:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_constraint &quot;[<var>GHIJKLMNOP</var>]&hellip;&quot;
+ &quot;<var>doc</var>&hellip;&quot;
+ (and (match_code &quot;const_int&quot;) ; <span class="roman"><code>const_double</code> for G/H</span>
+ <var>condition</var>&hellip;)) ; <span class="roman">usually a <code>match_test</code></span>
+</pre></div>
+
+<p>It is fine to use names beginning with other letters for constraints
+that match <code>const_double</code>s or <code>const_int</code>s.
+</p>
+<p>Each docstring in a constraint definition should be one or more complete
+sentences, marked up in Texinfo format. <em>They are currently unused.</em>
+In the future they will be copied into the GCC manual, in <a href="Machine-Constraints.html#Machine-Constraints">Machine Constraints</a>, replacing the hand-maintained tables currently found in
+that section. Also, in the future the compiler may use this to give
+more helpful diagnostics when poor choice of <code>asm</code> constraints
+causes a reload failure.
+</p>
+<p>If you put the pseudo-Texinfo directive &lsquo;<samp>@internal</samp>&rsquo; at the
+beginning of a docstring, then (in the future) it will appear only in
+the internals manual&rsquo;s version of the machine-specific constraint tables.
+Use this for constraints that should not appear in <code>asm</code> statements.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="C-Constraint-Interface.html#C-Constraint-Interface" accesskey="n" rel="next">C Constraint Interface</a>, Previous: <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" accesskey="p" rel="previous">Disable Insn Alternatives</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Define-Subst-Example.html b/share/doc/gccint/Define-Subst-Example.html
new file mode 100644
index 0000000..c668f79
--- /dev/null
+++ b/share/doc/gccint/Define-Subst-Example.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Define Subst Example</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Define Subst Example">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Define Subst Example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Define-Subst.html#Define-Subst" rel="up" title="Define Subst">
+<link href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" rel="next" title="Define Subst Pattern Matching">
+<link href="Define-Subst.html#Define-Subst" rel="previous" title="Define Subst">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Define-Subst-Example"></a>
+<div class="header">
+<p>
+Next: <a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" accesskey="n" rel="next">Define Subst Pattern Matching</a>, Up: <a href="Define-Subst.html#Define-Subst" accesskey="u" rel="up">Define Subst</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="define_005fsubst-Example"></a>
+<h4 class="subsection">17.21.1 <code>define_subst</code> Example</h4>
+<a name="index-define_005fsubst-1"></a>
+
+<p>To illustrate how <code>define_subst</code> works, let us examine a simple
+template transformation.
+</p>
+<p>Suppose there are two kinds of instructions: one that touches flags and
+the other that does not. The instructions of the second type could be
+generated with the following <code>define_subst</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_subst &quot;add_clobber_subst&quot;
+ [(set (match_operand:SI 0 &quot;&quot; &quot;&quot;)
+ (match_operand:SI 1 &quot;&quot; &quot;&quot;))]
+ &quot;&quot;
+ [(set (match_dup 0)
+ (match_dup 1))
+ (clobber (reg:CC FLAGS_REG))])
+</pre></div>
+
+<p>This <code>define_subst</code> can be applied to any RTL pattern containing
+<code>set</code> of mode SI and generates a copy with clobber when it is
+applied.
+</p>
+<p>Assume there is an RTL template for a <code>max</code> instruction to be used
+in <code>define_subst</code> mentioned above:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;maxsi&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (max:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;)))]
+ &quot;&quot;
+ &quot;max\t{%2, %1, %0|%0, %1, %2}&quot;
+ [&hellip;])
+</pre></div>
+
+<p>To mark the RTL template for <code>define_subst</code> application,
+subst-attributes are used. They should be declared in advance:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_subst_attr &quot;add_clobber_name&quot; &quot;add_clobber_subst&quot; &quot;_noclobber&quot; &quot;_clobber&quot;)
+</pre></div>
+
+<p>Here &lsquo;<samp>add_clobber_name</samp>&rsquo; is the attribute name,
+&lsquo;<samp>add_clobber_subst</samp>&rsquo; is the name of the corresponding
+<code>define_subst</code>, the third argument (&lsquo;<samp>_noclobber</samp>&rsquo;) is the
+attribute value that would be substituted into the unchanged version of
+the source RTL template, and the last argument (&lsquo;<samp>_clobber</samp>&rsquo;) is the
+value that would be substituted into the second, transformed,
+version of the RTL template.
+</p>
+<p>Once the subst-attribute has been defined, it should be used in RTL
+templates which need to be processed by the <code>define_subst</code>. So,
+the original RTL template should be changed:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;maxsi&lt;add_clobber_name&gt;&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (max:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;)))]
+ &quot;&quot;
+ &quot;max\t{%2, %1, %0|%0, %1, %2}&quot;
+ [&hellip;])
+</pre></div>
+
+<p>The result of the <code>define_subst</code> usage would look like the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;maxsi_noclobber&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (max:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;)))]
+ &quot;&quot;
+ &quot;max\t{%2, %1, %0|%0, %1, %2}&quot;
+ [&hellip;])
+(define_insn &quot;maxsi_clobber&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (max:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;)))
+ (clobber (reg:CC FLAGS_REG))]
+ &quot;&quot;
+ &quot;max\t{%2, %1, %0|%0, %1, %2}&quot;
+ [&hellip;])
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" accesskey="n" rel="next">Define Subst Pattern Matching</a>, Up: <a href="Define-Subst.html#Define-Subst" accesskey="u" rel="up">Define Subst</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Define-Subst-Output-Template.html b/share/doc/gccint/Define-Subst-Output-Template.html
new file mode 100644
index 0000000..c31e19d
--- /dev/null
+++ b/share/doc/gccint/Define-Subst-Output-Template.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Define Subst Output Template</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Define Subst Output Template">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Define Subst Output Template">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Define-Subst.html#Define-Subst" rel="up" title="Define Subst">
+<link href="Constant-Definitions.html#Constant-Definitions" rel="next" title="Constant Definitions">
+<link href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" rel="previous" title="Define Subst Pattern Matching">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Define-Subst-Output-Template"></a>
+<div class="header">
+<p>
+Previous: <a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" accesskey="p" rel="previous">Define Subst Pattern Matching</a>, Up: <a href="Define-Subst.html#Define-Subst" accesskey="u" rel="up">Define Subst</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Generation-of-output-template-in-define_005fsubst"></a>
+<h4 class="subsection">17.21.3 Generation of output template in <code>define_subst</code></h4>
+<a name="index-define_005fsubst-3"></a>
+
+<p>If all necessary checks for <code>define_subst</code> application pass, a new
+RTL-pattern, based on the output-template, is created to replace the old
+template. Like in input-patterns, meanings of some RTL expressions are
+changed when they are used in output-patterns of a <code>define_subst</code>.
+Thus, <code>match_dup</code> is used for copying the whole expression from the
+original pattern, which matched corresponding <code>match_operand</code> from
+the input pattern.
+</p>
+<p><code>match_dup N</code> is used in the output template to be replaced with
+the expression from the original pattern, which matched
+<code>match_operand N</code> from the input pattern. As a consequence,
+<code>match_dup</code> cannot be used to point to <code>match_operand</code>s from
+the output pattern, it should always refer to a <code>match_operand</code>
+from the input pattern. If a <code>match_dup N</code> occurs more than once
+in the output template, its first occurrence is replaced with the
+expression from the original pattern, and the subsequent expressions
+are replaced with <code>match_dup N</code>, i.e., a reference to the first
+expression.
+</p>
+<p>In the output template one can refer to the expressions from the
+original pattern and create new ones. For instance, some operands could
+be added by means of standard <code>match_operand</code>.
+</p>
+<p>After replacing <code>match_dup</code> with some RTL-subtree from the original
+pattern, it could happen that several <code>match_operand</code>s in the
+output pattern have the same indexes. It is unknown, how many and what
+indexes would be used in the expression which would replace
+<code>match_dup</code>, so such conflicts in indexes are inevitable. To
+overcome this issue, <code>match_operands</code> and <code>match_operators</code>,
+which were introduced into the output pattern, are renumerated when all
+<code>match_dup</code>s are replaced.
+</p>
+<p>Number of alternatives in <code>match_operand</code>s introduced into the
+output template <code>M</code> could differ from the number of alternatives in
+the original pattern <code>N</code>, so in the resultant pattern there would
+be <code>N*M</code> alternatives. Thus, constraints from the original pattern
+would be duplicated <code>N</code> times, constraints from the output pattern
+would be duplicated <code>M</code> times, producing all possible combinations.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" accesskey="p" rel="previous">Define Subst Pattern Matching</a>, Up: <a href="Define-Subst.html#Define-Subst" accesskey="u" rel="up">Define Subst</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Define-Subst-Pattern-Matching.html b/share/doc/gccint/Define-Subst-Pattern-Matching.html
new file mode 100644
index 0000000..7b7b34f
--- /dev/null
+++ b/share/doc/gccint/Define-Subst-Pattern-Matching.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Define Subst Pattern Matching</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Define Subst Pattern Matching">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Define Subst Pattern Matching">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Define-Subst.html#Define-Subst" rel="up" title="Define Subst">
+<link href="Define-Subst-Output-Template.html#Define-Subst-Output-Template" rel="next" title="Define Subst Output Template">
+<link href="Define-Subst-Example.html#Define-Subst-Example" rel="previous" title="Define Subst Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Define-Subst-Pattern-Matching"></a>
+<div class="header">
+<p>
+Next: <a href="Define-Subst-Output-Template.html#Define-Subst-Output-Template" accesskey="n" rel="next">Define Subst Output Template</a>, Previous: <a href="Define-Subst-Example.html#Define-Subst-Example" accesskey="p" rel="previous">Define Subst Example</a>, Up: <a href="Define-Subst.html#Define-Subst" accesskey="u" rel="up">Define Subst</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Pattern-Matching-in-define_005fsubst"></a>
+<h4 class="subsection">17.21.2 Pattern Matching in <code>define_subst</code></h4>
+<a name="index-define_005fsubst-2"></a>
+
+<p>All expressions, allowed in <code>define_insn</code> or <code>define_expand</code>,
+are allowed in the input-template of <code>define_subst</code>, except
+<code>match_par_dup</code>, <code>match_scratch</code>, <code>match_parallel</code>. The
+meanings of expressions in the input-template were changed:
+</p>
+<p><code>match_operand</code> matches any expression (possibly, a subtree in
+RTL-template), if modes of the <code>match_operand</code> and this expression
+are the same, or mode of the <code>match_operand</code> is <code>VOIDmode</code>, or
+this expression is <code>match_dup</code>, <code>match_op_dup</code>. If the
+expression is <code>match_operand</code> too, and predicate of
+<code>match_operand</code> from the input pattern is not empty, then the
+predicates are compared. That can be used for more accurate filtering
+of accepted RTL-templates.
+</p>
+<p><code>match_operator</code> matches common operators (like <code>plus</code>,
+<code>minus</code>), <code>unspec</code>, <code>unspec_volatile</code> operators and
+<code>match_operator</code>s from the original pattern if the modes match and
+<code>match_operator</code> from the input pattern has the same number of
+operands as the operator from the original pattern.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Define-Subst.html b/share/doc/gccint/Define-Subst.html
new file mode 100644
index 0000000..5ad0fc4
--- /dev/null
+++ b/share/doc/gccint/Define-Subst.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Define Subst</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Define Subst">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Define Subst">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Define-Subst-Example.html#Define-Subst-Example" rel="next" title="Define Subst Example">
+<link href="Conditional-Execution.html#Conditional-Execution" rel="previous" title="Conditional Execution">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Define-Subst"></a>
+<div class="header">
+<p>
+Next: <a href="Constant-Definitions.html#Constant-Definitions" accesskey="n" rel="next">Constant Definitions</a>, Previous: <a href="Conditional-Execution.html#Conditional-Execution" accesskey="p" rel="previous">Conditional Execution</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Templates-Transformations"></a>
+<h3 class="section">17.21 RTL Templates Transformations</h3>
+<a name="index-define_005fsubst"></a>
+
+<p>For some hardware architectures there are common cases when the RTL
+templates for the instructions can be derived from the other RTL
+templates using simple transformations. E.g., <samp>i386.md</samp> contains
+an RTL template for the ordinary <code>sub</code> instruction&mdash;
+<code>*subsi_1</code>, and for the <code>sub</code> instruction with subsequent
+zero-extension&mdash;<code>*subsi_1_zext</code>. Such cases can be easily
+implemented by a single meta-template capable of generating a modified
+case based on the initial one:
+</p>
+<a name="index-define_005fsubst-4"></a>
+<div class="smallexample">
+<pre class="smallexample">(define_subst &quot;<var>name</var>&quot;
+ [<var>input-template</var>]
+ &quot;<var>condition</var>&quot;
+ [<var>output-template</var>])
+</pre></div>
+<p><var>input-template</var> is a pattern describing the source RTL template,
+which will be transformed.
+</p>
+<p><var>condition</var> is a C expression that is conjunct with the condition
+from the input-template to generate a condition to be used in the
+output-template.
+</p>
+<p><var>output-template</var> is a pattern that will be used in the resulting
+template.
+</p>
+<p><code>define_subst</code> mechanism is tightly coupled with the notion of the
+subst attribute (see <a href="Subst-Iterators.html#Subst-Iterators">Subst Iterators</a>). The use of
+<code>define_subst</code> is triggered by a reference to a subst attribute in
+the transforming RTL template. This reference initiates duplication of
+the source RTL template and substitution of the attributes with their
+values. The source RTL template is left unchanged, while the copy is
+transformed by <code>define_subst</code>. This transformation can fail in the
+case when the source RTL template is not matched against the
+input-template of the <code>define_subst</code>. In such case the copy is
+deleted.
+</p>
+<p><code>define_subst</code> can be used only in <code>define_insn</code> and
+<code>define_expand</code>, it cannot be used in other expressions (e.g. in
+<code>define_insn_and_split</code>).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Define-Subst-Example.html#Define-Subst-Example" accesskey="1">Define Subst Example</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Example of <code>define_subst</code> work.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching" accesskey="2">Define Subst Pattern Matching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Process of template comparison.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Define-Subst-Output-Template.html#Define-Subst-Output-Template" accesskey="3">Define Subst Output Template</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generation of output template.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Constant-Definitions.html#Constant-Definitions" accesskey="n" rel="next">Constant Definitions</a>, Previous: <a href="Conditional-Execution.html#Conditional-Execution" accesskey="p" rel="previous">Conditional Execution</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Defining-Attributes.html b/share/doc/gccint/Defining-Attributes.html
new file mode 100644
index 0000000..b8b9edb
--- /dev/null
+++ b/share/doc/gccint/Defining-Attributes.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Defining Attributes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Defining Attributes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Defining Attributes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Expressions.html#Expressions" rel="next" title="Expressions">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="previous" title="Insn Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Defining-Attributes"></a>
+<div class="header">
+<p>
+Next: <a href="Expressions.html#Expressions" accesskey="n" rel="next">Expressions</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Attributes-and-their-Values"></a>
+<h4 class="subsection">17.19.1 Defining Attributes and their Values</h4>
+<a name="index-defining-attributes-and-their-values"></a>
+<a name="index-attributes_002c-defining"></a>
+
+<a name="index-define_005fattr"></a>
+<p>The <code>define_attr</code> expression is used to define each attribute required
+by the target machine. It looks like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr <var>name</var> <var>list-of-values</var> <var>default</var>)
+</pre></div>
+
+<p><var>name</var> is a string specifying the name of the attribute being
+defined. Some attributes are used in a special way by the rest of the
+compiler. The <code>enabled</code> attribute can be used to conditionally
+enable or disable insn alternatives (see <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives">Disable Insn Alternatives</a>). The <code>predicable</code> attribute, together with a
+suitable <code>define_cond_exec</code> (see <a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a>), can
+be used to automatically generate conditional variants of instruction
+patterns. The <code>mnemonic</code> attribute can be used to check for the
+instruction mnemonic (see <a href="Mnemonic-Attribute.html#Mnemonic-Attribute">Mnemonic Attribute</a>). The compiler
+internally uses the names <code>ce_enabled</code> and <code>nonce_enabled</code>,
+so they should not be used elsewhere as alternative names.
+</p>
+<p><var>list-of-values</var> is either a string that specifies a comma-separated
+list of values that can be assigned to the attribute, or a null string to
+indicate that the attribute takes numeric values.
+</p>
+<p><var>default</var> is an attribute expression that gives the value of this
+attribute for insns that match patterns whose definition does not include
+an explicit value for this attribute. See <a href="Attr-Example.html#Attr-Example">Attr Example</a>, for more
+information on the handling of defaults. See <a href="Constant-Attributes.html#Constant-Attributes">Constant Attributes</a>,
+for information on attributes that do not depend on any particular insn.
+</p>
+<a name="index-insn_002dattr_002eh"></a>
+<p>For each defined attribute, a number of definitions are written to the
+<samp>insn-attr.h</samp> file. For cases where an explicit set of values is
+specified for an attribute, the following are defined:
+</p>
+<ul>
+<li> A &lsquo;<samp>#define</samp>&rsquo; is written for the symbol &lsquo;<samp>HAVE_ATTR_<var>name</var></samp>&rsquo;.
+
+</li><li> An enumerated class is defined for &lsquo;<samp>attr_<var>name</var></samp>&rsquo; with
+elements of the form &lsquo;<samp><var>upper-name</var>_<var>upper-value</var></samp>&rsquo; where
+the attribute name and value are first converted to uppercase.
+
+</li><li> A function &lsquo;<samp>get_attr_<var>name</var></samp>&rsquo; is defined that is passed an insn and
+returns the attribute value for that insn.
+</li></ul>
+
+<p>For example, if the following is present in the <samp>md</samp> file:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;type&quot; &quot;branch,fp,load,store,arith&quot; &hellip;)
+</pre></div>
+
+<p>the following lines will be written to the file <samp>insn-attr.h</samp>.
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define HAVE_ATTR_type 1
+enum attr_type {TYPE_BRANCH, TYPE_FP, TYPE_LOAD,
+ TYPE_STORE, TYPE_ARITH};
+extern enum attr_type get_attr_type ();
+</pre></div>
+
+<p>If the attribute takes numeric values, no <code>enum</code> type will be
+defined and the function to obtain the attribute&rsquo;s value will return
+<code>int</code>.
+</p>
+<p>There are attributes which are tied to a specific meaning. These
+attributes are not free to use for other purposes:
+</p>
+<dl compact="compact">
+<dt><code>length</code></dt>
+<dd><p>The <code>length</code> attribute is used to calculate the length of emitted
+code chunks. This is especially important when verifying branch
+distances. See <a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a>.
+</p>
+</dd>
+<dt><code>enabled</code></dt>
+<dd><p>The <code>enabled</code> attribute can be defined to prevent certain
+alternatives of an insn definition from being used during code
+generation. See <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives">Disable Insn Alternatives</a>.
+</p>
+</dd>
+<dt><code>mnemonic</code></dt>
+<dd><p>The <code>mnemonic</code> attribute can be defined to implement instruction
+specific checks in e.g. the pipeline description.
+See <a href="Mnemonic-Attribute.html#Mnemonic-Attribute">Mnemonic Attribute</a>.
+</p></dd>
+</dl>
+
+<p>For each of these special attributes, the corresponding
+&lsquo;<samp>HAVE_ATTR_<var>name</var></samp>&rsquo; &lsquo;<samp>#define</samp>&rsquo; is also written when the
+attribute is not defined; in that case, it is defined as &lsquo;<samp>0</samp>&rsquo;.
+</p>
+<a name="index-define_005fenum_005fattr"></a>
+<a name="define_005fenum_005fattr"></a><p>Another way of defining an attribute is to use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_enum_attr &quot;<var>attr</var>&quot; &quot;<var>enum</var>&quot; <var>default</var>)
+</pre></div>
+
+<p>This works in just the same way as <code>define_attr</code>, except that
+the list of values is taken from a separate enumeration called
+<var>enum</var> (see <a href="Constant-Definitions.html#define_005fenum">define_enum</a>). This form allows you to use
+the same list of values for several attributes without having to
+repeat the list each time. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_enum &quot;processor&quot; [
+ model_a
+ model_b
+ &hellip;
+])
+(define_enum_attr &quot;arch&quot; &quot;processor&quot;
+ (const (symbol_ref &quot;target_arch&quot;)))
+(define_enum_attr &quot;tune&quot; &quot;processor&quot;
+ (const (symbol_ref &quot;target_tune&quot;)))
+</pre></div>
+
+<p>defines the same attributes as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;arch&quot; &quot;model_a,model_b,&hellip;&quot;
+ (const (symbol_ref &quot;target_arch&quot;)))
+(define_attr &quot;tune&quot; &quot;model_a,model_b,&hellip;&quot;
+ (const (symbol_ref &quot;target_tune&quot;)))
+</pre></div>
+
+<p>but without duplicating the processor list. The second example defines two
+separate C enums (<code>attr_arch</code> and <code>attr_tune</code>) whereas the first
+defines a single C enum (<code>processor</code>).
+</p><hr>
+<div class="header">
+<p>
+Next: <a href="Expressions.html#Expressions" accesskey="n" rel="next">Expressions</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Defining-Mode-Iterators.html b/share/doc/gccint/Defining-Mode-Iterators.html
new file mode 100644
index 0000000..e4215c2
--- /dev/null
+++ b/share/doc/gccint/Defining-Mode-Iterators.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Defining Mode Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Defining Mode Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Defining Mode Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Mode-Iterators.html#Mode-Iterators" rel="up" title="Mode Iterators">
+<link href="Substitutions.html#Substitutions" rel="next" title="Substitutions">
+<link href="Mode-Iterators.html#Mode-Iterators" rel="previous" title="Mode Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Defining-Mode-Iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Substitutions.html#Substitutions" accesskey="n" rel="next">Substitutions</a>, Up: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="u" rel="up">Mode Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Mode-Iterators-1"></a>
+<h4 class="subsubsection">17.23.1.1 Defining Mode Iterators</h4>
+<a name="index-define_005fmode_005fiterator"></a>
+
+<p>The syntax for defining a mode iterator is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator <var>name</var> [(<var>mode1</var> &quot;<var>cond1</var>&quot;) &hellip; (<var>moden</var> &quot;<var>condn</var>&quot;)])
+</pre></div>
+
+<p>This allows subsequent <samp>.md</samp> file constructs to use the mode suffix
+<code>:<var>name</var></code>. Every construct that does so will be expanded
+<var>n</var> times, once with every use of <code>:<var>name</var></code> replaced by
+<code>:<var>mode1</var></code>, once with every use replaced by <code>:<var>mode2</var></code>,
+and so on. In the expansion for a particular <var>modei</var>, every
+C condition will also require that <var>condi</var> be true.
+</p>
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator P [(SI &quot;Pmode == SImode&quot;) (DI &quot;Pmode == DImode&quot;)])
+</pre></div>
+
+<p>defines a new mode suffix <code>:P</code>. Every construct that uses
+<code>:P</code> will be expanded twice, once with every <code>:P</code> replaced
+by <code>:SI</code> and once with every <code>:P</code> replaced by <code>:DI</code>.
+The <code>:SI</code> version will only apply if <code>Pmode == SImode</code> and
+the <code>:DI</code> version will only apply if <code>Pmode == DImode</code>.
+</p>
+<p>As with other <samp>.md</samp> conditions, an empty string is treated
+as &ldquo;always true&rdquo;. <code>(<var>mode</var> &quot;&quot;)</code> can also be abbreviated
+to <code><var>mode</var></code>. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator GPR [SI (DI &quot;TARGET_64BIT&quot;)])
+</pre></div>
+
+<p>means that the <code>:DI</code> expansion only applies if <code>TARGET_64BIT</code>
+but that the <code>:SI</code> expansion has no such constraint.
+</p>
+<p>Iterators are applied in the order they are defined. This can be
+significant if two iterators are used in a construct that requires
+substitutions. See <a href="Substitutions.html#Substitutions">Substitutions</a>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Defining-Predicates.html b/share/doc/gccint/Defining-Predicates.html
new file mode 100644
index 0000000..134fb3c
--- /dev/null
+++ b/share/doc/gccint/Defining-Predicates.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Defining Predicates</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Defining Predicates">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Defining Predicates">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Predicates.html#Predicates" rel="up" title="Predicates">
+<link href="Constraints.html#Constraints" rel="next" title="Constraints">
+<link href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates" rel="previous" title="Machine-Independent Predicates">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Defining-Predicates"></a>
+<div class="header">
+<p>
+Previous: <a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates" accesskey="p" rel="previous">Machine-Independent Predicates</a>, Up: <a href="Predicates.html#Predicates" accesskey="u" rel="up">Predicates</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Machine_002dSpecific-Predicates"></a>
+<h4 class="subsection">17.7.2 Defining Machine-Specific Predicates</h4>
+<a name="index-defining-predicates"></a>
+<a name="index-define_005fpredicate"></a>
+<a name="index-define_005fspecial_005fpredicate"></a>
+
+<p>Many machines have requirements for their operands that cannot be
+expressed precisely using the generic predicates. You can define
+additional predicates using <code>define_predicate</code> and
+<code>define_special_predicate</code> expressions. These expressions have
+three operands:
+</p>
+<ul>
+<li> The name of the predicate, as it will be referred to in
+<code>match_operand</code> or <code>match_operator</code> expressions.
+
+</li><li> An RTL expression which evaluates to true if the predicate allows the
+operand <var>op</var>, false if it does not. This expression can only use
+the following RTL codes:
+
+<dl compact="compact">
+<dt><code>MATCH_OPERAND</code></dt>
+<dd><p>When written inside a predicate expression, a <code>MATCH_OPERAND</code>
+expression evaluates to true if the predicate it names would allow
+<var>op</var>. The operand number and constraint are ignored. Due to
+limitations in <code>genrecog</code>, you can only refer to generic
+predicates and predicates that have already been defined.
+</p>
+</dd>
+<dt><code>MATCH_CODE</code></dt>
+<dd><p>This expression evaluates to true if <var>op</var> or a specified
+subexpression of <var>op</var> has one of a given list of RTX codes.
+</p>
+<p>The first operand of this expression is a string constant containing a
+comma-separated list of RTX code names (in lower case). These are the
+codes for which the <code>MATCH_CODE</code> will be true.
+</p>
+<p>The second operand is a string constant which indicates what
+subexpression of <var>op</var> to examine. If it is absent or the empty
+string, <var>op</var> itself is examined. Otherwise, the string constant
+must be a sequence of digits and/or lowercase letters. Each character
+indicates a subexpression to extract from the current expression; for
+the first character this is <var>op</var>, for the second and subsequent
+characters it is the result of the previous character. A digit
+<var>n</var> extracts &lsquo;<samp>XEXP&nbsp;(<var>e</var>,&nbsp;<var>n</var>)<!-- /@w --></samp>&rsquo;; a letter <var>l</var>
+extracts &lsquo;<samp>XVECEXP&nbsp;(<var>e</var>,&nbsp;0,&nbsp;<var>n</var>)<!-- /@w --></samp>&rsquo; where <var>n</var> is the
+alphabetic ordinal of <var>l</var> (0 for &lsquo;a&rsquo;, 1 for &rsquo;b&rsquo;, and so on). The
+<code>MATCH_CODE</code> then examines the RTX code of the subexpression
+extracted by the complete string. It is not possible to extract
+components of an <code>rtvec</code> that is not at position 0 within its RTX
+object.
+</p>
+</dd>
+<dt><code>MATCH_TEST</code></dt>
+<dd><p>This expression has one operand, a string constant containing a C
+expression. The predicate&rsquo;s arguments, <var>op</var> and <var>mode</var>, are
+available with those names in the C expression. The <code>MATCH_TEST</code>
+evaluates to true if the C expression evaluates to a nonzero value.
+<code>MATCH_TEST</code> expressions must not have side effects.
+</p>
+</dd>
+<dt><code>AND</code></dt>
+<dt><code>IOR</code></dt>
+<dt><code>NOT</code></dt>
+<dt><code>IF_THEN_ELSE</code></dt>
+<dd><p>The basic &lsquo;<samp>MATCH_</samp>&rsquo; expressions can be combined using these
+logical operators, which have the semantics of the C operators
+&lsquo;<samp>&amp;&amp;</samp>&rsquo;, &lsquo;<samp>||</samp>&rsquo;, &lsquo;<samp>!</samp>&rsquo;, and &lsquo;<samp>?&nbsp;:<!-- /@w --></samp>&rsquo; respectively. As
+in Common Lisp, you may give an <code>AND</code> or <code>IOR</code> expression an
+arbitrary number of arguments; this has exactly the same effect as
+writing a chain of two-argument <code>AND</code> or <code>IOR</code> expressions.
+</p></dd>
+</dl>
+
+</li><li> An optional block of C code, which should execute
+&lsquo;<samp>return&nbsp;true<!-- /@w --></samp>&rsquo; if the predicate is found to match and
+&lsquo;<samp>return&nbsp;false<!-- /@w --></samp>&rsquo; if it does not. It must not have any side
+effects. The predicate arguments, <var>op</var> and <var>mode</var>, are
+available with those names.
+
+<p>If a code block is present in a predicate definition, then the RTL
+expression must evaluate to true <em>and</em> the code block must
+execute &lsquo;<samp>return&nbsp;true<!-- /@w --></samp>&rsquo; for the predicate to allow the operand.
+The RTL expression is evaluated first; do not re-check anything in the
+code block that was checked in the RTL expression.
+</p></li></ul>
+
+<p>The program <code>genrecog</code> scans <code>define_predicate</code> and
+<code>define_special_predicate</code> expressions to determine which RTX
+codes are possibly allowed. You should always make this explicit in
+the RTL predicate expression, using <code>MATCH_OPERAND</code> and
+<code>MATCH_CODE</code>.
+</p>
+<p>Here is an example of a simple predicate definition, from the IA64
+machine description:
+</p>
+<div class="smallexample">
+<pre class="smallexample">;; <span class="roman">True if <var>op</var> is a <code>SYMBOL_REF</code> which refers to the sdata section.</span>
+(define_predicate &quot;small_addr_symbolic_operand&quot;
+ (and (match_code &quot;symbol_ref&quot;)
+ (match_test &quot;SYMBOL_REF_SMALL_ADDR_P (op)&quot;)))
+</pre></div>
+
+<p>And here is another, showing the use of the C block.
+</p>
+<div class="smallexample">
+<pre class="smallexample">;; <span class="roman">True if <var>op</var> is a register operand that is (or could be) a GR reg.</span>
+(define_predicate &quot;gr_register_operand&quot;
+ (match_operand 0 &quot;register_operand&quot;)
+{
+ unsigned int regno;
+ if (GET_CODE (op) == SUBREG)
+ op = SUBREG_REG (op);
+
+ regno = REGNO (op);
+ return (regno &gt;= FIRST_PSEUDO_REGISTER || GENERAL_REGNO_P (regno));
+})
+</pre></div>
+
+<p>Predicates written with <code>define_predicate</code> automatically include
+a test that <var>mode</var> is <code>VOIDmode</code>, or <var>op</var> has the same
+mode as <var>mode</var>, or <var>op</var> is a <code>CONST_INT</code> or
+<code>CONST_DOUBLE</code>. They do <em>not</em> check specifically for
+integer <code>CONST_DOUBLE</code>, nor do they test that the value of either
+kind of constant fits in the requested mode. This is because
+target-specific predicates that take constants usually have to do more
+stringent value checks anyway. If you need the exact same treatment
+of <code>CONST_INT</code> or <code>CONST_DOUBLE</code> that the generic predicates
+provide, use a <code>MATCH_OPERAND</code> subexpression to call
+<code>const_int_operand</code>, <code>const_double_operand</code>, or
+<code>immediate_operand</code>.
+</p>
+<p>Predicates written with <code>define_special_predicate</code> do not get any
+automatic mode checks, and are treated as having special mode handling
+by <code>genrecog</code>.
+</p>
+<p>The program <code>genpreds</code> is responsible for generating code to
+test predicates. It also writes a header file containing function
+declarations for all machine-specific predicates. It is not necessary
+to declare these predicates in <samp><var>cpu</var>-protos.h</samp>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates" accesskey="p" rel="previous">Machine-Independent Predicates</a>, Up: <a href="Predicates.html#Predicates" accesskey="u" rel="up">Predicates</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Delay-Slots.html b/share/doc/gccint/Delay-Slots.html
new file mode 100644
index 0000000..4a0e59c
--- /dev/null
+++ b/share/doc/gccint/Delay-Slots.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Delay Slots</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Delay Slots">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Delay Slots">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Processor-pipeline-description.html#Processor-pipeline-description" rel="next" title="Processor pipeline description">
+<link href="Mnemonic-Attribute.html#Mnemonic-Attribute" rel="previous" title="Mnemonic Attribute">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Delay-Slots"></a>
+<div class="header">
+<p>
+Next: <a href="Processor-pipeline-description.html#Processor-pipeline-description" accesskey="n" rel="next">Processor pipeline description</a>, Previous: <a href="Mnemonic-Attribute.html#Mnemonic-Attribute" accesskey="p" rel="previous">Mnemonic Attribute</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Delay-Slot-Scheduling"></a>
+<h4 class="subsection">17.19.8 Delay Slot Scheduling</h4>
+<a name="index-delay-slots_002c-defining"></a>
+
+<p>The insn attribute mechanism can be used to specify the requirements for
+delay slots, if any, on a target machine. An instruction is said to
+require a <em>delay slot</em> if some instructions that are physically
+after the instruction are executed as if they were located before it.
+Classic examples are branch and call instructions, which often execute
+the following instruction before the branch or call is performed.
+</p>
+<p>On some machines, conditional branch instructions can optionally
+<em>annul</em> instructions in the delay slot. This means that the
+instruction will not be executed for certain branch outcomes. Both
+instructions that annul if the branch is true and instructions that
+annul if the branch is false are supported.
+</p>
+<p>Delay slot scheduling differs from instruction scheduling in that
+determining whether an instruction needs a delay slot is dependent only
+on the type of instruction being generated, not on data flow between the
+instructions. See the next section for a discussion of data-dependent
+instruction scheduling.
+</p>
+<a name="index-define_005fdelay"></a>
+<p>The requirement of an insn needing one or more delay slots is indicated
+via the <code>define_delay</code> expression. It has the following form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_delay <var>test</var>
+ [<var>delay-1</var> <var>annul-true-1</var> <var>annul-false-1</var>
+ <var>delay-2</var> <var>annul-true-2</var> <var>annul-false-2</var>
+ &hellip;])
+</pre></div>
+
+<p><var>test</var> is an attribute test that indicates whether this
+<code>define_delay</code> applies to a particular insn. If so, the number of
+required delay slots is determined by the length of the vector specified
+as the second argument. An insn placed in delay slot <var>n</var> must
+satisfy attribute test <var>delay-n</var>. <var>annul-true-n</var> is an
+attribute test that specifies which insns may be annulled if the branch
+is true. Similarly, <var>annul-false-n</var> specifies which insns in the
+delay slot may be annulled if the branch is false. If annulling is not
+supported for that delay slot, <code>(nil)</code> should be coded.
+</p>
+<p>For example, in the common case where branch and call insns require
+a single delay slot, which may contain any insn other than a branch or
+call, the following would be placed in the <samp>md</samp> file:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_delay (eq_attr &quot;type&quot; &quot;branch,call&quot;)
+ [(eq_attr &quot;type&quot; &quot;!branch,call&quot;) (nil) (nil)])
+</pre></div>
+
+<p>Multiple <code>define_delay</code> expressions may be specified. In this
+case, each such expression specifies different delay slot requirements
+and there must be no insn for which tests in two <code>define_delay</code>
+expressions are both true.
+</p>
+<p>For example, if we have a machine that requires one delay slot for branches
+but two for calls, no delay slot can contain a branch or call insn,
+and any valid insn in the delay slot for the branch can be annulled if the
+branch is true, we might represent this as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_delay (eq_attr &quot;type&quot; &quot;branch&quot;)
+ [(eq_attr &quot;type&quot; &quot;!branch,call&quot;)
+ (eq_attr &quot;type&quot; &quot;!branch,call&quot;)
+ (nil)])
+
+(define_delay (eq_attr &quot;type&quot; &quot;call&quot;)
+ [(eq_attr &quot;type&quot; &quot;!branch,call&quot;) (nil) (nil)
+ (eq_attr &quot;type&quot; &quot;!branch,call&quot;) (nil) (nil)])
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Processor-pipeline-description.html#Processor-pipeline-description" accesskey="n" rel="next">Processor pipeline description</a>, Previous: <a href="Mnemonic-Attribute.html#Mnemonic-Attribute" accesskey="p" rel="previous">Mnemonic Attribute</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dependency-analysis.html b/share/doc/gccint/Dependency-analysis.html
new file mode 100644
index 0000000..1e9fb9d
--- /dev/null
+++ b/share/doc/gccint/Dependency-analysis.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dependency analysis</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dependency analysis">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dependency analysis">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Machine-Desc.html#Machine-Desc" rel="next" title="Machine Desc">
+<link href="Number-of-iterations.html#Number-of-iterations" rel="previous" title="Number of iterations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dependency-analysis"></a>
+<div class="header">
+<p>
+Previous: <a href="Number-of-iterations.html#Number-of-iterations" accesskey="p" rel="previous">Number of iterations</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Data-Dependency-Analysis"></a>
+<h3 class="section">16.8 Data Dependency Analysis</h3>
+<a name="index-Data-Dependency-Analysis"></a>
+
+<p>The code for the data dependence analysis can be found in
+<samp>tree-data-ref.cc</samp> and its interface and data structures are
+described in <samp>tree-data-ref.h</samp>. The function that computes the
+data dependences for all the array and pointer references for a given
+loop is <code>compute_data_dependences_for_loop</code>. This function is
+currently used by the linear loop transform and the vectorization
+passes. Before calling this function, one has to allocate two vectors:
+a first vector will contain the set of data references that are
+contained in the analyzed loop body, and the second vector will contain
+the dependence relations between the data references. Thus if the
+vector of data references is of size <code>n</code>, the vector containing the
+dependence relations will contain <code>n*n</code> elements. However if the
+analyzed loop contains side effects, such as calls that potentially can
+interfere with the data references in the current analyzed loop, the
+analysis stops while scanning the loop body for data references, and
+inserts a single <code>chrec_dont_know</code> in the dependence relation
+array.
+</p>
+<p>The data references are discovered in a particular order during the
+scanning of the loop body: the loop body is analyzed in execution order,
+and the data references of each statement are pushed at the end of the
+data reference array. Two data references syntactically occur in the
+program in the same order as in the array of data references. This
+syntactic order is important in some classical data dependence tests,
+and mapping this order to the elements of this array avoids costly
+queries to the loop body representation.
+</p>
+<p>Three types of data references are currently handled: ARRAY_REF,
+INDIRECT_REF and COMPONENT_REF. The data structure for the data reference
+is <code>data_reference</code>, where <code>data_reference_p</code> is a name of a
+pointer to the data reference structure. The structure contains the
+following elements:
+</p>
+<ul>
+<li> <code>base_object_info</code>: Provides information about the base object
+of the data reference and its access functions. These access functions
+represent the evolution of the data reference in the loop relative to
+its base, in keeping with the classical meaning of the data reference
+access function for the support of arrays. For example, for a reference
+<code>a.b[i][j]</code>, the base object is <code>a.b</code> and the access functions,
+one for each array subscript, are:
+<code>{i_init, + i_step}_1, {j_init, +, j_step}_2</code>.
+
+</li><li> <code>first_location_in_loop</code>: Provides information about the first
+location accessed by the data reference in the loop and about the access
+function used to represent evolution relative to this location. This data
+is used to support pointers, and is not used for arrays (for which we
+have base objects). Pointer accesses are represented as a one-dimensional
+access that starts from the first location accessed in the loop. For
+example:
+
+<div class="smallexample">
+<pre class="smallexample"> for1 i
+ for2 j
+ *((int *)p + i + j) = a[i][j];
+</pre></div>
+
+<p>The access function of the pointer access is <code>{0, + 4B}_for2</code>
+relative to <code>p + i</code>. The access functions of the array are
+<code>{i_init, + i_step}_for1</code> and <code>{j_init, +, j_step}_for2</code>
+relative to <code>a</code>.
+</p>
+<p>Usually, the object the pointer refers to is either unknown, or we cannot
+prove that the access is confined to the boundaries of a certain object.
+</p>
+<p>Two data references can be compared only if at least one of these two
+representations has all its fields filled for both data references.
+</p>
+<p>The current strategy for data dependence tests is as follows:
+If both <code>a</code> and <code>b</code> are represented as arrays, compare
+<code>a.base_object</code> and <code>b.base_object</code>;
+if they are equal, apply dependence tests (use access functions based on
+base_objects).
+Else if both <code>a</code> and <code>b</code> are represented as pointers, compare
+<code>a.first_location</code> and <code>b.first_location</code>;
+if they are equal, apply dependence tests (use access functions based on
+first location).
+However, if <code>a</code> and <code>b</code> are represented differently, only try
+to prove that the bases are definitely different.
+</p>
+</li><li> Aliasing information.
+</li><li> Alignment information.
+</li></ul>
+
+<p>The structure describing the relation between two data references is
+<code>data_dependence_relation</code> and the shorter name for a pointer to
+such a structure is <code>ddr_p</code>. This structure contains:
+</p>
+<ul>
+<li> a pointer to each data reference,
+</li><li> a tree node <code>are_dependent</code> that is set to <code>chrec_known</code>
+if the analysis has proved that there is no dependence between these two
+data references, <code>chrec_dont_know</code> if the analysis was not able to
+determine any useful result and potentially there could exist a
+dependence between these data references, and <code>are_dependent</code> is
+set to <code>NULL_TREE</code> if there exist a dependence relation between the
+data references, and the description of this dependence relation is
+given in the <code>subscripts</code>, <code>dir_vects</code>, and <code>dist_vects</code>
+arrays,
+</li><li> a boolean that determines whether the dependence relation can be
+represented by a classical distance vector,
+</li><li> an array <code>subscripts</code> that contains a description of each
+subscript of the data references. Given two array accesses a
+subscript is the tuple composed of the access functions for a given
+dimension. For example, given <code>A[f1][f2][f3]</code> and
+<code>B[g1][g2][g3]</code>, there are three subscripts: <code>(f1, g1), (f2,
+g2), (f3, g3)</code>.
+</li><li> two arrays <code>dir_vects</code> and <code>dist_vects</code> that contain
+classical representations of the data dependences under the form of
+direction and distance dependence vectors,
+</li><li> an array of loops <code>loop_nest</code> that contains the loops to
+which the distance and direction vectors refer to.
+</li></ul>
+
+<p>Several functions for pretty printing the information extracted by the
+data dependence analysis are available: <code>dump_ddrs</code> prints with a
+maximum verbosity the details of a data dependence relations array,
+<code>dump_dist_dir_vectors</code> prints only the classical distance and
+direction vectors for a data dependence relations array, and
+<code>dump_data_references</code> prints the details of the data references
+contained in a data reference array.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Number-of-iterations.html#Number-of-iterations" accesskey="p" rel="previous">Number of iterations</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dependent-Patterns.html b/share/doc/gccint/Dependent-Patterns.html
new file mode 100644
index 0000000..1d55771
--- /dev/null
+++ b/share/doc/gccint/Dependent-Patterns.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dependent Patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dependent Patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dependent Patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Jump-Patterns.html#Jump-Patterns" rel="next" title="Jump Patterns">
+<link href="Pattern-Ordering.html#Pattern-Ordering" rel="previous" title="Pattern Ordering">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dependent-Patterns"></a>
+<div class="header">
+<p>
+Next: <a href="Jump-Patterns.html#Jump-Patterns" accesskey="n" rel="next">Jump Patterns</a>, Previous: <a href="Pattern-Ordering.html#Pattern-Ordering" accesskey="p" rel="previous">Pattern Ordering</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Interdependence-of-Patterns"></a>
+<h3 class="section">17.11 Interdependence of Patterns</h3>
+<a name="index-Dependent-Patterns"></a>
+<a name="index-Interdependence-of-Patterns"></a>
+
+<p>In some cases machines support instructions identical except for the
+machine mode of one or more operands. For example, there may be
+&ldquo;sign-extend halfword&rdquo; and &ldquo;sign-extend byte&rdquo; instructions whose
+patterns are
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set (match_operand:SI 0 &hellip;)
+ (extend:SI (match_operand:HI 1 &hellip;)))
+
+(set (match_operand:SI 0 &hellip;)
+ (extend:SI (match_operand:QI 1 &hellip;)))
+</pre></div>
+
+<p>Constant integers do not specify a machine mode, so an instruction to
+extend a constant value could match either pattern. The pattern it
+actually will match is the one that appears first in the file. For correct
+results, this must be the one for the widest possible mode (<code>HImode</code>,
+here). If the pattern matches the <code>QImode</code> instruction, the results
+will be incorrect if the constant value does not actually fit that mode.
+</p>
+<p>Such instructions to extend constants are rarely generated because they are
+optimized away, but they do occasionally happen in nonoptimized
+compilations.
+</p>
+<p>If a constraint in a pattern allows a constant, the reload pass may
+replace a register with a constant permitted by the constraint in some
+cases. Similarly for memory references. Because of this substitution,
+you should not provide separate patterns for increment and decrement
+instructions. Instead, they should be generated from the same pattern
+that supports register-register add insns by examining the operands and
+generating the appropriate machine instruction.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Directives.html b/share/doc/gccint/Directives.html
new file mode 100644
index 0000000..04aba82
--- /dev/null
+++ b/share/doc/gccint/Directives.html
@@ -0,0 +1,447 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Directives</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Directives">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Directives">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Selectors.html#Selectors" rel="next" title="Selectors">
+<link href="Test-Directives.html#Test-Directives" rel="previous" title="Test Directives">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Directives"></a>
+<div class="header">
+<p>
+Next: <a href="Selectors.html#Selectors" accesskey="n" rel="next">Selectors</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Syntax-and-Descriptions-of-test-directives"></a>
+<h4 class="subsection">7.2.1 Syntax and Descriptions of test directives</h4>
+
+<p>Test directives appear within comments in a test source file and begin
+with <code>dg-</code>. Some of these are defined within DejaGnu and others
+are local to the GCC testsuite.
+</p>
+<p>The order in which test directives appear in a test can be important:
+directives local to GCC sometimes override information used by the
+DejaGnu directives, which know nothing about the GCC directives, so the
+DejaGnu directives must precede GCC directives.
+</p>
+<p>Several test directives include selectors (see <a href="Selectors.html#Selectors">Selectors</a>)
+which are usually preceded by the keyword <code>target</code> or <code>xfail</code>.
+</p>
+<a name="Specify-how-to-build-the-test"></a>
+<h4 class="subsubsection">7.2.1.1 Specify how to build the test</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-do <var>do-what-keyword</var> [{ target/xfail <var>selector</var> }] }</code></dt>
+<dd><p><var>do-what-keyword</var> specifies how the test is compiled and whether
+it is executed. It is one of:
+</p>
+<dl compact="compact">
+<dt><code>preprocess</code></dt>
+<dd><p>Compile with <samp>-E</samp> to run only the preprocessor.
+</p></dd>
+<dt><code>compile</code></dt>
+<dd><p>Compile with <samp>-S</samp> to produce an assembly code file.
+</p></dd>
+<dt><code>assemble</code></dt>
+<dd><p>Compile with <samp>-c</samp> to produce a relocatable object file.
+</p></dd>
+<dt><code>link</code></dt>
+<dd><p>Compile, assemble, and link to produce an executable file.
+</p></dd>
+<dt><code>run</code></dt>
+<dd><p>Produce and run an executable file, which is expected to return
+an exit code of 0.
+</p></dd>
+</dl>
+
+<p>The default is <code>compile</code>. That can be overridden for a set of
+tests by redefining <code>dg-do-what-default</code> within the <code>.exp</code>
+file for those tests.
+</p>
+<p>If the directive includes the optional &lsquo;<samp>{ target <var>selector</var> }</samp>&rsquo;
+then the test is skipped unless the target system matches the
+<var>selector</var>.
+</p>
+<p>If <var>do-what-keyword</var> is <code>run</code> and the directive includes
+the optional &lsquo;<samp>{ xfail <var>selector</var> }</samp>&rsquo; and the selector is met
+then the test is expected to fail. The <code>xfail</code> clause is ignored
+for other values of <var>do-what-keyword</var>; those tests can use
+directive <code>dg-xfail-if</code>.
+</p></dd>
+</dl>
+
+<a name="Specify-additional-compiler-options"></a>
+<h4 class="subsubsection">7.2.1.2 Specify additional compiler options</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-options <var>options</var> [{ target <var>selector</var> }] }</code></dt>
+<dd><p>This DejaGnu directive provides a list of compiler options, to be used
+if the target system matches <var>selector</var>, that replace the default
+options used for this set of tests.
+</p>
+</dd>
+<dt><code>{ dg-add-options <var>feature</var> &hellip; }</code></dt>
+<dd><p>Add any compiler options that are needed to access certain features.
+This directive does nothing on targets that enable the features by
+default, or that don&rsquo;t provide them at all. It must come after
+all <code>dg-options</code> directives.
+For supported values of <var>feature</var> see <a href="Add-Options.html#Add-Options">Add Options</a>.
+</p>
+</dd>
+<dt><code>{ dg-additional-options <var>options</var> [{ target <var>selector</var> }] }</code></dt>
+<dd><p>This directive provides a list of compiler options, to be used
+if the target system matches <var>selector</var>, that are added to the default
+options used for this set of tests.
+</p></dd>
+</dl>
+
+<a name="Modify-the-test-timeout-value"></a>
+<h4 class="subsubsection">7.2.1.3 Modify the test timeout value</h4>
+
+<p>The normal timeout limit, in seconds, is found by searching the
+following in order:
+</p>
+<ul>
+<li> the value defined by an earlier <code>dg-timeout</code> directive in
+the test
+
+</li><li> variable <var>tool_timeout</var> defined by the set of tests
+
+</li><li> <var>gcc</var>,<var>timeout</var> set in the target board
+
+</li><li> 300
+</li></ul>
+
+<dl compact="compact">
+<dt><code>{ dg-timeout <var>n</var> [{target <var>selector</var> }] }</code></dt>
+<dd><p>Set the time limit for the compilation and for the execution of the test
+to the specified number of seconds.
+</p>
+</dd>
+<dt><code>{ dg-timeout-factor <var>x</var> [{ target <var>selector</var> }] }</code></dt>
+<dd><p>Multiply the normal time limit for compilation and execution of the test
+by the specified floating-point factor.
+</p></dd>
+</dl>
+
+<a name="Skip-a-test-for-some-targets"></a>
+<h4 class="subsubsection">7.2.1.4 Skip a test for some targets</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-skip-if <var>comment</var> { <var>selector</var> } [{ <var>include-opts</var> } [{ <var>exclude-opts</var> }]] }</code></dt>
+<dd><p>Arguments <var>include-opts</var> and <var>exclude-opts</var> are lists in which
+each element is a string of zero or more GCC options.
+Skip the test if all of the following conditions are met:
+</p><ul>
+<li> the test system is included in <var>selector</var>
+
+</li><li> for at least one of the option strings in <var>include-opts</var>,
+every option from that string is in the set of options with which
+the test would be compiled; use &lsquo;<samp>&quot;*&quot;</samp>&rsquo; for an <var>include-opts</var> list
+that matches any options; that is the default if <var>include-opts</var> is
+not specified
+
+</li><li> for each of the option strings in <var>exclude-opts</var>, at least one
+option from that string is not in the set of options with which the test
+would be compiled; use &lsquo;<samp>&quot;&quot;</samp>&rsquo; for an empty <var>exclude-opts</var> list;
+that is the default if <var>exclude-opts</var> is not specified
+</li></ul>
+
+<p>For example, to skip a test if option <code>-Os</code> is present:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-skip-if &quot;&quot; { *-*-* } { &quot;-Os&quot; } { &quot;&quot; } } */
+</pre></div>
+
+<p>To skip a test if both options <code>-O2</code> and <code>-g</code> are present:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-skip-if &quot;&quot; { *-*-* } { &quot;-O2 -g&quot; } { &quot;&quot; } } */
+</pre></div>
+
+<p>To skip a test if either <code>-O2</code> or <code>-O3</code> is present:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-skip-if &quot;&quot; { *-*-* } { &quot;-O2&quot; &quot;-O3&quot; } { &quot;&quot; } } */
+</pre></div>
+
+<p>To skip a test unless option <code>-Os</code> is present:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-skip-if &quot;&quot; { *-*-* } { &quot;*&quot; } { &quot;-Os&quot; } } */
+</pre></div>
+
+<p>To skip a test if either <code>-O2</code> or <code>-O3</code> is used with <code>-g</code>
+but not if <code>-fpic</code> is also present:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-skip-if &quot;&quot; { *-*-* } { &quot;-O2 -g&quot; &quot;-O3 -g&quot; } { &quot;-fpic&quot; } } */
+</pre></div>
+
+</dd>
+<dt><code>{ dg-require-effective-target <var>keyword</var> [{ target <var>selector</var> }] }</code></dt>
+<dd><p>Skip the test if the test target, including current multilib flags,
+is not covered by the effective-target keyword.
+If the directive includes the optional &lsquo;<samp>{ <var>selector</var> }</samp>&rsquo;
+then the effective-target test is only performed if the target system
+matches the <var>selector</var>.
+This directive must appear after any <code>dg-do</code> directive in the test
+and before any <code>dg-additional-sources</code> directive.
+See <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords">Effective-Target Keywords</a>.
+</p>
+</dd>
+<dt><code>{ dg-require-<var>support</var> args }</code></dt>
+<dd><p>Skip the test if the target does not provide the required support.
+These directives must appear after any <code>dg-do</code> directive in the test
+and before any <code>dg-additional-sources</code> directive.
+They require at least one argument, which can be an empty string if the
+specific procedure does not examine the argument.
+See <a href="Require-Support.html#Require-Support">Require Support</a>, for a complete list of these directives.
+</p></dd>
+</dl>
+
+<a name="Expect-a-test-to-fail-for-some-targets"></a>
+<h4 class="subsubsection">7.2.1.5 Expect a test to fail for some targets</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-xfail-if <var>comment</var> { <var>selector</var> } [{ <var>include-opts</var> } [{ <var>exclude-opts</var> }]] }</code></dt>
+<dd><p>Expect the test to fail if the conditions (which are the same as for
+<code>dg-skip-if</code>) are met. This does not affect the execute step.
+</p>
+</dd>
+<dt><code>{ dg-xfail-run-if <var>comment</var> { <var>selector</var> } [{ <var>include-opts</var> } [{ <var>exclude-opts</var> }]] }</code></dt>
+<dd><p>Expect the execute step of a test to fail if the conditions (which are
+the same as for <code>dg-skip-if</code>) are met.
+</p></dd>
+</dl>
+
+<a name="Expect-the-compiler-to-crash"></a>
+<h4 class="subsubsection">7.2.1.6 Expect the compiler to crash</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-ice <var>comment</var> [{ <var>selector</var> } [{ <var>include-opts</var> } [{ <var>exclude-opts</var> }]]] }</code></dt>
+<dd><p>Expect the compiler to crash with an internal compiler error and return
+a nonzero exit status if the conditions (which are the same as for
+<code>dg-skip-if</code>) are met. Used for tests that test bugs that have not been
+fixed yet.
+</p></dd>
+</dl>
+
+<a name="Expect-the-test-executable-to-fail"></a>
+<h4 class="subsubsection">7.2.1.7 Expect the test executable to fail</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-shouldfail <var>comment</var> [{ <var>selector</var> } [{ <var>include-opts</var> } [{ <var>exclude-opts</var> }]]] }</code></dt>
+<dd><p>Expect the test executable to return a nonzero exit status if the
+conditions (which are the same as for <code>dg-skip-if</code>) are met.
+</p></dd>
+</dl>
+
+<a name="Verify-compiler-messages"></a>
+<h4 class="subsubsection">7.2.1.8 Verify compiler messages</h4>
+<p>Where <var>line</var> is an accepted argument for these commands, a value of &lsquo;<samp>0</samp>&rsquo;
+can be used if there is no line associated with the message.
+</p>
+<dl compact="compact">
+<dt><code>{ dg-error <var>regexp</var> [<var>comment</var> [{ target/xfail <var>selector</var> } [<var>line</var>] ]] }</code></dt>
+<dd><p>This DejaGnu directive appears on a source line that is expected to get
+an error message, or else specifies the source line associated with the
+message. If there is no message for that line or if the text of that
+message is not matched by <var>regexp</var> then the check fails and
+<var>comment</var> is included in the <code>FAIL</code> message. The check does
+not look for the string &lsquo;<samp>error</samp>&rsquo; unless it is part of <var>regexp</var>.
+</p>
+</dd>
+<dt><code>{ dg-warning <var>regexp</var> [<var>comment</var> [{ target/xfail <var>selector</var> } [<var>line</var>] ]] }</code></dt>
+<dd><p>This DejaGnu directive appears on a source line that is expected to get
+a warning message, or else specifies the source line associated with the
+message. If there is no message for that line or if the text of that
+message is not matched by <var>regexp</var> then the check fails and
+<var>comment</var> is included in the <code>FAIL</code> message. The check does
+not look for the string &lsquo;<samp>warning</samp>&rsquo; unless it is part of <var>regexp</var>.
+</p>
+</dd>
+<dt><code>{ dg-message <var>regexp</var> [<var>comment</var> [{ target/xfail <var>selector</var> } [<var>line</var>] ]] }</code></dt>
+<dd><p>The line is expected to get a message other than an error or warning.
+If there is no message for that line or if the text of that message is
+not matched by <var>regexp</var> then the check fails and <var>comment</var> is
+included in the <code>FAIL</code> message.
+</p>
+</dd>
+<dt><code>{ dg-note <var>regexp</var> [<var>comment</var> [{ target/xfail <var>selector</var> } [<var>line</var>] ]] }</code></dt>
+<dd><p>The line is expected to get a &lsquo;<samp>note</samp>&rsquo; message.
+If there is no message for that line or if the text of that message is
+not matched by <var>regexp</var> then the check fails and <var>comment</var> is
+included in the <code>FAIL</code> message.
+</p>
+<p>By default, any <em>excess</em> &lsquo;<samp>note</samp>&rsquo; messages are pruned, meaning
+their appearance doesn&rsquo;t trigger <em>excess errors</em>.
+However, if &lsquo;<samp>dg-note</samp>&rsquo; is used at least once in a testcase,
+they&rsquo;re not pruned and instead must <em>all</em> be handled explicitly.
+Thus, if looking for just single instances of messages with
+&lsquo;<samp>note: </samp>&rsquo; prefixes without caring for all of them, use
+&lsquo;<samp>dg-message &quot;note: [&hellip;]&quot;</samp>&rsquo; instead of &lsquo;<samp>dg-note</samp>&rsquo;, or use
+&lsquo;<samp>dg-note</samp>&rsquo; together with &lsquo;<samp>dg-prune-output &quot;note: &quot;</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>{ dg-bogus <var>regexp</var> [<var>comment</var> [{ target/xfail <var>selector</var> } [<var>line</var>] ]] }</code></dt>
+<dd><p>This DejaGnu directive appears on a source line that should not get a
+message matching <var>regexp</var>, or else specifies the source line
+associated with the bogus message. It is usually used with &lsquo;<samp>xfail</samp>&rsquo;
+to indicate that the message is a known problem for a particular set of
+targets.
+</p>
+</dd>
+<dt><code>{ dg-line <var>linenumvar</var> }</code></dt>
+<dd><p>This DejaGnu directive sets the variable <var>linenumvar</var> to the line number of
+the source line. The variable <var>linenumvar</var> can then be used in subsequent
+<code>dg-error</code>, <code>dg-warning</code>, <code>dg-message</code>, <code>dg-note</code>
+and <code>dg-bogus</code>
+directives. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int a; /* { dg-line first_def_a } */
+float a; /* { dg-error &quot;conflicting types of&quot; } */
+/* { dg-message &quot;previous declaration of&quot; &quot;&quot; { target *-*-* } first_def_a } */
+</pre></div>
+
+</dd>
+<dt><code>{ dg-excess-errors <var>comment</var> [{ target/xfail <var>selector</var> }] }</code></dt>
+<dd><p>This DejaGnu directive indicates that the test is expected to fail due
+to compiler messages that are not handled by &lsquo;<samp>dg-error</samp>&rsquo;,
+&lsquo;<samp>dg-warning</samp>&rsquo;, <code>dg-message</code>, &lsquo;<samp>dg-note</samp>&rsquo; or
+&lsquo;<samp>dg-bogus</samp>&rsquo;.
+For this directive &lsquo;<samp>xfail</samp>&rsquo;
+has the same effect as &lsquo;<samp>target</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>{ dg-prune-output <var>regexp</var> }</code></dt>
+<dd><p>Prune messages matching <var>regexp</var> from the test output.
+</p></dd>
+</dl>
+
+<a name="Verify-output-of-the-test-executable"></a>
+<h4 class="subsubsection">7.2.1.9 Verify output of the test executable</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-output <var>regexp</var> [{ target/xfail <var>selector</var> }] }</code></dt>
+<dd><p>This DejaGnu directive compares <var>regexp</var> to the combined output
+that the test executable writes to <samp>stdout</samp> and <samp>stderr</samp>.
+</p></dd>
+</dl>
+
+<a name="Specify-environment-variables-for-a-test"></a>
+<h4 class="subsubsection">7.2.1.10 Specify environment variables for a test</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-set-compiler-env-var <var>var_name</var> &quot;<var>var_value</var>&quot; }</code></dt>
+<dd><p>Specify that the environment variable <var>var_name</var> needs to be set
+to <var>var_value</var> before invoking the compiler on the test file.
+</p>
+</dd>
+<dt><code>{ dg-set-target-env-var <var>var_name</var> &quot;<var>var_value</var>&quot; }</code></dt>
+<dd><p>Specify that the environment variable <var>var_name</var> needs to be set
+to <var>var_value</var> before execution of the program created by the test.
+</p></dd>
+</dl>
+
+<a name="Specify-additional-files-for-a-test"></a>
+<h4 class="subsubsection">7.2.1.11 Specify additional files for a test</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-additional-files &quot;<var>filelist</var>&quot; }</code></dt>
+<dd><p>Specify additional files, other than source files, that must be copied
+to the system where the compiler runs.
+</p>
+</dd>
+<dt><code>{ dg-additional-sources &quot;<var>filelist</var>&quot; }</code></dt>
+<dd><p>Specify additional source files to appear in the compile line
+following the main test file.
+</p></dd>
+</dl>
+
+<a name="Add-checks-at-the-end-of-a-test"></a>
+<h4 class="subsubsection">7.2.1.12 Add checks at the end of a test</h4>
+
+<dl compact="compact">
+<dt><code>{ dg-final { <var>local-directive</var> } }</code></dt>
+<dd><p>This DejaGnu directive is placed within a comment anywhere in the
+source file and is processed after the test has been compiled and run.
+Multiple &lsquo;<samp>dg-final</samp>&rsquo; commands are processed in the order in which
+they appear in the source file. See <a href="Final-Actions.html#Final-Actions">Final Actions</a>, for a list
+of directives that can be used within <code>dg-final</code>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Selectors.html#Selectors" accesskey="n" rel="next">Selectors</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Disable-Insn-Alternatives.html b/share/doc/gccint/Disable-Insn-Alternatives.html
new file mode 100644
index 0000000..a8634a4
--- /dev/null
+++ b/share/doc/gccint/Disable-Insn-Alternatives.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Disable Insn Alternatives</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Disable Insn Alternatives">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Disable Insn Alternatives">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Define-Constraints.html#Define-Constraints" rel="next" title="Define Constraints">
+<link href="Machine-Constraints.html#Machine-Constraints" rel="previous" title="Machine Constraints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Disable-Insn-Alternatives"></a>
+<div class="header">
+<p>
+Next: <a href="Define-Constraints.html#Define-Constraints" accesskey="n" rel="next">Define Constraints</a>, Previous: <a href="Machine-Constraints.html#Machine-Constraints" accesskey="p" rel="previous">Machine Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Disable-insn-alternatives-using-the-enabled-attribute"></a>
+<h4 class="subsection">17.8.6 Disable insn alternatives using the <code>enabled</code> attribute</h4>
+<a name="index-enabled"></a>
+
+<p>There are three insn attributes that may be used to selectively disable
+instruction alternatives:
+</p>
+<dl compact="compact">
+<dt><code>enabled</code></dt>
+<dd><p>Says whether an alternative is available on the current subtarget.
+</p>
+</dd>
+<dt><code>preferred_for_size</code></dt>
+<dd><p>Says whether an enabled alternative should be used in code that is
+optimized for size.
+</p>
+</dd>
+<dt><code>preferred_for_speed</code></dt>
+<dd><p>Says whether an enabled alternative should be used in code that is
+optimized for speed.
+</p></dd>
+</dl>
+
+<p>All these attributes should use <code>(const_int 1)</code> to allow an alternative
+or <code>(const_int 0)</code> to disallow it. The attributes must be a static
+property of the subtarget; they cannot for example depend on the
+current operands, on the current optimization level, on the location
+of the insn within the body of a loop, on whether register allocation
+has finished, or on the current compiler pass.
+</p>
+<p>The <code>enabled</code> attribute is a correctness property. It tells GCC to act
+as though the disabled alternatives were never defined in the first place.
+This is useful when adding new instructions to an existing pattern in
+cases where the new instructions are only available for certain cpu
+architecture levels (typically mapped to the <code>-march=</code> command-line
+option).
+</p>
+<p>In contrast, the <code>preferred_for_size</code> and <code>preferred_for_speed</code>
+attributes are strong optimization hints rather than correctness properties.
+<code>preferred_for_size</code> tells GCC which alternatives to consider when
+adding or modifying an instruction that GCC wants to optimize for size.
+<code>preferred_for_speed</code> does the same thing for speed. Note that things
+like code motion can lead to cases where code optimized for size uses
+alternatives that are not preferred for size, and similarly for speed.
+</p>
+<p>Although <code>define_insn</code>s can in principle specify the <code>enabled</code>
+attribute directly, it is often clearer to have subsiduary attributes
+for each architectural feature of interest. The <code>define_insn</code>s
+can then use these subsiduary attributes to say which alternatives
+require which features. The example below does this for <code>cpu_facility</code>.
+</p>
+<p>E.g. the following two patterns could easily be merged using the <code>enabled</code>
+attribute:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(define_insn &quot;*movdi_old&quot;
+ [(set (match_operand:DI 0 &quot;register_operand&quot; &quot;=d&quot;)
+ (match_operand:DI 1 &quot;register_operand&quot; &quot; d&quot;))]
+ &quot;!TARGET_NEW&quot;
+ &quot;lgr %0,%1&quot;)
+
+(define_insn &quot;*movdi_new&quot;
+ [(set (match_operand:DI 0 &quot;register_operand&quot; &quot;=d,f,d&quot;)
+ (match_operand:DI 1 &quot;register_operand&quot; &quot; d,d,f&quot;))]
+ &quot;TARGET_NEW&quot;
+ &quot;@
+ lgr %0,%1
+ ldgr %0,%1
+ lgdr %0,%1&quot;)
+
+</pre></div>
+
+<p>to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(define_insn &quot;*movdi_combined&quot;
+ [(set (match_operand:DI 0 &quot;register_operand&quot; &quot;=d,f,d&quot;)
+ (match_operand:DI 1 &quot;register_operand&quot; &quot; d,d,f&quot;))]
+ &quot;&quot;
+ &quot;@
+ lgr %0,%1
+ ldgr %0,%1
+ lgdr %0,%1&quot;
+ [(set_attr &quot;cpu_facility&quot; &quot;*,new,new&quot;)])
+
+</pre></div>
+
+<p>with the <code>enabled</code> attribute defined like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(define_attr &quot;cpu_facility&quot; &quot;standard,new&quot; (const_string &quot;standard&quot;))
+
+(define_attr &quot;enabled&quot; &quot;&quot;
+ (cond [(eq_attr &quot;cpu_facility&quot; &quot;standard&quot;) (const_int 1)
+ (and (eq_attr &quot;cpu_facility&quot; &quot;new&quot;)
+ (ne (symbol_ref &quot;TARGET_NEW&quot;) (const_int 0)))
+ (const_int 1)]
+ (const_int 0)))
+
+</pre></div>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Define-Constraints.html#Define-Constraints" accesskey="n" rel="next">Define Constraints</a>, Previous: <a href="Machine-Constraints.html#Machine-Constraints" accesskey="p" rel="previous">Machine Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dispatch-Tables.html b/share/doc/gccint/Dispatch-Tables.html
new file mode 100644
index 0000000..6293b74
--- /dev/null
+++ b/share/doc/gccint/Dispatch-Tables.html
@@ -0,0 +1,228 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dispatch Tables</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dispatch Tables">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dispatch Tables">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Exception-Region-Output.html#Exception-Region-Output" rel="next" title="Exception Region Output">
+<link href="Instruction-Output.html#Instruction-Output" rel="previous" title="Instruction Output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dispatch-Tables"></a>
+<div class="header">
+<p>
+Next: <a href="Exception-Region-Output.html#Exception-Region-Output" accesskey="n" rel="next">Exception Region Output</a>, Previous: <a href="Instruction-Output.html#Instruction-Output" accesskey="p" rel="previous">Instruction Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-of-Dispatch-Tables"></a>
+<h4 class="subsection">18.20.8 Output of Dispatch Tables</h4>
+
+<p>This concerns dispatch tables.
+</p>
+<a name="index-dispatch-table"></a>
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fADDR_005fDIFF_005fELT"></a>Macro: <strong>ASM_OUTPUT_ADDR_DIFF_ELT</strong> <em>(<var>stream</var>, <var>body</var>, <var>value</var>, <var>rel</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> an assembler
+pseudo-instruction to generate a difference between two labels.
+<var>value</var> and <var>rel</var> are the numbers of two internal labels. The
+definitions of these labels are output using
+<code>(*targetm.asm_out.internal_label)</code>, and they must be printed in the same
+way here. For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">fprintf (<var>stream</var>, &quot;\t.word L%d-L%d\n&quot;,
+ <var>value</var>, <var>rel</var>)
+</pre></div>
+
+<p>You must provide this macro on machines where the addresses in a
+dispatch table are relative to the table&rsquo;s own address. If defined, GCC
+will also use this macro on all machines when producing PIC.
+<var>body</var> is the body of the <code>ADDR_DIFF_VEC</code>; it is provided so that the
+mode and flags can be read.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fADDR_005fVEC_005fELT"></a>Macro: <strong>ASM_OUTPUT_ADDR_VEC_ELT</strong> <em>(<var>stream</var>, <var>value</var>)</em></dt>
+<dd><p>This macro should be provided on machines where the addresses
+in a dispatch table are absolute.
+</p>
+<p>The definition should be a C statement to output to the stdio stream
+<var>stream</var> an assembler pseudo-instruction to generate a reference to
+a label. <var>value</var> is the number of an internal label whose
+definition is output using <code>(*targetm.asm_out.internal_label)</code>.
+For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">fprintf (<var>stream</var>, &quot;\t.word L%d\n&quot;, <var>value</var>)
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fCASE_005fLABEL"></a>Macro: <strong>ASM_OUTPUT_CASE_LABEL</strong> <em>(<var>stream</var>, <var>prefix</var>, <var>num</var>, <var>table</var>)</em></dt>
+<dd><p>Define this if the label before a jump-table needs to be output
+specially. The first three arguments are the same as for
+<code>(*targetm.asm_out.internal_label)</code>; the fourth argument is the
+jump-table which follows (a <code>jump_table_data</code> containing an
+<code>addr_vec</code> or <code>addr_diff_vec</code>).
+</p>
+<p>This feature is used on system V to output a <code>swbeg</code> statement
+for the table.
+</p>
+<p>If this macro is not defined, these labels are output with
+<code>(*targetm.asm_out.internal_label)</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fCASE_005fEND"></a>Macro: <strong>ASM_OUTPUT_CASE_END</strong> <em>(<var>stream</var>, <var>num</var>, <var>table</var>)</em></dt>
+<dd><p>Define this if something special must be output at the end of a
+jump-table. The definition should be a C statement to be executed
+after the assembler code for the table is written. It should write
+the appropriate code to stdio stream <var>stream</var>. The argument
+<var>table</var> is the jump-table insn, and <var>num</var> is the label-number
+of the preceding label.
+</p>
+<p>If this macro is not defined, nothing special is output at the end of
+the jump-table.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fPOST_005fCFI_005fSTARTPROC"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_POST_CFI_STARTPROC</strong> <em>(FILE *<var></var>, <var>tree</var>)</em></dt>
+<dd><p>This target hook is used to emit assembly strings required by the target
+after the .cfi_startproc directive. The first argument is the file stream to
+write the strings to and the second argument is the function&rsquo;s declaration. The
+expected use is to add more .cfi_* directives.
+</p>
+<p>The default is to not output any assembly strings.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fEMIT_005fUNWIND_005fLABEL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_EMIT_UNWIND_LABEL</strong> <em>(FILE *<var>stream</var>, tree <var>decl</var>, int <var>for_eh</var>, int <var>empty</var>)</em></dt>
+<dd><p>This target hook emits a label at the beginning of each FDE. It
+should be defined on targets where FDEs need special labels, and it
+should write the appropriate label, for the FDE associated with the
+function declaration <var>decl</var>, to the stdio stream <var>stream</var>.
+The third argument, <var>for_eh</var>, is a boolean: true if this is for an
+exception table. The fourth argument, <var>empty</var>, is a boolean:
+true if this is a placeholder label for an omitted FDE.
+</p>
+<p>The default is that FDEs are not given nonlocal labels.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fEMIT_005fEXCEPT_005fTABLE_005fLABEL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL</strong> <em>(FILE *<var>stream</var>)</em></dt>
+<dd><p>This target hook emits a label at the beginning of the exception table.
+It should be defined on targets where it is desirable for the table
+to be broken up according to function.
+</p>
+<p>The default is that no label is emitted.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fEMIT_005fEXCEPT_005fPERSONALITY"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_EMIT_EXCEPT_PERSONALITY</strong> <em>(rtx <var>personality</var>)</em></dt>
+<dd><p>If the target implements <code>TARGET_ASM_UNWIND_EMIT</code>, this hook may be
+used to emit a directive to install a personality hook into the unwind
+info. This hook should not be used if dwarf2 unwind info is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fUNWIND_005fEMIT"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_UNWIND_EMIT</strong> <em>(FILE *<var>stream</var>, rtx_insn *<var>insn</var>)</em></dt>
+<dd><p>This target hook emits assembly directives required to unwind the
+given instruction. This is only used when <code>TARGET_EXCEPT_UNWIND_INFO</code>
+returns <code>UI_TARGET</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fMAKE_005fEH_005fSYMBOL_005fINDIRECT"></a>Target Hook: <em>rtx</em> <strong>TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT</strong> <em>(rtx <var>origsymbol</var>, bool <var>pubvis</var>)</em></dt>
+<dd><p>If necessary, modify personality and LSDA references to handle indirection.
+The original symbol is in <code>origsymbol</code> and if <code>pubvis</code> is true
+the symbol is visible outside the TU.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fUNWIND_005fEMIT_005fBEFORE_005fINSN"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_UNWIND_EMIT_BEFORE_INSN</strong></dt>
+<dd><p>True if the <code>TARGET_ASM_UNWIND_EMIT</code> hook should be called before
+the assembly for <var>insn</var> has been emitted, false if the hook should
+be called afterward.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fSHOULD_005fRESTORE_005fCFA_005fSTATE"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_SHOULD_RESTORE_CFA_STATE</strong> <em>(void)</em></dt>
+<dd><p>For DWARF-based unwind frames, two CFI instructions provide for save and
+restore of register state. GCC maintains the current frame address (CFA)
+separately from the register bank but the unwinder in libgcc preserves this
+state along with the registers (and this is expected by the code that writes
+the unwind frames). This hook allows the target to specify that the CFA data
+is not saved/restored along with the registers by the target unwinder so that
+suitable additional instructions should be emitted to restore it.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Exception-Region-Output.html#Exception-Region-Output" accesskey="n" rel="next">Exception Region Output</a>, Previous: <a href="Instruction-Output.html#Instruction-Output" accesskey="p" rel="previous">Instruction Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Division-of-poly_005fints.html b/share/doc/gccint/Division-of-poly_005fints.html
new file mode 100644
index 0000000..fe0fe14
--- /dev/null
+++ b/share/doc/gccint/Division-of-poly_005fints.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Division of poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Division of poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Division of poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="up" title="Arithmetic on poly_ints">
+<link href="Other-poly_005fint-arithmetic.html#Other-poly_005fint-arithmetic" rel="next" title="Other poly_int arithmetic">
+<link href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints" rel="previous" title="wi arithmetic on poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Division-of-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Other-poly_005fint-arithmetic.html#Other-poly_005fint-arithmetic" accesskey="n" rel="next">Other <code>poly_int</code> arithmetic</a>, Previous: <a href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints" accesskey="p" rel="previous"><code>wi</code> arithmetic on <code>poly_int</code>s</a>, Up: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="u" rel="up">Arithmetic on <code>poly_int</code>s</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Division-of-poly_005fints-1"></a>
+<h4 class="subsection">10.4.3 Division of <code>poly_int</code>s</h4>
+
+<p>Division of <code>poly_int</code>s is possible for certain inputs. The functions
+for division return true if the operation is possible and in most cases
+return the results by pointer. The routines are:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>multiple_p (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>multiple_p (<var>a</var>, <var>b</var>, &amp;<var>quotient</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>a</var> is an exact multiple of <var>b</var>, storing the result
+in <var>quotient</var> if so. There are overloads for various combinations
+of polynomial and constant <var>a</var>, <var>b</var> and <var>quotient</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>constant_multiple_p (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>constant_multiple_p (<var>a</var>, <var>b</var>, &amp;<var>quotient</var>)</samp>&rsquo;</dt>
+<dd><p>Like <code>multiple_p</code>, but also test whether the multiple is a
+compile-time constant.
+</p>
+</dd>
+<dt>&lsquo;<samp>can_div_trunc_p (<var>a</var>, <var>b</var>, &amp;<var>quotient</var>)</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>can_div_trunc_p (<var>a</var>, <var>b</var>, &amp;<var>quotient</var>, &amp;<var>remainder</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can calculate &lsquo;<samp>trunc (<var>a</var> / <var>b</var>)</samp>&rsquo; at compile
+time, storing the result in <var>quotient</var> and <var>remainder</var> if so.
+</p>
+</dd>
+<dt>&lsquo;<samp>can_div_away_from_zero_p (<var>a</var>, <var>b</var>, &amp;<var>quotient</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can calculate &lsquo;<samp><var>a</var> / <var>b</var></samp>&rsquo; at compile time,
+rounding away from zero. Store the result in <var>quotient</var> if so.
+</p>
+<p>Note that this is true if and only if <code>can_div_trunc_p</code> is true.
+The only difference is in the rounding of the result.
+</p></dd>
+</dl>
+
+<p>There is also an asserting form of division:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>exact_div (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>a</var> is a multiple of <var>b</var> and return
+&lsquo;<samp><var>a</var> / <var>b</var></samp>&rsquo;. The result is a <code>poly_int</code> if <var>a</var>
+is a <code>poly_int</code>.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Documentation.html b/share/doc/gccint/Documentation.html
new file mode 100644
index 0000000..a497106
--- /dev/null
+++ b/share/doc/gccint/Documentation.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Documentation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Documentation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Documentation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Texinfo-Manuals.html#Texinfo-Manuals" rel="next" title="Texinfo Manuals">
+<link href="Headers.html#Headers" rel="previous" title="Headers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Documentation"></a>
+<div class="header">
+<p>
+Next: <a href="Front-End.html#Front-End" accesskey="n" rel="next">Front End</a>, Previous: <a href="Headers.html#Headers" accesskey="p" rel="previous">Headers</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Building-Documentation"></a>
+<h4 class="subsection">6.3.7 Building Documentation</h4>
+
+<p>The main GCC documentation is in the form of manuals in Texinfo
+format. These are installed in Info format; DVI versions may be
+generated by &lsquo;<samp>make dvi</samp>&rsquo;, PDF versions by &lsquo;<samp>make pdf</samp>&rsquo;, and
+HTML versions by &lsquo;<samp>make html</samp>&rsquo;. In addition, some man pages are
+generated from the Texinfo manuals, there are some other text files
+with miscellaneous documentation, and runtime libraries have their own
+documentation outside the <samp>gcc</samp> directory. FIXME: document the
+documentation for runtime libraries somewhere.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Texinfo-Manuals.html#Texinfo-Manuals" accesskey="1">Texinfo Manuals</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GCC manuals in Texinfo format.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Man-Page-Generation.html#Man-Page-Generation" accesskey="2">Man Page Generation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating man pages from Texinfo manuals.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Miscellaneous-Docs.html#Miscellaneous-Docs" accesskey="3">Miscellaneous Docs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Miscellaneous text files with documentation.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Driver.html b/share/doc/gccint/Driver.html
new file mode 100644
index 0000000..3a960e5
--- /dev/null
+++ b/share/doc/gccint/Driver.html
@@ -0,0 +1,597 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Driver</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Driver">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Driver">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Run_002dtime-Target.html#Run_002dtime-Target" rel="next" title="Run-time Target">
+<link href="Target-Structure.html#Target-Structure" rel="previous" title="Target Structure">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Driver"></a>
+<div class="header">
+<p>
+Next: <a href="Run_002dtime-Target.html#Run_002dtime-Target" accesskey="n" rel="next">Run-time Target</a>, Previous: <a href="Target-Structure.html#Target-Structure" accesskey="p" rel="previous">Target Structure</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Controlling-the-Compilation-Driver_002c-gcc"></a>
+<h3 class="section">18.2 Controlling the Compilation Driver, <samp>gcc</samp></h3>
+<a name="index-driver"></a>
+<a name="index-controlling-the-compilation-driver"></a>
+
+<p>You can control the compilation driver.
+</p>
+<dl>
+<dt><a name="index-DRIVER_005fSELF_005fSPECS"></a>Macro: <strong>DRIVER_SELF_SPECS</strong></dt>
+<dd><p>A list of specs for the driver itself. It should be a suitable
+initializer for an array of strings, with no surrounding braces.
+</p>
+<p>The driver applies these specs to its own command line between loading
+default <samp>specs</samp> files (but not command-line specified ones) and
+choosing the multilib directory or running any subcommands. It
+applies them in the order given, so each spec can depend on the
+options added by earlier ones. It is also possible to remove options
+using &lsquo;<samp>%&lt;<var>option</var></samp>&rsquo; in the usual way.
+</p>
+<p>This macro can be useful when a port has several interdependent target
+options. It provides a way of standardizing the command line so
+that the other specs are easier to write.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OPTION_005fDEFAULT_005fSPECS"></a>Macro: <strong>OPTION_DEFAULT_SPECS</strong></dt>
+<dd><p>A list of specs used to support configure-time default options (i.e.
+<samp>--with</samp> options) in the driver. It should be a suitable initializer
+for an array of structures, each containing two strings, without the
+outermost pair of surrounding braces.
+</p>
+<p>The first item in the pair is the name of the default. This must match
+the code in <samp>config.gcc</samp> for the target. The second item is a spec
+to apply if a default with this name was specified. The string
+&lsquo;<samp>%(VALUE)</samp>&rsquo; in the spec will be replaced by the value of the default
+everywhere it occurs.
+</p>
+<p>The driver will apply these specs to its own command line between loading
+default <samp>specs</samp> files and processing <code>DRIVER_SELF_SPECS</code>, using
+the same mechanism as <code>DRIVER_SELF_SPECS</code>.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CPP_005fSPEC"></a>Macro: <strong>CPP_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program options to
+pass to CPP. It can also specify how to translate options you
+give to GCC into options for GCC to pass to the CPP.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CPLUSPLUS_005fCPP_005fSPEC"></a>Macro: <strong>CPLUSPLUS_CPP_SPEC</strong></dt>
+<dd><p>This macro is just like <code>CPP_SPEC</code>, but is used for C++, rather
+than C. If you do not define this macro, then the value of
+<code>CPP_SPEC</code> (if any) will be used instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CC1_005fSPEC"></a>Macro: <strong>CC1_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program options to
+pass to <code>cc1</code>, <code>cc1plus</code>, <code>f771</code>, and the other language
+front ends.
+It can also specify how to translate options you give to GCC into options
+for GCC to pass to front ends.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CC1PLUS_005fSPEC"></a>Macro: <strong>CC1PLUS_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program options to
+pass to <code>cc1plus</code>. It can also specify how to translate options you
+give to GCC into options for GCC to pass to the <code>cc1plus</code>.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+Note that everything defined in CC1_SPEC is already passed to
+<code>cc1plus</code> so there is no need to duplicate the contents of
+CC1_SPEC in CC1PLUS_SPEC.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fSPEC"></a>Macro: <strong>ASM_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program options to
+pass to the assembler. It can also specify how to translate options
+you give to GCC into options for GCC to pass to the assembler.
+See the file <samp>sun3.h</samp> for an example of this.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fFINAL_005fSPEC"></a>Macro: <strong>ASM_FINAL_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program how to
+run any programs which cleanup after the normal assembler.
+Normally, this is not needed. See the file <samp>mips.h</samp> for
+an example of this.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-AS_005fNEEDS_005fDASH_005fFOR_005fPIPED_005fINPUT"></a>Macro: <strong>AS_NEEDS_DASH_FOR_PIPED_INPUT</strong></dt>
+<dd><p>Define this macro, with no value, if the driver should give the assembler
+an argument consisting of a single dash, <samp>-</samp>, to instruct it to
+read from its standard input (which will be a pipe connected to the
+output of the compiler proper). This argument is given after any
+<samp>-o</samp> option specifying the name of the output file.
+</p>
+<p>If you do not define this macro, the assembler is assumed to read its
+standard input if given no non-option arguments. If your assembler
+cannot read standard input at all, use a &lsquo;<samp>%{pipe:%e}</samp>&rsquo; construct;
+see <samp>mips.h</samp> for instance.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LINK_005fSPEC"></a>Macro: <strong>LINK_SPEC</strong></dt>
+<dd><p>A C string constant that tells the GCC driver program options to
+pass to the linker. It can also specify how to translate options you
+give to GCC into options for GCC to pass to the linker.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIB_005fSPEC"></a>Macro: <strong>LIB_SPEC</strong></dt>
+<dd><p>Another C string constant used much like <code>LINK_SPEC</code>. The difference
+between the two is that <code>LIB_SPEC</code> is used at the end of the
+command given to the linker.
+</p>
+<p>If this macro is not defined, a default is provided that
+loads the standard C library from the usual place. See <samp>gcc.cc</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIBGCC_005fSPEC"></a>Macro: <strong>LIBGCC_SPEC</strong></dt>
+<dd><p>Another C string constant that tells the GCC driver program
+how and when to place a reference to <samp>libgcc.a</samp> into the
+linker command line. This constant is placed both before and after
+the value of <code>LIB_SPEC</code>.
+</p>
+<p>If this macro is not defined, the GCC driver provides a default that
+passes the string <samp>-lgcc</samp> to the linker.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fLIBGCC_005fSPEC"></a>Macro: <strong>REAL_LIBGCC_SPEC</strong></dt>
+<dd><p>By default, if <code>ENABLE_SHARED_LIBGCC</code> is defined, the
+<code>LIBGCC_SPEC</code> is not directly used by the driver program but is
+instead modified to refer to different versions of <samp>libgcc.a</samp>
+depending on the values of the command line flags <samp>-static</samp>,
+<samp>-shared</samp>, <samp>-static-libgcc</samp>, and <samp>-shared-libgcc</samp>. On
+targets where these modifications are inappropriate, define
+<code>REAL_LIBGCC_SPEC</code> instead. <code>REAL_LIBGCC_SPEC</code> tells the
+driver how to place a reference to <samp>libgcc</samp> on the link command
+line, but, unlike <code>LIBGCC_SPEC</code>, it is used unmodified.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fLD_005fAS_005fNEEDED"></a>Macro: <strong>USE_LD_AS_NEEDED</strong></dt>
+<dd><p>A macro that controls the modifications to <code>LIBGCC_SPEC</code>
+mentioned in <code>REAL_LIBGCC_SPEC</code>. If nonzero, a spec will be
+generated that uses <samp>--as-needed</samp> or equivalent options and the
+shared <samp>libgcc</samp> in place of the
+static exception handler library, when linking without any of
+<code>-static</code>, <code>-static-libgcc</code>, or <code>-shared-libgcc</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LINK_005fEH_005fSPEC"></a>Macro: <strong>LINK_EH_SPEC</strong></dt>
+<dd><p>If defined, this C string constant is added to <code>LINK_SPEC</code>.
+When <code>USE_LD_AS_NEEDED</code> is zero or undefined, it also affects
+the modifications to <code>LIBGCC_SPEC</code> mentioned in
+<code>REAL_LIBGCC_SPEC</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STARTFILE_005fSPEC"></a>Macro: <strong>STARTFILE_SPEC</strong></dt>
+<dd><p>Another C string constant used much like <code>LINK_SPEC</code>. The
+difference between the two is that <code>STARTFILE_SPEC</code> is used at
+the very beginning of the command given to the linker.
+</p>
+<p>If this macro is not defined, a default is provided that loads the
+standard C startup file from the usual place. See <samp>gcc.cc</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ENDFILE_005fSPEC"></a>Macro: <strong>ENDFILE_SPEC</strong></dt>
+<dd><p>Another C string constant used much like <code>LINK_SPEC</code>. The
+difference between the two is that <code>ENDFILE_SPEC</code> is used at
+the very end of the command given to the linker.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-THREAD_005fMODEL_005fSPEC"></a>Macro: <strong>THREAD_MODEL_SPEC</strong></dt>
+<dd><p>GCC <code>-v</code> will print the thread model GCC was configured to use.
+However, this doesn&rsquo;t work on platforms that are multilibbed on thread
+models, such as AIX 4.3. On such platforms, define
+<code>THREAD_MODEL_SPEC</code> such that it evaluates to a string without
+blanks that names one of the recognized thread models. <code>%*</code>, the
+default value of this macro, will expand to the value of
+<code>thread_file</code> set in <samp>config.gcc</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SYSROOT_005fSUFFIX_005fSPEC"></a>Macro: <strong>SYSROOT_SUFFIX_SPEC</strong></dt>
+<dd><p>Define this macro to add a suffix to the target sysroot when GCC is
+configured with a sysroot. This will cause GCC to search for usr/lib,
+et al, within sysroot+suffix.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SYSROOT_005fHEADERS_005fSUFFIX_005fSPEC"></a>Macro: <strong>SYSROOT_HEADERS_SUFFIX_SPEC</strong></dt>
+<dd><p>Define this macro to add a headers_suffix to the target sysroot when
+GCC is configured with a sysroot. This will cause GCC to pass the
+updated sysroot+headers_suffix to CPP, causing it to search for
+usr/include, et al, within sysroot+headers_suffix.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EXTRA_005fSPECS"></a>Macro: <strong>EXTRA_SPECS</strong></dt>
+<dd><p>Define this macro to provide additional specifications to put in the
+<samp>specs</samp> file that can be used in various specifications like
+<code>CC1_SPEC</code>.
+</p>
+<p>The definition should be an initializer for an array of structures,
+containing a string constant, that defines the specification name, and a
+string constant that provides the specification.
+</p>
+<p>Do not define this macro if it does not need to do anything.
+</p>
+<p><code>EXTRA_SPECS</code> is useful when an architecture contains several
+related targets, which have various <code>&hellip;_SPECS</code> which are similar
+to each other, and the maintainer would like one central place to keep
+these definitions.
+</p>
+<p>For example, the PowerPC System V.4 targets use <code>EXTRA_SPECS</code> to
+define either <code>_CALL_SYSV</code> when the System V calling sequence is
+used or <code>_CALL_AIX</code> when the older AIX-based calling sequence is
+used.
+</p>
+<p>The <samp>config/rs6000/rs6000.h</samp> target file defines:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define EXTRA_SPECS \
+ { &quot;cpp_sysv_default&quot;, CPP_SYSV_DEFAULT },
+
+#define CPP_SYS_DEFAULT &quot;&quot;
+</pre></div>
+
+<p>The <samp>config/rs6000/sysv.h</samp> target file defines:
+</p><div class="smallexample">
+<pre class="smallexample">#undef CPP_SPEC
+#define CPP_SPEC \
+&quot;%{posix: -D_POSIX_SOURCE } \
+%{mcall-sysv: -D_CALL_SYSV } \
+%{!mcall-sysv: %(cpp_sysv_default) } \
+%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}&quot;
+
+#undef CPP_SYSV_DEFAULT
+#define CPP_SYSV_DEFAULT &quot;-D_CALL_SYSV&quot;
+</pre></div>
+
+<p>while the <samp>config/rs6000/eabiaix.h</samp> target file defines
+<code>CPP_SYSV_DEFAULT</code> as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#undef CPP_SYSV_DEFAULT
+#define CPP_SYSV_DEFAULT &quot;-D_CALL_AIX&quot;
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-LINK_005fLIBGCC_005fSPECIAL_005f1"></a>Macro: <strong>LINK_LIBGCC_SPECIAL_1</strong></dt>
+<dd><p>Define this macro if the driver program should find the library
+<samp>libgcc.a</samp>. If you do not define this macro, the driver program will pass
+the argument <samp>-lgcc</samp> to tell the linker to do the search.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LINK_005fGCC_005fC_005fSEQUENCE_005fSPEC"></a>Macro: <strong>LINK_GCC_C_SEQUENCE_SPEC</strong></dt>
+<dd><p>The sequence in which libgcc and libc are specified to the linker.
+By default this is <code>%G %L %G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-POST_005fLINK_005fSPEC"></a>Macro: <strong>POST_LINK_SPEC</strong></dt>
+<dd><p>Define this macro to add additional steps to be executed after linker.
+The default value of this macro is empty string.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LINK_005fCOMMAND_005fSPEC"></a>Macro: <strong>LINK_COMMAND_SPEC</strong></dt>
+<dd><p>A C string constant giving the complete command line need to execute the
+linker. When you do this, you will need to update your port each time a
+change is made to the link command line within <samp>gcc.cc</samp>. Therefore,
+define this macro only if you need to completely redefine the command
+line for invoking the linker and there is no other way to accomplish
+the effect you need. Overriding this macro may be avoidable by overriding
+<code>LINK_GCC_C_SEQUENCE_SPEC</code> instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fALWAYS_005fSTRIP_005fDOTDOT"></a>Common Target Hook: <em>bool</em> <strong>TARGET_ALWAYS_STRIP_DOTDOT</strong></dt>
+<dd><p>True if <samp>..</samp> components should always be removed from directory names
+computed relative to GCC&rsquo;s internal directories, false (default) if such
+components should be preserved and directory names containing them passed
+to other tools such as the linker.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MULTILIB_005fDEFAULTS"></a>Macro: <strong>MULTILIB_DEFAULTS</strong></dt>
+<dd><p>Define this macro as a C expression for the initializer of an array of
+string to tell the driver program which options are defaults for this
+target and thus do not need to be handled specially when using
+<code>MULTILIB_OPTIONS</code>.
+</p>
+<p>Do not define this macro if <code>MULTILIB_OPTIONS</code> is not defined in
+the target makefile fragment or if none of the options listed in
+<code>MULTILIB_OPTIONS</code> are set by default.
+See <a href="Target-Fragment.html#Target-Fragment">Target Fragment</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-RELATIVE_005fPREFIX_005fNOT_005fLINKDIR"></a>Macro: <strong>RELATIVE_PREFIX_NOT_LINKDIR</strong></dt>
+<dd><p>Define this macro to tell <code>gcc</code> that it should only translate
+a <samp>-B</samp> prefix into a <samp>-L</samp> linker option if the prefix
+indicates an absolute file name.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MD_005fEXEC_005fPREFIX"></a>Macro: <strong>MD_EXEC_PREFIX</strong></dt>
+<dd><p>If defined, this macro is an additional prefix to try after
+<code>STANDARD_EXEC_PREFIX</code>. <code>MD_EXEC_PREFIX</code> is not searched
+when the compiler is built as a cross
+compiler. If you define <code>MD_EXEC_PREFIX</code>, then be sure to add it
+to the list of directories used to find the assembler in <samp>configure.ac</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STANDARD_005fSTARTFILE_005fPREFIX"></a>Macro: <strong>STANDARD_STARTFILE_PREFIX</strong></dt>
+<dd><p>Define this macro as a C string constant if you wish to override the
+standard choice of <code>libdir</code> as the default prefix to
+try when searching for startup files such as <samp>crt0.o</samp>.
+<code>STANDARD_STARTFILE_PREFIX</code> is not searched when the compiler
+is built as a cross compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STANDARD_005fSTARTFILE_005fPREFIX_005f1"></a>Macro: <strong>STANDARD_STARTFILE_PREFIX_1</strong></dt>
+<dd><p>Define this macro as a C string constant if you wish to override the
+standard choice of <code>/lib</code> as a prefix to try after the default prefix
+when searching for startup files such as <samp>crt0.o</samp>.
+<code>STANDARD_STARTFILE_PREFIX_1</code> is not searched when the compiler
+is built as a cross compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STANDARD_005fSTARTFILE_005fPREFIX_005f2"></a>Macro: <strong>STANDARD_STARTFILE_PREFIX_2</strong></dt>
+<dd><p>Define this macro as a C string constant if you wish to override the
+standard choice of <code>/lib</code> as yet another prefix to try after the
+default prefix when searching for startup files such as <samp>crt0.o</samp>.
+<code>STANDARD_STARTFILE_PREFIX_2</code> is not searched when the compiler
+is built as a cross compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MD_005fSTARTFILE_005fPREFIX"></a>Macro: <strong>MD_STARTFILE_PREFIX</strong></dt>
+<dd><p>If defined, this macro supplies an additional prefix to try after the
+standard prefixes. <code>MD_EXEC_PREFIX</code> is not searched when the
+compiler is built as a cross compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MD_005fSTARTFILE_005fPREFIX_005f1"></a>Macro: <strong>MD_STARTFILE_PREFIX_1</strong></dt>
+<dd><p>If defined, this macro supplies yet another prefix to try after the
+standard prefixes. It is not searched when the compiler is built as a
+cross compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fENVIRONMENT"></a>Macro: <strong>INIT_ENVIRONMENT</strong></dt>
+<dd><p>Define this macro as a C string constant if you wish to set environment
+variables for programs called by the driver, such as the assembler and
+loader. The driver passes the value of this macro to <code>putenv</code> to
+initialize the necessary environment variables.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOCAL_005fINCLUDE_005fDIR"></a>Macro: <strong>LOCAL_INCLUDE_DIR</strong></dt>
+<dd><p>Define this macro as a C string constant if you wish to override the
+standard choice of <samp>/usr/local/include</samp> as the default prefix to
+try when searching for local header files. <code>LOCAL_INCLUDE_DIR</code>
+comes before <code>NATIVE_SYSTEM_HEADER_DIR</code> (set in
+<samp>config.gcc</samp>, normally <samp>/usr/include</samp>) in the search order.
+</p>
+<p>Cross compilers do not search either <samp>/usr/local/include</samp> or its
+replacement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NATIVE_005fSYSTEM_005fHEADER_005fCOMPONENT"></a>Macro: <strong>NATIVE_SYSTEM_HEADER_COMPONENT</strong></dt>
+<dd><p>The &ldquo;component&rdquo; corresponding to <code>NATIVE_SYSTEM_HEADER_DIR</code>.
+See <code>INCLUDE_DEFAULTS</code>, below, for the description of components.
+If you do not define this macro, no component is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCLUDE_005fDEFAULTS"></a>Macro: <strong>INCLUDE_DEFAULTS</strong></dt>
+<dd><p>Define this macro if you wish to override the entire default search path
+for include files. For a native compiler, the default search path
+usually consists of <code>GCC_INCLUDE_DIR</code>, <code>LOCAL_INCLUDE_DIR</code>,
+<code>GPLUSPLUS_INCLUDE_DIR</code>, and
+<code>NATIVE_SYSTEM_HEADER_DIR</code>. In addition, <code>GPLUSPLUS_INCLUDE_DIR</code>
+and <code>GCC_INCLUDE_DIR</code> are defined automatically by <samp>Makefile</samp>,
+and specify private search areas for GCC. The directory
+<code>GPLUSPLUS_INCLUDE_DIR</code> is used only for C++ programs.
+</p>
+<p>The definition should be an initializer for an array of structures.
+Each array element should have four elements: the directory name (a
+string constant), the component name (also a string constant), a flag
+for C++-only directories,
+and a flag showing that the includes in the directory don&rsquo;t need to be
+wrapped in <code>extern &lsquo;<samp>C</samp>&rsquo;</code> when compiling C++. Mark the end of
+the array with a null element.
+</p>
+<p>The component name denotes what GNU package the include file is part of,
+if any, in all uppercase letters. For example, it might be &lsquo;<samp>GCC</samp>&rsquo;
+or &lsquo;<samp>BINUTILS</samp>&rsquo;. If the package is part of a vendor-supplied
+operating system, code the component name as &lsquo;<samp>0</samp>&rsquo;.
+</p>
+<p>For example, here is the definition used for VAX/VMS:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define INCLUDE_DEFAULTS \
+{ \
+ { &quot;GNU_GXX_INCLUDE:&quot;, &quot;G++&quot;, 1, 1}, \
+ { &quot;GNU_CC_INCLUDE:&quot;, &quot;GCC&quot;, 0, 0}, \
+ { &quot;SYS$SYSROOT:[SYSLIB.]&quot;, 0, 0, 0}, \
+ { &quot;.&quot;, 0, 0, 0}, \
+ { 0, 0, 0, 0} \
+}
+</pre></div>
+</dd></dl>
+
+<p>Here is the order of prefixes tried for exec files:
+</p>
+<ol>
+<li> Any prefixes specified by the user with <samp>-B</samp>.
+
+</li><li> The environment variable <code>GCC_EXEC_PREFIX</code> or, if <code>GCC_EXEC_PREFIX</code>
+is not set and the compiler has not been installed in the configure-time
+<var>prefix</var>, the location in which the compiler has actually been installed.
+
+</li><li> The directories specified by the environment variable <code>COMPILER_PATH</code>.
+
+</li><li> The macro <code>STANDARD_EXEC_PREFIX</code>, if the compiler has been installed
+in the configured-time <var>prefix</var>.
+
+</li><li> The location <samp>/usr/libexec/gcc/</samp>, but only if this is a native compiler.
+
+</li><li> The location <samp>/usr/lib/gcc/</samp>, but only if this is a native compiler.
+
+</li><li> The macro <code>MD_EXEC_PREFIX</code>, if defined, but only if this is a native
+compiler.
+</li></ol>
+
+<p>Here is the order of prefixes tried for startfiles:
+</p>
+<ol>
+<li> Any prefixes specified by the user with <samp>-B</samp>.
+
+</li><li> The environment variable <code>GCC_EXEC_PREFIX</code> or its automatically determined
+value based on the installed toolchain location.
+
+</li><li> The directories specified by the environment variable <code>LIBRARY_PATH</code>
+(or port-specific name; native only, cross compilers do not use this).
+
+</li><li> The macro <code>STANDARD_EXEC_PREFIX</code>, but only if the toolchain is installed
+in the configured <var>prefix</var> or this is a native compiler.
+
+</li><li> The location <samp>/usr/lib/gcc/</samp>, but only if this is a native compiler.
+
+</li><li> The macro <code>MD_EXEC_PREFIX</code>, if defined, but only if this is a native
+compiler.
+
+</li><li> The macro <code>MD_STARTFILE_PREFIX</code>, if defined, but only if this is a
+native compiler, or we have a target system root.
+
+</li><li> The macro <code>MD_STARTFILE_PREFIX_1</code>, if defined, but only if this is a
+native compiler, or we have a target system root.
+
+</li><li> The macro <code>STANDARD_STARTFILE_PREFIX</code>, with any sysroot modifications.
+If this path is relative it will be prefixed by <code>GCC_EXEC_PREFIX</code> and
+the machine suffix or <code>STANDARD_EXEC_PREFIX</code> and the machine suffix.
+
+</li><li> The macro <code>STANDARD_STARTFILE_PREFIX_1</code>, but only if this is a native
+compiler, or we have a target system root. The default for this macro is
+<samp>/lib/</samp>.
+
+</li><li> The macro <code>STANDARD_STARTFILE_PREFIX_2</code>, but only if this is a native
+compiler, or we have a target system root. The default for this macro is
+<samp>/usr/lib/</samp>.
+</li></ol>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Run_002dtime-Target.html#Run_002dtime-Target" accesskey="n" rel="next">Run-time Target</a>, Previous: <a href="Target-Structure.html#Target-Structure" accesskey="p" rel="previous">Target Structure</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dump-examples.html b/share/doc/gccint/Dump-examples.html
new file mode 100644
index 0000000..3b65b2a
--- /dev/null
+++ b/share/doc/gccint/Dump-examples.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dump examples</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dump examples">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dump examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="poly_005fint.html#poly_005fint" rel="next" title="poly_int">
+<link href="Dump-types.html#Dump-types" rel="previous" title="Dump types">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dump-examples"></a>
+<div class="header">
+<p>
+Previous: <a href="Dump-types.html#Dump-types" accesskey="p" rel="previous">Dump types</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dump-examples-1"></a>
+<h4 class="subsection">9.7.6 Dump examples</h4>
+<a name="index-dump-examples"></a>
+
+<div class="smallexample">
+<pre class="smallexample">gcc -O3 -fopt-info-missed=missed.all
+</pre></div>
+
+<p>outputs missed optimization report from all the passes into
+<samp>missed.all</samp>.
+</p>
+<p>As another example,
+</p><div class="smallexample">
+<pre class="smallexample">gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
+</pre></div>
+
+<p>will output information about missed optimizations as well as
+optimized locations from all the inlining passes into
+<samp>inline.txt</samp>.
+</p>
+<p>If the <var>filename</var> is provided, then the dumps from all the
+applicable optimizations are concatenated into the <samp>filename</samp>.
+Otherwise the dump is output onto <samp>stderr</samp>. If <var>options</var> is
+omitted, it defaults to <samp>optimized-optall</samp>, which means dump
+all information about successful optimizations from all the passes.
+In the following example, the optimization information is output on
+to <samp>stderr</samp>.
+</p>
+<div class="smallexample">
+<pre class="smallexample">gcc -O3 -fopt-info
+</pre></div>
+
+<p>Note that <samp>-fopt-info-vec-missed</samp> behaves the same as
+<samp>-fopt-info-missed-vec</samp>. The order of the optimization group
+names and message types listed after <samp>-fopt-info</samp> does not matter.
+</p>
+<p>As another example, consider
+</p>
+<div class="smallexample">
+<pre class="smallexample">gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
+</pre></div>
+
+<p>Here the two output file names <samp>vec.miss</samp> and <samp>loop.opt</samp> are
+in conflict since only one output file is allowed. In this case, only
+the first option takes effect and the subsequent options are
+ignored. Thus only the <samp>vec.miss</samp> is produced which containts
+dumps from the vectorizer about missed opportunities.
+</p>
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dump-files-and-streams.html b/share/doc/gccint/Dump-files-and-streams.html
new file mode 100644
index 0000000..d58d794
--- /dev/null
+++ b/share/doc/gccint/Dump-files-and-streams.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dump files and streams</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dump files and streams">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dump files and streams">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="Dump-output-verbosity.html#Dump-output-verbosity" rel="next" title="Dump output verbosity">
+<link href="Optimization-groups.html#Optimization-groups" rel="previous" title="Optimization groups">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dump-files-and-streams"></a>
+<div class="header">
+<p>
+Next: <a href="Dump-output-verbosity.html#Dump-output-verbosity" accesskey="n" rel="next">Dump output verbosity</a>, Previous: <a href="Optimization-groups.html#Optimization-groups" accesskey="p" rel="previous">Optimization groups</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dump-files-and-streams-1"></a>
+<h4 class="subsection">9.7.3 Dump files and streams</h4>
+<a name="index-optimization-info-file-names"></a>
+
+<p>There are two separate output streams available for outputting
+optimization information from passes. Note that both these streams
+accept <code>stderr</code> and <code>stdout</code> as valid streams and thus it is
+possible to dump output to standard output or error. This is specially
+handy for outputting all available information in a single file by
+redirecting <code>stderr</code>.
+</p>
+<dl compact="compact">
+<dt><code><code>pstream</code></code></dt>
+<dd><p>This stream is for pass-specific dump output. For example,
+<samp>-fdump-tree-vect=foo.v</samp> dumps tree vectorization pass output
+into the given file name <samp>foo.v</samp>. If the file name is not provided,
+the default file name is based on the source file and pass number. Note
+that one could also use special file names <code>stdout</code> and
+<code>stderr</code> for dumping to standard output and standard error
+respectively.
+</p>
+</dd>
+<dt><code><code>alt_stream</code></code></dt>
+<dd><p>This steam is used for printing optimization specific output in
+response to the <samp>-fopt-info</samp>. Again a file name can be given. If
+the file name is not given, it defaults to <code>stderr</code>.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dump-output-verbosity.html b/share/doc/gccint/Dump-output-verbosity.html
new file mode 100644
index 0000000..73d7682
--- /dev/null
+++ b/share/doc/gccint/Dump-output-verbosity.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dump output verbosity</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dump output verbosity">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dump output verbosity">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="Dump-types.html#Dump-types" rel="next" title="Dump types">
+<link href="Dump-files-and-streams.html#Dump-files-and-streams" rel="previous" title="Dump files and streams">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dump-output-verbosity"></a>
+<div class="header">
+<p>
+Next: <a href="Dump-types.html#Dump-types" accesskey="n" rel="next">Dump types</a>, Previous: <a href="Dump-files-and-streams.html#Dump-files-and-streams" accesskey="p" rel="previous">Dump files and streams</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dump-output-verbosity-1"></a>
+<h4 class="subsection">9.7.4 Dump output verbosity</h4>
+<a name="index-dump-verbosity"></a>
+
+<p>The dump verbosity has the following options
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>optimized</samp>&rsquo;</dt>
+<dd><p>Print information when an optimization is successfully applied. It is
+up to a pass to decide which information is relevant. For example, the
+vectorizer passes print the source location of loops which got
+successfully vectorized.
+</p>
+</dd>
+<dt>&lsquo;<samp>missed</samp>&rsquo;</dt>
+<dd><p>Print information about missed optimizations. Individual passes
+control which information to include in the output. For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">gcc -O2 -ftree-vectorize -fopt-info-vec-missed
+</pre></div>
+
+<p>will print information about missed optimization opportunities from
+vectorization passes on stderr.
+</p>
+</dd>
+<dt>&lsquo;<samp>note</samp>&rsquo;</dt>
+<dd><p>Print verbose information about optimizations, such as certain
+transformations, more detailed messages about decisions etc.
+</p>
+</dd>
+<dt>&lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Print detailed optimization information. This includes
+<var>optimized</var>, <var>missed</var>, and <var>note</var>.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dump-setup.html b/share/doc/gccint/Dump-setup.html
new file mode 100644
index 0000000..4d95c13
--- /dev/null
+++ b/share/doc/gccint/Dump-setup.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dump setup</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dump setup">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dump setup">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="Optimization-groups.html#Optimization-groups" rel="next" title="Optimization groups">
+<link href="Optimization-info.html#Optimization-info" rel="previous" title="Optimization info">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dump-setup"></a>
+<div class="header">
+<p>
+Next: <a href="Optimization-groups.html#Optimization-groups" accesskey="n" rel="next">Optimization groups</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dump-setup-1"></a>
+<h4 class="subsection">9.7.1 Dump setup</h4>
+<a name="index-dump-setup"></a>
+
+<p>A dump_manager class is defined in <samp>dumpfile.h</samp>. Various passes
+register dumping pass-specific information via <code>dump_register</code> in
+<samp>passes.cc</samp>. During the registration, an optimization pass can
+select its optimization group (see <a href="Optimization-groups.html#Optimization-groups">Optimization groups</a>). After
+that optimization information corresponding to the entire group
+(presumably from multiple passes) can be output via command-line
+switches. Note that if a pass does not fit into any of the pre-defined
+groups, it can select <code>OPTGROUP_NONE</code>.
+</p>
+<p>Note that in general, a pass need not know its dump output file name,
+whether certain flags are enabled, etc. However, for legacy reasons,
+passes could also call <code>dump_begin</code> which returns a stream in
+case the particular pass has optimization dumps enabled. A pass could
+call <code>dump_end</code> when the dump has ended. These methods should go
+away once all the passes are converted to use the new dump
+infrastructure.
+</p>
+<p>The recommended way to setup the dump output is via <code>dump_start</code>
+and <code>dump_end</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Dump-types.html b/share/doc/gccint/Dump-types.html
new file mode 100644
index 0000000..d87c89b
--- /dev/null
+++ b/share/doc/gccint/Dump-types.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Dump types</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Dump types">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Dump types">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="Dump-examples.html#Dump-examples" rel="next" title="Dump examples">
+<link href="Dump-output-verbosity.html#Dump-output-verbosity" rel="previous" title="Dump output verbosity">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Dump-types"></a>
+<div class="header">
+<p>
+Next: <a href="Dump-examples.html#Dump-examples" accesskey="n" rel="next">Dump examples</a>, Previous: <a href="Dump-output-verbosity.html#Dump-output-verbosity" accesskey="p" rel="previous">Dump output verbosity</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dump-types-1"></a>
+<h4 class="subsection">9.7.5 Dump types</h4>
+<a name="index-dump-types"></a>
+
+<dl compact="compact">
+<dt><code>dump_printf</code>
+<a name="index-dump_005fprintf"></a>
+</dt>
+<dd>
+<p>This is a generic method for doing formatted output. It takes an
+additional argument <code>dump_kind</code> which signifies the type of
+dump. This method outputs information only when the dumps are enabled
+for this particular <code>dump_kind</code>. Note that the caller doesn&rsquo;t
+need to know if the particular dump is enabled or not, or even the
+file name. The caller only needs to decide which dump output
+information is relevant, and under what conditions. This determines
+the associated flags.
+</p>
+<p>Consider the following example from <samp>loop-unroll.cc</samp> where an
+informative message about a loop (along with its location) is printed
+when any of the following flags is enabled
+</p><ul class="no-bullet">
+<li>- optimization messages
+</li><li>- RTL dumps
+</li><li>- detailed dumps
+
+</li></ul>
+
+<div class="example">
+<pre class="example">int report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_RTL | TDF_DETAILS;
+dump_printf_loc (report_flags, insn,
+ &quot;loop turned into non-loop; it never loops.\n&quot;);
+</pre></div>
+
+</dd>
+<dt><code>dump_basic_block</code>
+<a name="index-dump_005fbasic_005fblock"></a>
+</dt>
+<dd><p>Output basic block.
+</p></dd>
+<dt><code>dump_generic_expr</code>
+<a name="index-dump_005fgeneric_005fexpr"></a>
+</dt>
+<dd><p>Output generic expression.
+</p></dd>
+<dt><code>dump_gimple_stmt</code>
+<a name="index-dump_005fgimple_005fstmt"></a>
+</dt>
+<dd><p>Output gimple statement.
+</p>
+<p>Note that the above methods also have variants prefixed with
+<code>_loc</code>, such as <code>dump_printf_loc</code>, which are similar except
+they also output the source location information. The <code>_loc</code> variants
+take a <code>const dump_location_t &amp;</code>. This class can be constructed from
+a <code>gimple *</code> or from a <code>rtx_insn *</code>, and so callers can pass
+a <code>gimple *</code> or a <code>rtx_insn *</code> as the <code>_loc</code> argument.
+The <code>dump_location_t</code> constructor will extract the source location
+from the statement or instruction, along with the profile count, and
+the location in GCC&rsquo;s own source code (or the plugin) from which the dump
+call was emitted. Only the source location is currently used.
+There is also a <code>dump_user_location_t</code> class, capturing the
+source location and profile count, but not the dump emission location,
+so that locations in the user&rsquo;s code can be passed around. This
+can also be constructed from a <code>gimple *</code> and from a <code>rtx_insn *</code>,
+and it too can be passed as the <code>_loc</code> argument.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Dump-examples.html#Dump-examples" accesskey="n" rel="next">Dump examples</a>, Previous: <a href="Dump-output-verbosity.html#Dump-output-verbosity" accesskey="p" rel="previous">Dump output verbosity</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Edges.html b/share/doc/gccint/Edges.html
new file mode 100644
index 0000000..6234764
--- /dev/null
+++ b/share/doc/gccint/Edges.html
@@ -0,0 +1,346 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Edges</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Edges">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Edges">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Control-Flow.html#Control-Flow" rel="up" title="Control Flow">
+<link href="Profile-information.html#Profile-information" rel="next" title="Profile information">
+<link href="Basic-Blocks.html#Basic-Blocks" rel="previous" title="Basic Blocks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Edges"></a>
+<div class="header">
+<p>
+Next: <a href="Profile-information.html#Profile-information" accesskey="n" rel="next">Profile information</a>, Previous: <a href="Basic-Blocks.html#Basic-Blocks" accesskey="p" rel="previous">Basic Blocks</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Edges-1"></a>
+<h3 class="section">15.2 Edges</h3>
+
+<a name="index-edge-in-the-flow-graph"></a>
+<a name="index-edge"></a>
+<p>Edges represent possible control flow transfers from the end of some
+basic block A to the head of another basic block B. We say that A is
+a predecessor of B, and B is a successor of A. Edges are represented
+in GCC with the <code>edge</code> data type. Each <code>edge</code> acts as a
+link between two basic blocks: The <code>src</code> member of an edge
+points to the predecessor basic block of the <code>dest</code> basic block.
+The members <code>preds</code> and <code>succs</code> of the <code>basic_block</code> data
+type point to type-safe vectors of edges to the predecessors and
+successors of the block.
+</p>
+<a name="index-edge-iterators"></a>
+<p>When walking the edges in an edge vector, <em>edge iterators</em> should
+be used. Edge iterators are constructed using the
+<code>edge_iterator</code> data structure and several methods are available
+to operate on them:
+</p>
+<dl compact="compact">
+<dt><code>ei_start</code>
+<a name="index-ei_005fstart"></a>
+</dt>
+<dd><p>This function initializes an <code>edge_iterator</code> that points to the
+first edge in a vector of edges.
+</p>
+</dd>
+<dt><code>ei_last</code>
+<a name="index-ei_005flast"></a>
+</dt>
+<dd><p>This function initializes an <code>edge_iterator</code> that points to the
+last edge in a vector of edges.
+</p>
+</dd>
+<dt><code>ei_end_p</code>
+<a name="index-ei_005fend_005fp"></a>
+</dt>
+<dd><p>This predicate is <code>true</code> if an <code>edge_iterator</code> represents
+the last edge in an edge vector.
+</p>
+</dd>
+<dt><code>ei_one_before_end_p</code>
+<a name="index-ei_005fone_005fbefore_005fend_005fp"></a>
+</dt>
+<dd><p>This predicate is <code>true</code> if an <code>edge_iterator</code> represents
+the second last edge in an edge vector.
+</p>
+</dd>
+<dt><code>ei_next</code>
+<a name="index-ei_005fnext"></a>
+</dt>
+<dd><p>This function takes a pointer to an <code>edge_iterator</code> and makes it
+point to the next edge in the sequence.
+</p>
+</dd>
+<dt><code>ei_prev</code>
+<a name="index-ei_005fprev"></a>
+</dt>
+<dd><p>This function takes a pointer to an <code>edge_iterator</code> and makes it
+point to the previous edge in the sequence.
+</p>
+</dd>
+<dt><code>ei_edge</code>
+<a name="index-ei_005fedge"></a>
+</dt>
+<dd><p>This function returns the <code>edge</code> currently pointed to by an
+<code>edge_iterator</code>.
+</p>
+</dd>
+<dt><code>ei_safe_edge</code>
+<a name="index-ei_005fsafe_005fedge"></a>
+</dt>
+<dd><p>This function returns the <code>edge</code> currently pointed to by an
+<code>edge_iterator</code>, but returns <code>NULL</code> if the iterator is
+pointing at the end of the sequence. This function has been provided
+for existing code makes the assumption that a <code>NULL</code> edge
+indicates the end of the sequence.
+</p>
+</dd>
+</dl>
+
+<p>The convenience macro <code>FOR_EACH_EDGE</code> can be used to visit all of
+the edges in a sequence of predecessor or successor edges. It must
+not be used when an element might be removed during the traversal,
+otherwise elements will be missed. Here is an example of how to use
+the macro:
+</p>
+<div class="smallexample">
+<pre class="smallexample">edge e;
+edge_iterator ei;
+
+FOR_EACH_EDGE (e, ei, bb-&gt;succs)
+ {
+ if (e-&gt;flags &amp; EDGE_FALLTHRU)
+ break;
+ }
+</pre></div>
+
+<a name="index-fall_002dthru"></a>
+<p>There are various reasons why control flow may transfer from one block
+to another. One possibility is that some instruction, for example a
+<code>CODE_LABEL</code>, in a linearized instruction stream just always
+starts a new basic block. In this case a <em>fall-thru</em> edge links
+the basic block to the first following basic block. But there are
+several other reasons why edges may be created. The <code>flags</code>
+field of the <code>edge</code> data type is used to store information
+about the type of edge we are dealing with. Each edge is of one of
+the following types:
+</p>
+<dl compact="compact">
+<dt><em>jump</em></dt>
+<dd><p>No type flags are set for edges corresponding to jump instructions.
+These edges are used for unconditional or conditional jumps and in
+RTL also for table jumps. They are the easiest to manipulate as they
+may be freely redirected when the flow graph is not in SSA form.
+</p>
+<a name="index-EDGE_005fFALLTHRU_002c-force_005fnonfallthru"></a>
+</dd>
+<dt><em>fall-thru</em></dt>
+<dd><p>Fall-thru edges are present in case where the basic block may continue
+execution to the following one without branching. These edges have
+the <code>EDGE_FALLTHRU</code> flag set. Unlike other types of edges, these
+edges must come into the basic block immediately following in the
+instruction stream. The function <code>force_nonfallthru</code> is
+available to insert an unconditional jump in the case that redirection
+is needed. Note that this may require creation of a new basic block.
+</p>
+<a name="index-exception-handling"></a>
+<a name="index-EDGE_005fABNORMAL_002c-EDGE_005fEH"></a>
+</dd>
+<dt><em>exception handling</em></dt>
+<dd><p>Exception handling edges represent possible control transfers from a
+trapping instruction to an exception handler. The definition of
+&ldquo;trapping&rdquo; varies. In C++, only function calls can throw, but for
+Ada exceptions like division by zero or segmentation fault are
+defined and thus each instruction possibly throwing this kind of
+exception needs to be handled as control flow instruction. Exception
+edges have the <code>EDGE_ABNORMAL</code> and <code>EDGE_EH</code> flags set.
+</p>
+<a name="index-purge_005fdead_005fedges"></a>
+<p>When updating the instruction stream it is easy to change possibly
+trapping instruction to non-trapping, by simply removing the exception
+edge. The opposite conversion is difficult, but should not happen
+anyway. The edges can be eliminated via <code>purge_dead_edges</code> call.
+</p>
+<a name="index-REG_005fEH_005fREGION_002c-EDGE_005fABNORMAL_005fCALL"></a>
+<p>In the RTL representation, the destination of an exception edge is
+specified by <code>REG_EH_REGION</code> note attached to the insn.
+In case of a trapping call the <code>EDGE_ABNORMAL_CALL</code> flag is set
+too. In the <code>GIMPLE</code> representation, this extra flag is not set.
+</p>
+<a name="index-may_005ftrap_005fp_002c-tree_005fcould_005ftrap_005fp"></a>
+<p>In the RTL representation, the predicate <code>may_trap_p</code> may be used
+to check whether instruction still may trap or not. For the tree
+representation, the <code>tree_could_trap_p</code> predicate is available,
+but this predicate only checks for possible memory traps, as in
+dereferencing an invalid pointer location.
+</p>
+
+<a name="index-sibling-call"></a>
+<a name="index-EDGE_005fABNORMAL_002c-EDGE_005fSIBCALL"></a>
+</dd>
+<dt><em>sibling calls</em></dt>
+<dd><p>Sibling calls or tail calls terminate the function in a non-standard
+way and thus an edge to the exit must be present.
+<code>EDGE_SIBCALL</code> and <code>EDGE_ABNORMAL</code> are set in such case.
+These edges only exist in the RTL representation.
+</p>
+<a name="index-computed-jump"></a>
+<a name="index-EDGE_005fABNORMAL"></a>
+</dd>
+<dt><em>computed jumps</em></dt>
+<dd><p>Computed jumps contain edges to all labels in the function referenced
+from the code. All those edges have <code>EDGE_ABNORMAL</code> flag set.
+The edges used to represent computed jumps often cause compile time
+performance problems, since functions consisting of many taken labels
+and many computed jumps may have <em>very</em> dense flow graphs, so
+these edges need to be handled with special care. During the earlier
+stages of the compilation process, GCC tries to avoid such dense flow
+graphs by factoring computed jumps. For example, given the following
+series of jumps,
+</p>
+<div class="smallexample">
+<pre class="smallexample"> goto *x;
+ [ &hellip; ]
+
+ goto *x;
+ [ &hellip; ]
+
+ goto *x;
+ [ &hellip; ]
+</pre></div>
+
+<p>factoring the computed jumps results in the following code sequence
+which has a much simpler flow graph:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> goto y;
+ [ &hellip; ]
+
+ goto y;
+ [ &hellip; ]
+
+ goto y;
+ [ &hellip; ]
+
+y:
+ goto *x;
+</pre></div>
+
+<a name="index-pass_005fduplicate_005fcomputed_005fgotos"></a>
+<p>However, the classic problem with this transformation is that it has a
+runtime cost in there resulting code: An extra jump. Therefore, the
+computed jumps are un-factored in the later passes of the compiler
+(in the pass called <code>pass_duplicate_computed_gotos</code>).
+Be aware of that when you work on passes in that area. There have
+been numerous examples already where the compile time for code with
+unfactored computed jumps caused some serious headaches.
+</p>
+<a name="index-nonlocal-goto-handler"></a>
+<a name="index-EDGE_005fABNORMAL_002c-EDGE_005fABNORMAL_005fCALL"></a>
+</dd>
+<dt><em>nonlocal goto handlers</em></dt>
+<dd><p>GCC allows nested functions to return into caller using a <code>goto</code>
+to a label passed to as an argument to the callee. The labels passed
+to nested functions contain special code to cleanup after function
+call. Such sections of code are referred to as &ldquo;nonlocal goto
+receivers&rdquo;. If a function contains such nonlocal goto receivers, an
+edge from the call to the label is created with the
+<code>EDGE_ABNORMAL</code> and <code>EDGE_ABNORMAL_CALL</code> flags set.
+</p>
+<a name="index-function-entry-point_002c-alternate-function-entry-point"></a>
+<a name="index-LABEL_005fALTERNATE_005fNAME"></a>
+</dd>
+<dt><em>function entry points</em></dt>
+<dd><p>By definition, execution of function starts at basic block 0, so there
+is always an edge from the <code>ENTRY_BLOCK_PTR</code> to basic block 0.
+There is no <code>GIMPLE</code> representation for alternate entry points at
+this moment. In RTL, alternate entry points are specified by
+<code>CODE_LABEL</code> with <code>LABEL_ALTERNATE_NAME</code> defined. This
+feature is currently used for multiple entry point prologues and is
+limited to post-reload passes only. This can be used by back-ends to
+emit alternate prologues for functions called from different contexts.
+In future full support for multiple entry functions defined by Fortran
+90 needs to be implemented.
+</p>
+</dd>
+<dt><em>function exits</em></dt>
+<dd><p>In the pre-reload representation a function terminates after the last
+instruction in the insn chain and no explicit return instructions are
+used. This corresponds to the fall-thru edge into exit block. After
+reload, optimal RTL epilogues are used that use explicit (conditional)
+return instructions that are represented by edges with no flags set.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Profile-information.html#Profile-information" accesskey="n" rel="next">Profile information</a>, Previous: <a href="Basic-Blocks.html#Basic-Blocks" accesskey="p" rel="previous">Basic Blocks</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Effective_002dTarget-Keywords.html b/share/doc/gccint/Effective_002dTarget-Keywords.html
new file mode 100644
index 0000000..451aa6b
--- /dev/null
+++ b/share/doc/gccint/Effective_002dTarget-Keywords.html
@@ -0,0 +1,2063 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Effective-Target Keywords</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Effective-Target Keywords">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Effective-Target Keywords">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Add-Options.html#Add-Options" rel="next" title="Add Options">
+<link href="Selectors.html#Selectors" rel="previous" title="Selectors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Effective_002dTarget-Keywords"></a>
+<div class="header">
+<p>
+Next: <a href="Add-Options.html#Add-Options" accesskey="n" rel="next">Add Options</a>, Previous: <a href="Selectors.html#Selectors" accesskey="p" rel="previous">Selectors</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Keywords-describing-target-attributes"></a>
+<h4 class="subsection">7.2.3 Keywords describing target attributes</h4>
+
+<p>Effective-target keywords identify sets of targets that support
+particular functionality. They are used to limit tests to be run only
+for particular targets, or to specify that particular sets of targets
+are expected to fail some tests.
+</p>
+<p>Effective-target keywords are defined in <samp>lib/target-supports.exp</samp> in
+the GCC testsuite, with the exception of those that are documented as
+being local to a particular test directory.
+</p>
+<p>The &lsquo;<samp>effective target</samp>&rsquo; takes into account all of the compiler options
+with which the test will be compiled, including the multilib options.
+By convention, keywords ending in <code>_nocache</code> can also include options
+specified for the particular test in an earlier <code>dg-options</code> or
+<code>dg-add-options</code> directive.
+</p>
+<a name="Endianness"></a>
+<h4 class="subsubsection">7.2.3.1 Endianness</h4>
+
+<dl compact="compact">
+<dt><code>be</code></dt>
+<dd><p>Target uses big-endian memory order for multi-byte and multi-word data.
+</p>
+</dd>
+<dt><code>le</code></dt>
+<dd><p>Target uses little-endian memory order for multi-byte and multi-word data.
+</p></dd>
+</dl>
+
+<a name="Data-type-sizes"></a>
+<h4 class="subsubsection">7.2.3.2 Data type sizes</h4>
+
+<dl compact="compact">
+<dt><code>ilp32</code></dt>
+<dd><p>Target has 32-bit <code>int</code>, <code>long</code>, and pointers.
+</p>
+</dd>
+<dt><code>lp64</code></dt>
+<dd><p>Target has 32-bit <code>int</code>, 64-bit <code>long</code> and pointers.
+</p>
+</dd>
+<dt><code>llp64</code></dt>
+<dd><p>Target has 32-bit <code>int</code> and <code>long</code>, 64-bit <code>long long</code>
+and pointers.
+</p>
+</dd>
+<dt><code>double64</code></dt>
+<dd><p>Target has 64-bit <code>double</code>.
+</p>
+</dd>
+<dt><code>double64plus</code></dt>
+<dd><p>Target has <code>double</code> that is 64 bits or longer.
+</p>
+</dd>
+<dt><code>longdouble128</code></dt>
+<dd><p>Target has 128-bit <code>long double</code>.
+</p>
+</dd>
+<dt><code>int32plus</code></dt>
+<dd><p>Target has <code>int</code> that is at 32 bits or longer.
+</p>
+</dd>
+<dt><code>int16</code></dt>
+<dd><p>Target has <code>int</code> that is 16 bits or shorter.
+</p>
+</dd>
+<dt><code>longlong64</code></dt>
+<dd><p>Target has 64-bit <code>long long</code>.
+</p>
+</dd>
+<dt><code>long_neq_int</code></dt>
+<dd><p>Target has <code>int</code> and <code>long</code> with different sizes.
+</p>
+</dd>
+<dt><code>short_eq_int</code></dt>
+<dd><p>Target has <code>short</code> and <code>int</code> with the same size.
+</p>
+</dd>
+<dt><code>ptr_eq_short</code></dt>
+<dd><p>Target has pointers (<code>void *</code>) and <code>short</code> with the same size.
+</p>
+</dd>
+<dt><code>int_eq_float</code></dt>
+<dd><p>Target has <code>int</code> and <code>float</code> with the same size.
+</p>
+</dd>
+<dt><code>ptr_eq_long</code></dt>
+<dd><p>Target has pointers (<code>void *</code>) and <code>long</code> with the same size.
+</p>
+</dd>
+<dt><code>large_double</code></dt>
+<dd><p>Target supports <code>double</code> that is longer than <code>float</code>.
+</p>
+</dd>
+<dt><code>large_long_double</code></dt>
+<dd><p>Target supports <code>long double</code> that is longer than <code>double</code>.
+</p>
+</dd>
+<dt><code>ptr32plus</code></dt>
+<dd><p>Target has pointers that are 32 bits or longer.
+</p>
+</dd>
+<dt><code>size20plus</code></dt>
+<dd><p>Target has a 20-bit or larger address space, so supports at least
+16-bit array and structure sizes.
+</p>
+</dd>
+<dt><code>size24plus</code></dt>
+<dd><p>Target has a 24-bit or larger address space, so supports at least
+20-bit array and structure sizes.
+</p>
+</dd>
+<dt><code>size32plus</code></dt>
+<dd><p>Target has a 32-bit or larger address space, so supports at least
+24-bit array and structure sizes.
+</p>
+</dd>
+<dt><code>4byte_wchar_t</code></dt>
+<dd><p>Target has <code>wchar_t</code> that is at least 4 bytes.
+</p>
+</dd>
+<dt><code>float<var>n</var></code></dt>
+<dd><p>Target has the <code>_Float<var>n</var></code> type.
+</p>
+</dd>
+<dt><code>float<var>n</var>x</code></dt>
+<dd><p>Target has the <code>_Float<var>n</var>x</code> type.
+</p>
+</dd>
+<dt><code>float<var>n</var>_runtime</code></dt>
+<dd><p>Target has the <code>_Float<var>n</var></code> type, including runtime support
+for any options added with <code>dg-add-options</code>.
+</p>
+</dd>
+<dt><code>float<var>n</var>x_runtime</code></dt>
+<dd><p>Target has the <code>_Float<var>n</var>x</code> type, including runtime support
+for any options added with <code>dg-add-options</code>.
+</p>
+</dd>
+<dt><code>floatn_nx_runtime</code></dt>
+<dd><p>Target has runtime support for any options added with
+<code>dg-add-options</code> for any <code>_Float<var>n</var></code> or
+<code>_Float<var>n</var>x</code> type.
+</p>
+</dd>
+<dt><code>inf</code></dt>
+<dd><p>Target supports floating point infinite (<code>inf</code>) for type
+<code>double</code>.
+</p>
+</dd>
+<dt><code>inff</code></dt>
+<dd><p>Target supports floating point infinite (<code>inf</code>) for type
+<code>float</code>.
+</p></dd>
+</dl>
+<a name="Fortran_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.3 Fortran-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>fortran_integer_16</code></dt>
+<dd><p>Target supports Fortran <code>integer</code> that is 16 bytes or longer.
+</p>
+</dd>
+<dt><code>fortran_real_10</code></dt>
+<dd><p>Target supports Fortran <code>real</code> that is 10 bytes or longer.
+</p>
+</dd>
+<dt><code>fortran_real_16</code></dt>
+<dd><p>Target supports Fortran <code>real</code> that is 16 bytes or longer.
+</p>
+</dd>
+<dt><code>fortran_large_int</code></dt>
+<dd><p>Target supports Fortran <code>integer</code> kinds larger than <code>integer(8)</code>.
+</p>
+</dd>
+<dt><code>fortran_large_real</code></dt>
+<dd><p>Target supports Fortran <code>real</code> kinds larger than <code>real(8)</code>.
+</p></dd>
+</dl>
+
+<a name="Vector_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.4 Vector-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>vect_align_stack_vars</code></dt>
+<dd><p>The target&rsquo;s ABI allows stack variables to be aligned to the preferred
+vector alignment.
+</p>
+</dd>
+<dt><code>vect_avg_qi</code></dt>
+<dd><p>Target supports both signed and unsigned averaging operations on vectors
+of bytes.
+</p>
+</dd>
+<dt><code>vect_mulhrs_hi</code></dt>
+<dd><p>Target supports both signed and unsigned multiply-high-with-round-and-scale
+operations on vectors of half-words.
+</p>
+</dd>
+<dt><code>vect_sdiv_pow2_si</code></dt>
+<dd><p>Target supports signed division by constant power-of-2 operations
+on vectors of 4-byte integers.
+</p>
+</dd>
+<dt><code>vect_condition</code></dt>
+<dd><p>Target supports vector conditional operations.
+</p>
+</dd>
+<dt><code>vect_cond_mixed</code></dt>
+<dd><p>Target supports vector conditional operations where comparison operands
+have different type from the value operands.
+</p>
+</dd>
+<dt><code>vect_double</code></dt>
+<dd><p>Target supports hardware vectors of <code>double</code>.
+</p>
+</dd>
+<dt><code>vect_double_cond_arith</code></dt>
+<dd><p>Target supports conditional addition, subtraction, multiplication,
+division, minimum and maximum on vectors of <code>double</code>, via the
+<code>cond_</code> optabs.
+</p>
+</dd>
+<dt><code>vect_element_align_preferred</code></dt>
+<dd><p>The target&rsquo;s preferred vector alignment is the same as the element
+alignment.
+</p>
+</dd>
+<dt><code>vect_float</code></dt>
+<dd><p>Target supports hardware vectors of <code>float</code> when
+<samp>-funsafe-math-optimizations</samp> is in effect.
+</p>
+</dd>
+<dt><code>vect_float_strict</code></dt>
+<dd><p>Target supports hardware vectors of <code>float</code> when
+<samp>-funsafe-math-optimizations</samp> is not in effect.
+This implies <code>vect_float</code>.
+</p>
+</dd>
+<dt><code>vect_int</code></dt>
+<dd><p>Target supports hardware vectors of <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_long</code></dt>
+<dd><p>Target supports hardware vectors of <code>long</code>.
+</p>
+</dd>
+<dt><code>vect_long_long</code></dt>
+<dd><p>Target supports hardware vectors of <code>long long</code>.
+</p>
+</dd>
+<dt><code>vect_check_ptrs</code></dt>
+<dd><p>Target supports the <code>check_raw_ptrs</code> and <code>check_war_ptrs</code>
+optabs on vectors.
+</p>
+</dd>
+<dt><code>vect_fully_masked</code></dt>
+<dd><p>Target supports fully-masked (also known as fully-predicated) loops,
+so that vector loops can handle partial as well as full vectors.
+</p>
+</dd>
+<dt><code>vect_masked_load</code></dt>
+<dd><p>Target supports vector masked loads.
+</p>
+</dd>
+<dt><code>vect_masked_store</code></dt>
+<dd><p>Target supports vector masked stores.
+</p>
+</dd>
+<dt><code>vect_gather_load_ifn</code></dt>
+<dd><p>Target supports vector gather loads using internal functions
+(rather than via built-in functions or emulation).
+</p>
+</dd>
+<dt><code>vect_scatter_store</code></dt>
+<dd><p>Target supports vector scatter stores.
+</p>
+</dd>
+<dt><code>vect_aligned_arrays</code></dt>
+<dd><p>Target aligns arrays to vector alignment boundary.
+</p>
+</dd>
+<dt><code>vect_hw_misalign</code></dt>
+<dd><p>Target supports a vector misalign access.
+</p>
+</dd>
+<dt><code>vect_no_align</code></dt>
+<dd><p>Target does not support a vector alignment mechanism.
+</p>
+</dd>
+<dt><code>vect_peeling_profitable</code></dt>
+<dd><p>Target might require to peel loops for alignment purposes.
+</p>
+</dd>
+<dt><code>vect_no_int_min_max</code></dt>
+<dd><p>Target does not support a vector min and max instruction on <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_no_int_add</code></dt>
+<dd><p>Target does not support a vector add instruction on <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_no_bitwise</code></dt>
+<dd><p>Target does not support vector bitwise instructions.
+</p>
+</dd>
+<dt><code>vect_bool_cmp</code></dt>
+<dd><p>Target supports comparison of <code>bool</code> vectors for at least one
+vector length.
+</p>
+</dd>
+<dt><code>vect_char_add</code></dt>
+<dd><p>Target supports addition of <code>char</code> vectors for at least one
+vector length.
+</p>
+</dd>
+<dt><code>vect_char_mult</code></dt>
+<dd><p>Target supports <code>vector char</code> multiplication.
+</p>
+</dd>
+<dt><code>vect_short_mult</code></dt>
+<dd><p>Target supports <code>vector short</code> multiplication.
+</p>
+</dd>
+<dt><code>vect_int_mult</code></dt>
+<dd><p>Target supports <code>vector int</code> multiplication.
+</p>
+</dd>
+<dt><code>vect_long_mult</code></dt>
+<dd><p>Target supports 64 bit <code>vector long</code> multiplication.
+</p>
+</dd>
+<dt><code>vect_extract_even_odd</code></dt>
+<dd><p>Target supports vector even/odd element extraction.
+</p>
+</dd>
+<dt><code>vect_extract_even_odd_wide</code></dt>
+<dd><p>Target supports vector even/odd element extraction of vectors with elements
+<code>SImode</code> or larger.
+</p>
+</dd>
+<dt><code>vect_interleave</code></dt>
+<dd><p>Target supports vector interleaving.
+</p>
+</dd>
+<dt><code>vect_strided</code></dt>
+<dd><p>Target supports vector interleaving and extract even/odd.
+</p>
+</dd>
+<dt><code>vect_strided_wide</code></dt>
+<dd><p>Target supports vector interleaving and extract even/odd for wide
+element types.
+</p>
+</dd>
+<dt><code>vect_perm</code></dt>
+<dd><p>Target supports vector permutation.
+</p>
+</dd>
+<dt><code>vect_perm_byte</code></dt>
+<dd><p>Target supports permutation of vectors with 8-bit elements.
+</p>
+</dd>
+<dt><code>vect_perm_short</code></dt>
+<dd><p>Target supports permutation of vectors with 16-bit elements.
+</p>
+</dd>
+<dt><code>vect_perm3_byte</code></dt>
+<dd><p>Target supports permutation of vectors with 8-bit elements, and for the
+default vector length it is possible to permute:
+</p><div class="example">
+<pre class="example">{ a0, a1, a2, b0, b1, b2, &hellip; }
+</pre></div>
+<p>to:
+</p><div class="example">
+<pre class="example">{ a0, a0, a0, b0, b0, b0, &hellip; }
+{ a1, a1, a1, b1, b1, b1, &hellip; }
+{ a2, a2, a2, b2, b2, b2, &hellip; }
+</pre></div>
+<p>using only two-vector permutes, regardless of how long the sequence is.
+</p>
+</dd>
+<dt><code>vect_perm3_int</code></dt>
+<dd><p>Like <code>vect_perm3_byte</code>, but for 32-bit elements.
+</p>
+</dd>
+<dt><code>vect_perm3_short</code></dt>
+<dd><p>Like <code>vect_perm3_byte</code>, but for 16-bit elements.
+</p>
+</dd>
+<dt><code>vect_shift</code></dt>
+<dd><p>Target supports a hardware vector shift operation.
+</p>
+</dd>
+<dt><code>vect_unaligned_possible</code></dt>
+<dd><p>Target prefers vectors to have an alignment greater than element
+alignment, but also allows unaligned vector accesses in some
+circumstances.
+</p>
+</dd>
+<dt><code>vect_variable_length</code></dt>
+<dd><p>Target has variable-length vectors.
+</p>
+</dd>
+<dt><code>vect64</code></dt>
+<dd><p>Target supports vectors of 64 bits.
+</p>
+</dd>
+<dt><code>vect32</code></dt>
+<dd><p>Target supports vectors of 32 bits.
+</p>
+</dd>
+<dt><code>vect_widen_sum_hi_to_si</code></dt>
+<dd><p>Target supports a vector widening summation of <code>short</code> operands
+into <code>int</code> results, or can promote (unpack) from <code>short</code>
+to <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_widen_sum_qi_to_hi</code></dt>
+<dd><p>Target supports a vector widening summation of <code>char</code> operands
+into <code>short</code> results, or can promote (unpack) from <code>char</code>
+to <code>short</code>.
+</p>
+</dd>
+<dt><code>vect_widen_sum_qi_to_si</code></dt>
+<dd><p>Target supports a vector widening summation of <code>char</code> operands
+into <code>int</code> results.
+</p>
+</dd>
+<dt><code>vect_widen_mult_qi_to_hi</code></dt>
+<dd><p>Target supports a vector widening multiplication of <code>char</code> operands
+into <code>short</code> results, or can promote (unpack) from <code>char</code> to
+<code>short</code> and perform non-widening multiplication of <code>short</code>.
+</p>
+</dd>
+<dt><code>vect_widen_mult_hi_to_si</code></dt>
+<dd><p>Target supports a vector widening multiplication of <code>short</code> operands
+into <code>int</code> results, or can promote (unpack) from <code>short</code> to
+<code>int</code> and perform non-widening multiplication of <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_widen_mult_si_to_di_pattern</code></dt>
+<dd><p>Target supports a vector widening multiplication of <code>int</code> operands
+into <code>long</code> results.
+</p>
+</dd>
+<dt><code>vect_sdot_qi</code></dt>
+<dd><p>Target supports a vector dot-product of <code>signed char</code>.
+</p>
+</dd>
+<dt><code>vect_udot_qi</code></dt>
+<dd><p>Target supports a vector dot-product of <code>unsigned char</code>.
+</p>
+</dd>
+<dt><code>vect_usdot_qi</code></dt>
+<dd><p>Target supports a vector dot-product where one operand of the multiply is
+<code>signed char</code> and the other of <code>unsigned char</code>.
+</p>
+</dd>
+<dt><code>vect_sdot_hi</code></dt>
+<dd><p>Target supports a vector dot-product of <code>signed short</code>.
+</p>
+</dd>
+<dt><code>vect_udot_hi</code></dt>
+<dd><p>Target supports a vector dot-product of <code>unsigned short</code>.
+</p>
+</dd>
+<dt><code>vect_pack_trunc</code></dt>
+<dd><p>Target supports a vector demotion (packing) of <code>short</code> to <code>char</code>
+and from <code>int</code> to <code>short</code> using modulo arithmetic.
+</p>
+</dd>
+<dt><code>vect_unpack</code></dt>
+<dd><p>Target supports a vector promotion (unpacking) of <code>char</code> to <code>short</code>
+and from <code>char</code> to <code>int</code>.
+</p>
+</dd>
+<dt><code>vect_intfloat_cvt</code></dt>
+<dd><p>Target supports conversion from <code>signed int</code> to <code>float</code>.
+</p>
+</dd>
+<dt><code>vect_uintfloat_cvt</code></dt>
+<dd><p>Target supports conversion from <code>unsigned int</code> to <code>float</code>.
+</p>
+</dd>
+<dt><code>vect_floatint_cvt</code></dt>
+<dd><p>Target supports conversion from <code>float</code> to <code>signed int</code>.
+</p>
+</dd>
+<dt><code>vect_floatuint_cvt</code></dt>
+<dd><p>Target supports conversion from <code>float</code> to <code>unsigned int</code>.
+</p>
+</dd>
+<dt><code>vect_intdouble_cvt</code></dt>
+<dd><p>Target supports conversion from <code>signed int</code> to <code>double</code>.
+</p>
+</dd>
+<dt><code>vect_doubleint_cvt</code></dt>
+<dd><p>Target supports conversion from <code>double</code> to <code>signed int</code>.
+</p>
+</dd>
+<dt><code>vect_max_reduc</code></dt>
+<dd><p>Target supports max reduction for vectors.
+</p>
+</dd>
+<dt><code>vect_sizes_16B_8B</code></dt>
+<dd><p>Target supports 16- and 8-bytes vectors.
+</p>
+</dd>
+<dt><code>vect_sizes_32B_16B</code></dt>
+<dd><p>Target supports 32- and 16-bytes vectors.
+</p>
+</dd>
+<dt><code>vect_logical_reduc</code></dt>
+<dd><p>Target supports AND, IOR and XOR reduction on vectors.
+</p>
+</dd>
+<dt><code>vect_fold_extract_last</code></dt>
+<dd><p>Target supports the <code>fold_extract_last</code> optab.
+</p>
+</dd>
+<dt><code>vect_len_load_store</code></dt>
+<dd><p>Target supports the <code>len_load</code> and <code>len_store</code> optabs.
+</p>
+</dd>
+<dt><code>vect_partial_vectors_usage_1</code></dt>
+<dd><p>Target supports loop vectorization with partial vectors and
+<code>vect-partial-vector-usage</code> is set to 1.
+</p>
+</dd>
+<dt><code>vect_partial_vectors_usage_2</code></dt>
+<dd><p>Target supports loop vectorization with partial vectors and
+<code>vect-partial-vector-usage</code> is set to 2.
+</p>
+</dd>
+<dt><code>vect_partial_vectors</code></dt>
+<dd><p>Target supports loop vectorization with partial vectors and
+<code>vect-partial-vector-usage</code> is nonzero.
+</p>
+</dd>
+<dt><code>vect_slp_v2qi_store_align</code></dt>
+<dd><p>Target supports vectorization of 2-byte char stores with 2-byte aligned
+address at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v4qi_store_align</code></dt>
+<dd><p>Target supports vectorization of 4-byte char stores with 4-byte aligned
+address at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v4qi_store_unalign</code></dt>
+<dd><p>Target supports vectorization of 4-byte char stores with unaligned address
+at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>struct_4char_block_move</code></dt>
+<dd><p>Target supports block move for 8-byte aligned 4-byte size struct initialization.
+</p>
+</dd>
+<dt><code>vect_slp_v4qi_store_unalign_1</code></dt>
+<dd><p>Target supports vectorization of 4-byte char stores with unaligned address
+or store them with constant pool at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>struct_8char_block_move</code></dt>
+<dd><p>Target supports block move for 8-byte aligned 8-byte size struct initialization.
+</p>
+</dd>
+<dt><code>vect_slp_v8qi_store_unalign_1</code></dt>
+<dd><p>Target supports vectorization of 8-byte char stores with unaligned address
+or store them with constant pool at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>struct_16char_block_move</code></dt>
+<dd><p>Target supports block move for 8-byte aligned 16-byte size struct
+initialization.
+</p>
+</dd>
+<dt><code>vect_slp_v16qi_store_unalign_1</code></dt>
+<dd><p>Target supports vectorization of 16-byte char stores with unaligned address
+or store them with constant pool at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v2hi_store_align</code></dt>
+<dd><p>Target supports vectorization of 4-byte short stores with 4-byte aligned
+addressat plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v2hi_store_unalign</code></dt>
+<dd><p>Target supports vectorization of 4-byte short stores with unaligned address
+at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v4hi_store_unalign</code></dt>
+<dd><p>Target supports vectorization of 8-byte short stores with unaligned address
+at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v2si_store_align</code></dt>
+<dd><p>Target supports vectorization of 8-byte int stores with 8-byte aligned address
+at plain <samp>-O2</samp>.
+</p>
+</dd>
+<dt><code>vect_slp_v4si_store_unalign</code></dt>
+<dd><p>Target supports vectorization of 16-byte int stores with unaligned address
+at plain <samp>-O2</samp>.
+</p></dd>
+</dl>
+
+<a name="Thread-Local-Storage-attributes"></a>
+<h4 class="subsubsection">7.2.3.5 Thread Local Storage attributes</h4>
+
+<dl compact="compact">
+<dt><code>tls</code></dt>
+<dd><p>Target supports thread-local storage.
+</p>
+</dd>
+<dt><code>tls_native</code></dt>
+<dd><p>Target supports native (rather than emulated) thread-local storage.
+</p>
+</dd>
+<dt><code>tls_runtime</code></dt>
+<dd><p>Test system supports executing TLS executables.
+</p></dd>
+</dl>
+
+<a name="Decimal-floating-point-attributes"></a>
+<h4 class="subsubsection">7.2.3.6 Decimal floating point attributes</h4>
+
+<dl compact="compact">
+<dt><code>dfp</code></dt>
+<dd><p>Targets supports compiling decimal floating point extension to C.
+</p>
+</dd>
+<dt><code>dfp_nocache</code></dt>
+<dd><p>Including the options used to compile this particular test, the
+target supports compiling decimal floating point extension to C.
+</p>
+</dd>
+<dt><code>dfprt</code></dt>
+<dd><p>Test system can execute decimal floating point tests.
+</p>
+</dd>
+<dt><code>dfprt_nocache</code></dt>
+<dd><p>Including the options used to compile this particular test, the
+test system can execute decimal floating point tests.
+</p>
+</dd>
+<dt><code>hard_dfp</code></dt>
+<dd><p>Target generates decimal floating point instructions with current options.
+</p>
+</dd>
+<dt><code>dfp_bid</code></dt>
+<dd><p>Target uses the BID format for decimal floating point.
+</p></dd>
+</dl>
+
+<a name="ARM_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.7 ARM-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>arm32</code></dt>
+<dd><p>ARM target generates 32-bit code.
+</p>
+</dd>
+<dt><code>arm_little_endian</code></dt>
+<dd><p>ARM target that generates little-endian code.
+</p>
+</dd>
+<dt><code>arm_eabi</code></dt>
+<dd><p>ARM target adheres to the ABI for the ARM Architecture.
+</p>
+</dd>
+<dt><code>arm_fp_ok</code></dt>
+<dd><a name="arm_005ffp_005fok"></a><p>ARM target defines <code>__ARM_FP</code> using <code>-mfloat-abi=softfp</code> or
+equivalent options. Some multilibs may be incompatible with these
+options.
+</p>
+</dd>
+<dt><code>arm_fp_dp_ok</code></dt>
+<dd><a name="arm_005ffp_005fdp_005fok"></a><p>ARM target defines <code>__ARM_FP</code> with double-precision support using
+<code>-mfloat-abi=softfp</code> or equivalent options. Some multilibs may
+be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_hf_eabi</code></dt>
+<dd><p>ARM target adheres to the VFP and Advanced SIMD Register Arguments
+variant of the ABI for the ARM Architecture (as selected with
+<code>-mfloat-abi=hard</code>).
+</p>
+</dd>
+<dt><code>arm_softfloat</code></dt>
+<dd><p>ARM target uses emulated floating point operations.
+</p>
+</dd>
+<dt><code>arm_hard_vfp_ok</code></dt>
+<dd><p>ARM target supports <code>-mfpu=vfp -mfloat-abi=hard</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_iwmmxt_ok</code></dt>
+<dd><p>ARM target supports <code>-mcpu=iwmmxt</code>.
+Some multilibs may be incompatible with this option.
+</p>
+</dd>
+<dt><code>arm_neon</code></dt>
+<dd><p>ARM target supports generating NEON instructions.
+</p>
+</dd>
+<dt><code>arm_tune_string_ops_prefer_neon</code></dt>
+<dd><p>Test CPU tune supports inlining string operations with NEON instructions.
+</p>
+</dd>
+<dt><code>arm_neon_hw</code></dt>
+<dd><p>Test system supports executing NEON instructions.
+</p>
+</dd>
+<dt><code>arm_neonv2_hw</code></dt>
+<dd><p>Test system supports executing NEON v2 instructions.
+</p>
+</dd>
+<dt><code>arm_neon_ok</code></dt>
+<dd><a name="arm_005fneon_005fok"></a><p>ARM Target supports <code>-mfpu=neon -mfloat-abi=softfp</code> or compatible
+options. Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_neon_ok_no_float_abi</code></dt>
+<dd><a name="arm_005fneon_005fok_005fno_005ffloat_005fabi"></a><p>ARM Target supports NEON with <code>-mfpu=neon</code>, but without any
+-mfloat-abi= option. Some multilibs may be incompatible with this
+option.
+</p>
+</dd>
+<dt><code>arm_neonv2_ok</code></dt>
+<dd><a name="arm_005fneonv2_005fok"></a><p>ARM Target supports <code>-mfpu=neon-vfpv4 -mfloat-abi=softfp</code> or compatible
+options. Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_fp16_ok</code></dt>
+<dd><a name="arm_005ffp16_005fok"></a><p>Target supports options to generate VFP half-precision floating-point
+instructions. Some multilibs may be incompatible with these
+options. This test is valid for ARM only.
+</p>
+</dd>
+<dt><code>arm_fp16_hw</code></dt>
+<dd><p>Target supports executing VFP half-precision floating-point
+instructions. This test is valid for ARM only.
+</p>
+</dd>
+<dt><code>arm_neon_fp16_ok</code></dt>
+<dd><a name="arm_005fneon_005ffp16_005fok"></a><p>ARM Target supports <code>-mfpu=neon-fp16 -mfloat-abi=softfp</code> or compatible
+options, including <code>-mfp16-format=ieee</code> if necessary to obtain the
+<code>__fp16</code> type. Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_neon_fp16_hw</code></dt>
+<dd><p>Test system supports executing Neon half-precision float instructions.
+(Implies previous.)
+</p>
+</dd>
+<dt><code>arm_fp16_alternative_ok</code></dt>
+<dd><p>ARM target supports the ARM FP16 alternative format. Some multilibs
+may be incompatible with the options needed.
+</p>
+</dd>
+<dt><code>arm_fp16_none_ok</code></dt>
+<dd><p>ARM target supports specifying none as the ARM FP16 format.
+</p>
+</dd>
+<dt><code>arm_thumb1_ok</code></dt>
+<dd><p>ARM target generates Thumb-1 code for <code>-mthumb</code>.
+</p>
+</dd>
+<dt><code>arm_thumb2_ok</code></dt>
+<dd><p>ARM target generates Thumb-2 code for <code>-mthumb</code>.
+</p>
+</dd>
+<dt><code>arm_nothumb</code></dt>
+<dd><p>ARM target that is not using Thumb.
+</p>
+</dd>
+<dt><code>arm_vfp_ok</code></dt>
+<dd><p>ARM target supports <code>-mfpu=vfp -mfloat-abi=softfp</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_vfp3_ok</code></dt>
+<dd><a name="arm_005fvfp3_005fok"></a><p>ARM target supports <code>-mfpu=vfp3 -mfloat-abi=softfp</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_arch_v8a_hard_ok</code></dt>
+<dd><a name="arm_005farch_005fv8a_005fhard_005fok"></a><p>The compiler is targeting <code>arm*-*-*</code> and can compile and assemble code
+using the options <code>-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard</code>.
+This is not enough to guarantee that linking works.
+</p>
+</dd>
+<dt><code>arm_arch_v8a_hard_multilib</code></dt>
+<dd><p>The compiler is targeting <code>arm*-*-*</code> and can build programs using
+the options <code>-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard</code>.
+The target can also run the resulting binaries.
+</p>
+</dd>
+<dt><code>arm_v8_vfp_ok</code></dt>
+<dd><p>ARM target supports <code>-mfpu=fp-armv8 -mfloat-abi=softfp</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_neon_ok</code></dt>
+<dd><p>ARM target supports <code>-mfpu=neon-fp-armv8 -mfloat-abi=softfp</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_1a_neon_ok</code></dt>
+<dd><a name="arm_005fv8_005f1a_005fneon_005fok"></a><p>ARM target supports options to generate ARMv8.1-A Adv.SIMD instructions.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_1a_neon_hw</code></dt>
+<dd><p>ARM target supports executing ARMv8.1-A Adv.SIMD instructions. Some
+multilibs may be incompatible with the options needed. Implies
+arm_v8_1a_neon_ok.
+</p>
+</dd>
+<dt><code>arm_acq_rel</code></dt>
+<dd><p>ARM target supports acquire-release instructions.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_scalar_ok</code></dt>
+<dd><a name="arm_005fv8_005f2a_005ffp16_005fscalar_005fok"></a><p>ARM target supports options to generate instructions for ARMv8.2-A and
+scalar instructions from the FP16 extension. Some multilibs may be
+incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_scalar_hw</code></dt>
+<dd><p>ARM target supports executing instructions for ARMv8.2-A and scalar
+instructions from the FP16 extension. Some multilibs may be
+incompatible with these options. Implies arm_v8_2a_fp16_neon_ok.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_neon_ok</code></dt>
+<dd><a name="arm_005fv8_005f2a_005ffp16_005fneon_005fok"></a><p>ARM target supports options to generate instructions from ARMv8.2-A with
+the FP16 extension. Some multilibs may be incompatible with these
+options. Implies arm_v8_2a_fp16_scalar_ok.
+</p>
+</dd>
+<dt><code>arm_v8_2a_fp16_neon_hw</code></dt>
+<dd><p>ARM target supports executing instructions from ARMv8.2-A with the FP16
+extension. Some multilibs may be incompatible with these options.
+Implies arm_v8_2a_fp16_neon_ok and arm_v8_2a_fp16_scalar_hw.
+</p>
+</dd>
+<dt><code>arm_v8_2a_dotprod_neon_ok</code></dt>
+<dd><a name="arm_005fv8_005f2a_005fdotprod_005fneon_005fok"></a><p>ARM target supports options to generate instructions from ARMv8.2-A with
+the Dot Product extension. Some multilibs may be incompatible with these
+options.
+</p>
+</dd>
+<dt><code>arm_v8_2a_dotprod_neon_hw</code></dt>
+<dd><p>ARM target supports executing instructions from ARMv8.2-A with the Dot
+Product extension. Some multilibs may be incompatible with these options.
+Implies arm_v8_2a_dotprod_neon_ok.
+</p>
+</dd>
+<dt><code>arm_v8_2a_i8mm_neon_hw</code></dt>
+<dd><p>ARM target supports executing instructions from ARMv8.2-A with the 8-bit
+Matrix Multiply extension. Some multilibs may be incompatible with these
+options. Implies arm_v8_2a_i8mm_ok.
+</p>
+</dd>
+<dt><code>arm_fp16fml_neon_ok</code></dt>
+<dd><a name="arm_005ffp16fml_005fneon_005fok"></a><p>ARM target supports extensions to generate the <code>VFMAL</code> and <code>VFMLS</code>
+half-precision floating-point instructions available from ARMv8.2-A and
+onwards. Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_2a_bf16_neon_ok</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8.2-A with
+the BFloat16 extension (bf16). Some multilibs may be incompatible with these
+options.
+</p>
+</dd>
+<dt><code>arm_v8_2a_i8mm_ok</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8.2-A with
+the 8-Bit Integer Matrix Multiply extension (i8mm). Some multilibs may be
+incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_1m_mve_ok</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8.1-M with
+the M-Profile Vector Extension (MVE). Some multilibs may be incompatible
+with these options.
+</p>
+</dd>
+<dt><code>arm_v8_1m_mve_fp_ok</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8.1-M with
+the Half-precision floating-point instructions (HP), Floating-point Extension
+(FP) along with M-Profile Vector Extension (MVE). Some multilibs may be
+incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_mve_hw</code></dt>
+<dd><p>Test system supports executing MVE instructions.
+</p>
+</dd>
+<dt><code>arm_v8m_main_cde</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8-M with
+the Custom Datapath Extension (CDE). Some multilibs may be incompatible
+with these options.
+</p>
+</dd>
+<dt><code>arm_v8m_main_cde_fp</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8-M with
+the Custom Datapath Extension (CDE) and floating-point (VFP).
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_v8_1m_main_cde_mve</code></dt>
+<dd><p>ARM target supports options to generate instructions from ARMv8.1-M with
+the Custom Datapath Extension (CDE) and M-Profile Vector Extension (MVE).
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_pacbti_hw</code></dt>
+<dd><p>Test system supports executing Pointer Authentication and Branch Target
+Identification instructions.
+</p>
+</dd>
+<dt><code>arm_prefer_ldrd_strd</code></dt>
+<dd><p>ARM target prefers <code>LDRD</code> and <code>STRD</code> instructions over
+<code>LDM</code> and <code>STM</code> instructions.
+</p>
+</dd>
+<dt><code>arm_thumb1_movt_ok</code></dt>
+<dd><p>ARM target generates Thumb-1 code for <code>-mthumb</code> with <code>MOVW</code>
+and <code>MOVT</code> instructions available.
+</p>
+</dd>
+<dt><code>arm_thumb1_cbz_ok</code></dt>
+<dd><p>ARM target generates Thumb-1 code for <code>-mthumb</code> with
+<code>CBZ</code> and <code>CBNZ</code> instructions available.
+</p>
+</dd>
+<dt><code>arm_divmod_simode</code></dt>
+<dd><p>ARM target for which divmod transform is disabled, if it supports hardware
+div instruction.
+</p>
+</dd>
+<dt><code>arm_cmse_ok</code></dt>
+<dd><p>ARM target supports ARMv8-M Security Extensions, enabled by the <code>-mcmse</code>
+option.
+</p>
+</dd>
+<dt><code>arm_cmse_hw</code></dt>
+<dd><p>Test system supports executing CMSE instructions.
+</p>
+</dd>
+<dt><code>arm_coproc1_ok</code></dt>
+<dd><a name="arm_005fcoproc1_005fok"></a><p>ARM target supports the following coprocessor instructions: <code>CDP</code>,
+<code>LDC</code>, <code>STC</code>, <code>MCR</code> and <code>MRC</code>.
+</p>
+</dd>
+<dt><code>arm_coproc2_ok</code></dt>
+<dd><a name="arm_005fcoproc2_005fok"></a><p>ARM target supports all the coprocessor instructions also listed as supported
+in <a href="#arm_005fcoproc1_005fok">arm_coproc1_ok</a> in addition to the following: <code>CDP2</code>, <code>LDC2</code>,
+<code>LDC2l</code>, <code>STC2</code>, <code>STC2l</code>, <code>MCR2</code> and <code>MRC2</code>.
+</p>
+</dd>
+<dt><code>arm_coproc3_ok</code></dt>
+<dd><a name="arm_005fcoproc3_005fok"></a><p>ARM target supports all the coprocessor instructions also listed as supported
+in <a href="#arm_005fcoproc2_005fok">arm_coproc2_ok</a> in addition the following: <code>MCRR</code> and <code>MRRC</code>.
+</p>
+</dd>
+<dt><code>arm_coproc4_ok</code></dt>
+<dd><p>ARM target supports all the coprocessor instructions also listed as supported
+in <a href="#arm_005fcoproc3_005fok">arm_coproc3_ok</a> in addition the following: <code>MCRR2</code> and <code>MRRC2</code>.
+</p>
+</dd>
+<dt><code>arm_simd32_ok</code></dt>
+<dd><a name="arm_005fsimd32_005fok"></a><p>ARM Target supports options suitable for accessing the SIMD32 intrinsics from
+<code>arm_acle.h</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_sat_ok</code></dt>
+<dd><a name="arm_005fsat_005fok"></a><p>ARM Target supports options suitable for accessing the saturation
+intrinsics from <code>arm_acle.h</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_dsp_ok</code></dt>
+<dd><a name="arm_005fdsp_005fok"></a><p>ARM Target supports options suitable for accessing the DSP intrinsics
+from <code>arm_acle.h</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_softfp_ok</code></dt>
+<dd><a name="arm_005fsoftfp_005fok"></a><p>ARM target supports the <code>-mfloat-abi=softfp</code> option.
+</p>
+</dd>
+<dt><code>arm_hard_ok</code></dt>
+<dd><a name="arm_005fhard_005fok"></a><p>ARM target supports the <code>-mfloat-abi=hard</code> option.
+</p>
+</dd>
+<dt><code>arm_mve</code></dt>
+<dd><a name="arm_005fmve"></a><p>ARM target supports generating MVE instructions.
+</p>
+</dd>
+<dt><code>arm_v8_1_lob_ok</code></dt>
+<dd><a name="arm_005fv8_005f1_005flob_005fok"></a><p>ARM Target supports executing the Armv8.1-M Mainline Low Overhead Loop
+instructions <code>DLS</code> and <code>LE</code>.
+Some multilibs may be incompatible with these options.
+</p>
+</dd>
+<dt><code>arm_thumb2_no_arm_v8_1_lob</code></dt>
+<dd><p>ARM target where Thumb-2 is used without options but does not support
+executing the Armv8.1-M Mainline Low Overhead Loop instructions
+<code>DLS</code> and <code>LE</code>.
+</p>
+</dd>
+<dt><code>arm_thumb2_ok_no_arm_v8_1_lob</code></dt>
+<dd><p>ARM target generates Thumb-2 code for <code>-mthumb</code> but does not
+support executing the Armv8.1-M Mainline Low Overhead Loop
+instructions <code>DLS</code> and <code>LE</code>.
+</p>
+</dd>
+<dt><code>mbranch_protection_ok</code></dt>
+<dd><p>ARM target supporting <code>-mbranch-protection=standard</code>.
+</p>
+</dd>
+<dt><code>arm_pacbti_hw</code></dt>
+<dd><p>Test system supports for executing non nop pacbti instructions.
+</p>
+</dd>
+</dl>
+
+<a name="AArch64_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.8 AArch64-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>aarch64_asm_&lt;ext&gt;_ok</code></dt>
+<dd><p>AArch64 assembler supports the architecture extension <code>ext</code> via the
+<code>.arch_extension</code> pseudo-op.
+</p></dd>
+<dt><code>aarch64_tiny</code></dt>
+<dd><p>AArch64 target which generates instruction sequences for tiny memory model.
+</p></dd>
+<dt><code>aarch64_small</code></dt>
+<dd><p>AArch64 target which generates instruction sequences for small memory model.
+</p></dd>
+<dt><code>aarch64_large</code></dt>
+<dd><p>AArch64 target which generates instruction sequences for large memory model.
+</p></dd>
+<dt><code>aarch64_little_endian</code></dt>
+<dd><p>AArch64 target which generates instruction sequences for little endian.
+</p></dd>
+<dt><code>aarch64_big_endian</code></dt>
+<dd><p>AArch64 target which generates instruction sequences for big endian.
+</p></dd>
+<dt><code>aarch64_small_fpic</code></dt>
+<dd><p>Binutils installed on test system supports relocation types required by -fpic
+for AArch64 small memory model.
+</p></dd>
+<dt><code>aarch64_sve_hw</code></dt>
+<dd><p>AArch64 target that is able to generate and execute SVE code (regardless of
+whether it does so by default).
+</p></dd>
+<dt><code>aarch64_sve128_hw</code></dt>
+<dt><code>aarch64_sve256_hw</code></dt>
+<dt><code>aarch64_sve512_hw</code></dt>
+<dt><code>aarch64_sve1024_hw</code></dt>
+<dt><code>aarch64_sve2048_hw</code></dt>
+<dd><p>Like <code>aarch64_sve_hw</code>, but also test for an exact hardware vector length.
+</p>
+</dd>
+<dt><code>aarch64_fjcvtzs_hw</code></dt>
+<dd><p>AArch64 target that is able to generate and execute armv8.3-a FJCVTZS
+instruction.
+</p></dd>
+</dl>
+
+<a name="MIPS_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.9 MIPS-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>mips64</code></dt>
+<dd><p>MIPS target supports 64-bit instructions.
+</p>
+</dd>
+<dt><code>nomips16</code></dt>
+<dd><p>MIPS target does not produce MIPS16 code.
+</p>
+</dd>
+<dt><code>mips16_attribute</code></dt>
+<dd><p>MIPS target can generate MIPS16 code.
+</p>
+</dd>
+<dt><code>mips_loongson</code></dt>
+<dd><p>MIPS target is a Loongson-2E or -2F target using an ABI that supports
+the Loongson vector modes.
+</p>
+</dd>
+<dt><code>mips_msa</code></dt>
+<dd><p>MIPS target supports <code>-mmsa</code>, MIPS SIMD Architecture (MSA).
+</p>
+</dd>
+<dt><code>mips_newabi_large_long_double</code></dt>
+<dd><p>MIPS target supports <code>long double</code> larger than <code>double</code>
+when using the new ABI.
+</p>
+</dd>
+<dt><code>mpaired_single</code></dt>
+<dd><p>MIPS target supports <code>-mpaired-single</code>.
+</p></dd>
+</dl>
+
+<a name="MSP430_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.10 MSP430-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>msp430_small</code></dt>
+<dd><p>MSP430 target has the small memory model enabled (<code>-msmall</code>).
+</p>
+</dd>
+<dt><code>msp430_large</code></dt>
+<dd><p>MSP430 target has the large memory model enabled (<code>-mlarge</code>).
+</p></dd>
+</dl>
+
+<a name="PowerPC_002dspecific-attributes"></a>
+<h4 class="subsubsection">7.2.3.11 PowerPC-specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>dfp_hw</code></dt>
+<dd><p>PowerPC target supports executing hardware DFP instructions.
+</p>
+</dd>
+<dt><code>p8vector_hw</code></dt>
+<dd><p>PowerPC target supports executing VSX instructions (ISA 2.07).
+</p>
+</dd>
+<dt><code>powerpc64</code></dt>
+<dd><p>Test system supports executing 64-bit instructions.
+</p>
+</dd>
+<dt><code>powerpc_altivec</code></dt>
+<dd><p>PowerPC target supports AltiVec.
+</p>
+</dd>
+<dt><code>powerpc_altivec_ok</code></dt>
+<dd><p>PowerPC target supports <code>-maltivec</code>.
+</p>
+</dd>
+<dt><code>powerpc_eabi_ok</code></dt>
+<dd><p>PowerPC target supports <code>-meabi</code>.
+</p>
+</dd>
+<dt><code>powerpc_elfv2</code></dt>
+<dd><p>PowerPC target supports <code>-mabi=elfv2</code>.
+</p>
+</dd>
+<dt><code>powerpc_fprs</code></dt>
+<dd><p>PowerPC target supports floating-point registers.
+</p>
+</dd>
+<dt><code>powerpc_hard_double</code></dt>
+<dd><p>PowerPC target supports hardware double-precision floating-point.
+</p>
+</dd>
+<dt><code>powerpc_htm_ok</code></dt>
+<dd><p>PowerPC target supports <code>-mhtm</code>
+</p>
+</dd>
+<dt><code>powerpc_p8vector_ok</code></dt>
+<dd><p>PowerPC target supports <code>-mpower8-vector</code>
+</p>
+</dd>
+<dt><code>powerpc_popcntb_ok</code></dt>
+<dd><p>PowerPC target supports the <code>popcntb</code> instruction, indicating
+that this target supports <code>-mcpu=power5</code>.
+</p>
+</dd>
+<dt><code>powerpc_ppu_ok</code></dt>
+<dd><p>PowerPC target supports <code>-mcpu=cell</code>.
+</p>
+</dd>
+<dt><code>powerpc_spe</code></dt>
+<dd><p>PowerPC target supports PowerPC SPE.
+</p>
+</dd>
+<dt><code>powerpc_spe_nocache</code></dt>
+<dd><p>Including the options used to compile this particular test, the
+PowerPC target supports PowerPC SPE.
+</p>
+</dd>
+<dt><code>powerpc_spu</code></dt>
+<dd><p>PowerPC target supports PowerPC SPU.
+</p>
+</dd>
+<dt><code>powerpc_vsx_ok</code></dt>
+<dd><p>PowerPC target supports <code>-mvsx</code>.
+</p>
+</dd>
+<dt><code>powerpc_405_nocache</code></dt>
+<dd><p>Including the options used to compile this particular test, the
+PowerPC target supports PowerPC 405.
+</p>
+</dd>
+<dt><code>ppc_recip_hw</code></dt>
+<dd><p>PowerPC target supports executing reciprocal estimate instructions.
+</p>
+</dd>
+<dt><code>vmx_hw</code></dt>
+<dd><p>PowerPC target supports executing AltiVec instructions.
+</p>
+</dd>
+<dt><code>vsx_hw</code></dt>
+<dd><p>PowerPC target supports executing VSX instructions (ISA 2.06).
+</p>
+</dd>
+<dt><code>has_arch_pwr5</code></dt>
+<dd><p>PowerPC target pre-defines macro _ARCH_PWR5 which means the <code>-mcpu</code>
+setting is Power5 or later.
+</p>
+</dd>
+<dt><code>has_arch_pwr6</code></dt>
+<dd><p>PowerPC target pre-defines macro _ARCH_PWR6 which means the <code>-mcpu</code>
+setting is Power6 or later.
+</p>
+</dd>
+<dt><code>has_arch_pwr7</code></dt>
+<dd><p>PowerPC target pre-defines macro _ARCH_PWR7 which means the <code>-mcpu</code>
+setting is Power7 or later.
+</p>
+</dd>
+<dt><code>has_arch_pwr8</code></dt>
+<dd><p>PowerPC target pre-defines macro _ARCH_PWR8 which means the <code>-mcpu</code>
+setting is Power8 or later.
+</p>
+</dd>
+<dt><code>has_arch_pwr9</code></dt>
+<dd><p>PowerPC target pre-defines macro _ARCH_PWR9 which means the <code>-mcpu</code>
+setting is Power9 or later.
+</p></dd>
+</dl>
+
+<a name="RISC_002dV-specific-attributes"></a>
+<h4 class="subsubsection">7.2.3.12 RISC-V specific attributes</h4>
+
+<dl compact="compact">
+<dt><code>rv32</code></dt>
+<dd><p>Test system has an integer register width of 32 bits.
+</p>
+</dd>
+<dt><code>rv64</code></dt>
+<dd><p>Test system has an integer register width of 64 bits.
+</p>
+</dd>
+</dl>
+
+<a name="Other-hardware-attributes"></a>
+<h4 class="subsubsection">7.2.3.13 Other hardware attributes</h4>
+
+<dl compact="compact">
+<dt><code>autoincdec</code></dt>
+<dd><p>Target supports autoincrement/decrement addressing.
+</p>
+</dd>
+<dt><code>avx</code></dt>
+<dd><p>Target supports compiling <code>avx</code> instructions.
+</p>
+</dd>
+<dt><code>avx_runtime</code></dt>
+<dd><p>Target supports the execution of <code>avx</code> instructions.
+</p>
+</dd>
+<dt><code>avx2</code></dt>
+<dd><p>Target supports compiling <code>avx2</code> instructions.
+</p>
+</dd>
+<dt><code>avx2_runtime</code></dt>
+<dd><p>Target supports the execution of <code>avx2</code> instructions.
+</p>
+</dd>
+<dt><code>avxvnni</code></dt>
+<dd><p>Target supports the execution of <code>avxvnni</code> instructions.
+</p>
+</dd>
+<dt><code>avx512f</code></dt>
+<dd><p>Target supports compiling <code>avx512f</code> instructions.
+</p>
+</dd>
+<dt><code>avx512f_runtime</code></dt>
+<dd><p>Target supports the execution of <code>avx512f</code> instructions.
+</p>
+</dd>
+<dt><code>avx512vp2intersect</code></dt>
+<dd><p>Target supports the execution of <code>avx512vp2intersect</code> instructions.
+</p>
+</dd>
+<dt><code>avxifma</code></dt>
+<dd><p>Target supports the execution of <code>avxifma</code> instructions.
+</p>
+</dd>
+<dt><code>avxneconvert</code></dt>
+<dd><p>Target supports the execution of <code>avxneconvert</code> instructions.
+</p>
+</dd>
+<dt><code>avxvnniint8</code></dt>
+<dd><p>Target supports the execution of <code>avxvnniint8</code> instructions.
+</p>
+</dd>
+<dt><code>amx_tile</code></dt>
+<dd><p>Target supports the execution of <code>amx-tile</code> instructions.
+</p>
+</dd>
+<dt><code>amx_int8</code></dt>
+<dd><p>Target supports the execution of <code>amx-int8</code> instructions.
+</p>
+</dd>
+<dt><code>amx_bf16</code></dt>
+<dd><p>Target supports the execution of <code>amx-bf16</code> instructions.
+</p>
+</dd>
+<dt><code>amx_complex</code></dt>
+<dd><p>Target supports the execution of <code>amx-complex</code> instructions.
+</p>
+</dd>
+<dt><code>amx_fp16</code></dt>
+<dd><p>Target supports the execution of <code>amx-fp16</code> instructions.
+</p>
+</dd>
+<dt><code>cell_hw</code></dt>
+<dd><p>Test system can execute AltiVec and Cell PPU instructions.
+</p>
+</dd>
+<dt><code>clz</code></dt>
+<dd><p>Target supports a clz optab on int.
+</p>
+</dd>
+<dt><code>clzl</code></dt>
+<dd><p>Target supports a clz optab on long.
+</p>
+</dd>
+<dt><code>clzll</code></dt>
+<dd><p>Target supports a clz optab on long long.
+</p>
+</dd>
+<dt><code>ctz</code></dt>
+<dd><p>Target supports a ctz optab on int.
+</p>
+</dd>
+<dt><code>ctzl</code></dt>
+<dd><p>Target supports a ctz optab on long.
+</p>
+</dd>
+<dt><code>ctzll</code></dt>
+<dd><p>Target supports a ctz optab on long long.
+</p>
+</dd>
+<dt><code>cmpccxadd</code></dt>
+<dd><p>Target supports the execution of <code>cmpccxadd</code> instructions.
+</p>
+</dd>
+<dt><code>coldfire_fpu</code></dt>
+<dd><p>Target uses a ColdFire FPU.
+</p>
+</dd>
+<dt><code>divmod</code></dt>
+<dd><p>Target supporting hardware divmod insn or divmod libcall.
+</p>
+</dd>
+<dt><code>divmod_simode</code></dt>
+<dd><p>Target supporting hardware divmod insn or divmod libcall for SImode.
+</p>
+</dd>
+<dt><code>hard_float</code></dt>
+<dd><p>Target supports FPU instructions.
+</p>
+</dd>
+<dt><code>non_strict_align</code></dt>
+<dd><p>Target does not require strict alignment.
+</p>
+</dd>
+<dt><code>pie_copyreloc</code></dt>
+<dd><p>The x86-64 target linker supports PIE with copy reloc.
+</p>
+</dd>
+<dt><code>popcount</code></dt>
+<dd><p>Target supports a popcount optab on int.
+</p>
+</dd>
+<dt><code>popcountl</code></dt>
+<dd><p>Target supports a popcount optab on long.
+</p>
+</dd>
+<dt><code>popcountll</code></dt>
+<dd><p>Target supports a popcount optab on long long.
+</p>
+</dd>
+<dt><code>prefetchi</code></dt>
+<dd><p>Target supports the execution of <code>prefetchi</code> instructions.
+</p>
+</dd>
+<dt><code>raoint</code></dt>
+<dd><p>Target supports the execution of <code>raoint</code> instructions.
+</p>
+</dd>
+<dt><code>rdrand</code></dt>
+<dd><p>Target supports x86 <code>rdrand</code> instruction.
+</p>
+</dd>
+<dt><code>sqrt_insn</code></dt>
+<dd><p>Target has a square root instruction that the compiler can generate.
+</p>
+</dd>
+<dt><code>sse</code></dt>
+<dd><p>Target supports compiling <code>sse</code> instructions.
+</p>
+</dd>
+<dt><code>sse_runtime</code></dt>
+<dd><p>Target supports the execution of <code>sse</code> instructions.
+</p>
+</dd>
+<dt><code>sse2</code></dt>
+<dd><p>Target supports compiling <code>sse2</code> instructions.
+</p>
+</dd>
+<dt><code>sse2_runtime</code></dt>
+<dd><p>Target supports the execution of <code>sse2</code> instructions.
+</p>
+</dd>
+<dt><code>sync_char_short</code></dt>
+<dd><p>Target supports atomic operations on <code>char</code> and <code>short</code>.
+</p>
+</dd>
+<dt><code>sync_int_long</code></dt>
+<dd><p>Target supports atomic operations on <code>int</code> and <code>long</code>.
+</p>
+</dd>
+<dt><code>ultrasparc_hw</code></dt>
+<dd><p>Test environment appears to run executables on a simulator that
+accepts only <code>EM_SPARC</code> executables and chokes on <code>EM_SPARC32PLUS</code>
+or <code>EM_SPARCV9</code> executables.
+</p>
+</dd>
+<dt><code>vect_cmdline_needed</code></dt>
+<dd><p>Target requires a command line argument to enable a SIMD instruction set.
+</p>
+</dd>
+<dt><code>xorsign</code></dt>
+<dd><p>Target supports the xorsign optab expansion.
+</p>
+</dd>
+</dl>
+
+<a name="Environment-attributes"></a>
+<h4 class="subsubsection">7.2.3.14 Environment attributes</h4>
+
+<dl compact="compact">
+<dt><code>c</code></dt>
+<dd><p>The language for the compiler under test is C.
+</p>
+</dd>
+<dt><code>c++</code></dt>
+<dd><p>The language for the compiler under test is C++.
+</p>
+</dd>
+<dt><code>c99_runtime</code></dt>
+<dd><p>Target provides a full C99 runtime.
+</p>
+</dd>
+<dt><code>correct_iso_cpp_string_wchar_protos</code></dt>
+<dd><p>Target <code>string.h</code> and <code>wchar.h</code> headers provide C++ required
+overloads for <code>strchr</code> etc. functions.
+</p>
+</dd>
+<dt><code>d_runtime</code></dt>
+<dd><p>Target provides the D runtime.
+</p>
+</dd>
+<dt><code>d_runtime_has_std_library</code></dt>
+<dd><p>Target provides the D standard library (Phobos).
+</p>
+</dd>
+<dt><code>dummy_wcsftime</code></dt>
+<dd><p>Target uses a dummy <code>wcsftime</code> function that always returns zero.
+</p>
+</dd>
+<dt><code>fd_truncate</code></dt>
+<dd><p>Target can truncate a file from a file descriptor, as used by
+<samp>libgfortran/io/unix.c:fd_truncate</samp>; i.e. <code>ftruncate</code> or
+<code>chsize</code>.
+</p>
+</dd>
+<dt><code>fenv</code></dt>
+<dd><p>Target provides <samp>fenv.h</samp> include file.
+</p>
+</dd>
+<dt><code>fenv_exceptions</code></dt>
+<dd><p>Target supports <samp>fenv.h</samp> with all the standard IEEE exceptions
+and floating-point exceptions are raised by arithmetic operations.
+</p>
+</dd>
+<dt><code>fenv_exceptions_dfp</code></dt>
+<dd><p>Target supports <samp>fenv.h</samp> with all the standard IEEE exceptions
+and floating-point exceptions are raised by arithmetic operations for
+decimal floating point.
+</p>
+</dd>
+<dt><code>fileio</code></dt>
+<dd><p>Target offers such file I/O library functions as <code>fopen</code>,
+<code>fclose</code>, <code>tmpnam</code>, and <code>remove</code>. This is a link-time
+requirement for the presence of the functions in the library; even if
+they fail at runtime, the requirement is still regarded as satisfied.
+</p>
+</dd>
+<dt><code>freestanding</code></dt>
+<dd><p>Target is &lsquo;<samp>freestanding</samp>&rsquo; as defined in section 4 of the C99 standard.
+Effectively, it is a target which supports no extra headers or libraries
+other than what is considered essential.
+</p>
+</dd>
+<dt><code>gettimeofday</code></dt>
+<dd><p>Target supports <code>gettimeofday</code>.
+</p>
+</dd>
+<dt><code>init_priority</code></dt>
+<dd><p>Target supports constructors with initialization priority arguments.
+</p>
+</dd>
+<dt><code>inttypes_types</code></dt>
+<dd><p>Target has the basic signed and unsigned types in <code>inttypes.h</code>.
+This is for tests that GCC&rsquo;s notions of these types agree with those
+in the header, as some systems have only <code>inttypes.h</code>.
+</p>
+</dd>
+<dt><code>lax_strtofp</code></dt>
+<dd><p>Target might have errors of a few ULP in string to floating-point
+conversion functions and overflow is not always detected correctly by
+those functions.
+</p>
+</dd>
+<dt><code>mempcpy</code></dt>
+<dd><p>Target provides <code>mempcpy</code> function.
+</p>
+</dd>
+<dt><code>mmap</code></dt>
+<dd><p>Target supports <code>mmap</code>.
+</p>
+</dd>
+<dt><code>newlib</code></dt>
+<dd><p>Target supports Newlib.
+</p>
+</dd>
+<dt><code>newlib_nano_io</code></dt>
+<dd><p>GCC was configured with <code>--enable-newlib-nano-formatted-io</code>, which reduces
+the code size of Newlib formatted I/O functions.
+</p>
+</dd>
+<dt><code>posix_memalign</code></dt>
+<dd><p>Target supports <code>posix_memalign</code>.
+</p>
+</dd>
+<dt><code>pow10</code></dt>
+<dd><p>Target provides <code>pow10</code> function.
+</p>
+</dd>
+<dt><code>pthread</code></dt>
+<dd><p>Target can compile using <code>pthread.h</code> with no errors or warnings.
+</p>
+</dd>
+<dt><code>pthread_h</code></dt>
+<dd><p>Target has <code>pthread.h</code>.
+</p>
+</dd>
+<dt><code>sockets</code></dt>
+<dd><p>Target can compile using <code>sys/socket.h</code> with no errors or warnings.
+</p>
+</dd>
+<dt><code>run_expensive_tests</code></dt>
+<dd><p>Expensive testcases (usually those that consume excessive amounts of CPU
+time) should be run on this target. This can be enabled by setting the
+<code>GCC_TEST_RUN_EXPENSIVE</code> environment variable to a non-empty string.
+</p>
+</dd>
+<dt><code>simulator</code></dt>
+<dd><p>Test system runs executables on a simulator (i.e. slowly) rather than
+hardware (i.e. fast).
+</p>
+</dd>
+<dt><code>signal</code></dt>
+<dd><p>Target has <code>signal.h</code>.
+</p>
+</dd>
+<dt><code>stabs</code></dt>
+<dd><p>Target supports the stabs debugging format.
+</p>
+</dd>
+<dt><code>stdint_types</code></dt>
+<dd><p>Target has the basic signed and unsigned C types in <code>stdint.h</code>.
+This will be obsolete when GCC ensures a working <code>stdint.h</code> for
+all targets.
+</p>
+</dd>
+<dt><code>stdint_types_mbig_endian</code></dt>
+<dd><p>Target accepts the option <samp>-mbig-endian</samp> and <code>stdint.h</code>
+can be included without error when <samp>-mbig-endian</samp> is passed.
+</p>
+</dd>
+<dt><code>stpcpy</code></dt>
+<dd><p>Target provides <code>stpcpy</code> function.
+</p>
+</dd>
+<dt><code>sysconf</code></dt>
+<dd><p>Target supports <code>sysconf</code>.
+</p>
+</dd>
+<dt><code>trampolines</code></dt>
+<dd><p>Target supports trampolines.
+</p>
+</dd>
+<dt><code>two_plus_gigs</code></dt>
+<dd><p>Target supports linking programs with 2+GiB of data.
+</p>
+</dd>
+<dt><code>uclibc</code></dt>
+<dd><p>Target supports uClibc.
+</p>
+</dd>
+<dt><code>unwrapped</code></dt>
+<dd><p>Target does not use a status wrapper.
+</p>
+</dd>
+<dt><code>vxworks_kernel</code></dt>
+<dd><p>Target is a VxWorks kernel.
+</p>
+</dd>
+<dt><code>vxworks_rtp</code></dt>
+<dd><p>Target is a VxWorks RTP.
+</p>
+</dd>
+<dt><code>wchar</code></dt>
+<dd><p>Target supports wide characters.
+</p>
+</dd>
+<dt><code>weak_undefined</code></dt>
+<dd><p>Target supports weak undefined symbols
+</p></dd>
+</dl>
+
+<a name="Other-attributes"></a>
+<h4 class="subsubsection">7.2.3.15 Other attributes</h4>
+
+<dl compact="compact">
+<dt><code>R_flag_in_section</code></dt>
+<dd><p>Target supports the &rsquo;R&rsquo; flag in .section directive in assembly inputs.
+</p>
+</dd>
+<dt><code>automatic_stack_alignment</code></dt>
+<dd><p>Target supports automatic stack alignment.
+</p>
+</dd>
+<dt><code>branch_cost</code></dt>
+<dd><p>Target supports <samp>-branch-cost=N</samp>.
+</p>
+</dd>
+<dt><code>const_volatile_readonly_section</code></dt>
+<dd><p>Target places const volatile variables in readonly sections.
+</p>
+</dd>
+<dt><code>cxa_atexit</code></dt>
+<dd><p>Target uses <code>__cxa_atexit</code>.
+</p>
+</dd>
+<dt><code>default_packed</code></dt>
+<dd><a name="default_005fpacked"></a><p>Target has packed layout of structure members by default.
+</p>
+</dd>
+<dt><code>exceptions</code></dt>
+<dd><p>Target supports exceptions.
+</p>
+</dd>
+<dt><code>exceptions_enabled</code></dt>
+<dd><p>Target supports exceptions and they are enabled in the current
+testing configuration.
+</p>
+</dd>
+<dt><code>fgraphite</code></dt>
+<dd><p>Target supports Graphite optimizations.
+</p>
+</dd>
+<dt><code>fixed_point</code></dt>
+<dd><p>Target supports fixed-point extension to C.
+</p>
+</dd>
+<dt><code>fopenacc</code></dt>
+<dd><p>Target supports OpenACC via <samp>-fopenacc</samp>.
+</p>
+</dd>
+<dt><code>fopenmp</code></dt>
+<dd><p>Target supports OpenMP via <samp>-fopenmp</samp>.
+</p>
+</dd>
+<dt><code>fpic</code></dt>
+<dd><p>Target supports <samp>-fpic</samp> and <samp>-fPIC</samp>.
+</p>
+</dd>
+<dt><code>freorder</code></dt>
+<dd><p>Target supports <samp>-freorder-blocks-and-partition</samp>.
+</p>
+</dd>
+<dt><code>fstack_protector</code></dt>
+<dd><p>Target supports <samp>-fstack-protector</samp>.
+</p>
+</dd>
+<dt><code>gas</code></dt>
+<dd><p>Target uses GNU <code>as</code>.
+</p>
+</dd>
+<dt><code>gc_sections</code></dt>
+<dd><p>Target supports <samp>--gc-sections</samp>.
+</p>
+</dd>
+<dt><code>gld</code></dt>
+<dd><p>Target uses GNU <code>ld</code>.
+</p>
+</dd>
+<dt><code>keeps_null_pointer_checks</code></dt>
+<dd><p>Target keeps null pointer checks, either due to the use of
+<samp>-fno-delete-null-pointer-checks</samp> or hardwired into the target.
+</p>
+</dd>
+<dt><code>llvm_binutils</code></dt>
+<dd><p>Target is using an LLVM assembler and/or linker, instead of GNU Binutils.
+</p>
+</dd>
+<dt><code>lra</code></dt>
+<dd><p>Target supports local register allocator (LRA).
+</p>
+</dd>
+<dt><code>lto</code></dt>
+<dd><p>Compiler has been configured to support link-time optimization (LTO).
+</p>
+</dd>
+<dt><code>lto_incremental</code></dt>
+<dd><p>Compiler and linker support link-time optimization relocatable linking
+with <samp>-r</samp> and <samp>-flto</samp> options.
+</p>
+</dd>
+<dt><code>naked_functions</code></dt>
+<dd><p>Target supports the <code>naked</code> function attribute.
+</p>
+</dd>
+<dt><code>named_sections</code></dt>
+<dd><p>Target supports named sections.
+</p>
+</dd>
+<dt><code>natural_alignment_32</code></dt>
+<dd><p>Target uses natural alignment (aligned to type size) for types of
+32 bits or less.
+</p>
+</dd>
+<dt><code>tail_call</code></dt>
+<dd><p>Target supports tail-call optimizations.
+</p>
+</dd>
+<dt><code>target_natural_alignment_64</code></dt>
+<dd><p>Target uses natural alignment (aligned to type size) for types of
+64 bits or less.
+</p>
+</dd>
+<dt><code>no_alignment_constraints</code></dt>
+<dd><p>Target defines __BIGGEST_ALIGNMENT__=1. Hence target imposes
+no alignment constraints. This is similar, but not necessarily
+the same as <a href="#default_005fpacked">default_packed</a>. Although <code>BIGGEST_FIELD_ALIGNMENT</code>
+defaults to <code>BIGGEST_ALIGNMENT</code> for most targets, it is possible
+for a target to set those two with different values and have different
+alignment constraints for aggregate and non-aggregate types.
+</p>
+</dd>
+<dt><code>noinit</code></dt>
+<dd><p>Target supports the <code>noinit</code> variable attribute.
+</p>
+</dd>
+<dt><code>nonpic</code></dt>
+<dd><p>Target does not generate PIC by default.
+</p>
+</dd>
+<dt><code>o_flag_in_section</code></dt>
+<dd><p>Target supports the &rsquo;o&rsquo; flag in .section directive in assembly inputs.
+</p>
+</dd>
+<dt><code>offload_gcn</code></dt>
+<dd><p>Target has been configured for OpenACC/OpenMP offloading on AMD GCN.
+</p>
+</dd>
+<dt><code>persistent</code></dt>
+<dd><p>Target supports the <code>persistent</code> variable attribute.
+</p>
+</dd>
+<dt><code>pie_enabled</code></dt>
+<dd><p>Target generates PIE by default.
+</p>
+</dd>
+<dt><code>pcc_bitfield_type_matters</code></dt>
+<dd><p>Target defines <code>PCC_BITFIELD_TYPE_MATTERS</code>.
+</p>
+</dd>
+<dt><code>pe_aligned_commons</code></dt>
+<dd><p>Target supports <samp>-mpe-aligned-commons</samp>.
+</p>
+</dd>
+<dt><code>pie</code></dt>
+<dd><p>Target supports <samp>-pie</samp>, <samp>-fpie</samp> and <samp>-fPIE</samp>.
+</p>
+</dd>
+<dt><code>rdynamic</code></dt>
+<dd><p>Target supports <samp>-rdynamic</samp>.
+</p>
+</dd>
+<dt><code>scalar_all_fma</code></dt>
+<dd><p>Target supports all four fused multiply-add optabs for both <code>float</code>
+and <code>double</code>. These optabs are: <code>fma_optab</code>, <code>fms_optab</code>,
+<code>fnma_optab</code> and <code>fnms_optab</code>.
+</p>
+</dd>
+<dt><code>section_anchors</code></dt>
+<dd><p>Target supports section anchors.
+</p>
+</dd>
+<dt><code>short_enums</code></dt>
+<dd><p>Target defaults to short enums.
+</p>
+</dd>
+<dt><code>stack_size</code></dt>
+<dd><a name="stack_005fsize_005fet"></a><p>Target has limited stack size. The stack size limit can be obtained using the
+STACK_SIZE macro defined by <a href="Add-Options.html#stack_005fsize_005fao"><code>dg-add-options</code> feature
+<code>stack_size</code></a>.
+</p>
+</dd>
+<dt><code>static</code></dt>
+<dd><p>Target supports <samp>-static</samp>.
+</p>
+</dd>
+<dt><code>static_libgfortran</code></dt>
+<dd><p>Target supports statically linking &lsquo;<samp>libgfortran</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>string_merging</code></dt>
+<dd><p>Target supports merging string constants at link time.
+</p>
+</dd>
+<dt><code>ucn</code></dt>
+<dd><p>Target supports compiling and assembling UCN.
+</p>
+</dd>
+<dt><code>ucn_nocache</code></dt>
+<dd><p>Including the options used to compile this particular test, the
+target supports compiling and assembling UCN.
+</p>
+</dd>
+<dt><code>unaligned_stack</code></dt>
+<dd><p>Target does not guarantee that its <code>STACK_BOUNDARY</code> is greater than
+or equal to the required vector alignment.
+</p>
+</dd>
+<dt><code>vector_alignment_reachable</code></dt>
+<dd><p>Vector alignment is reachable for types of 32 bits or less.
+</p>
+</dd>
+<dt><code>vector_alignment_reachable_for_64bit</code></dt>
+<dd><p>Vector alignment is reachable for types of 64 bits or less.
+</p>
+</dd>
+<dt><code>vma_equals_lma</code></dt>
+<dd><p>Target generates executable with VMA equal to LMA for .data section.
+</p>
+</dd>
+<dt><code>wchar_t_char16_t_compatible</code></dt>
+<dd><p>Target supports <code>wchar_t</code> that is compatible with <code>char16_t</code>.
+</p>
+</dd>
+<dt><code>wchar_t_char32_t_compatible</code></dt>
+<dd><p>Target supports <code>wchar_t</code> that is compatible with <code>char32_t</code>.
+</p>
+</dd>
+<dt><code>comdat_group</code></dt>
+<dd><p>Target uses comdat groups.
+</p>
+</dd>
+<dt><code>indirect_calls</code></dt>
+<dd><p>Target supports indirect calls, i.e. calls where the target is not
+constant.
+</p>
+</dd>
+<dt><code>lgccjit</code></dt>
+<dd><p>Target supports -lgccjit, i.e. libgccjit.so can be linked into jit tests.
+</p>
+</dd>
+<dt><code>__OPTIMIZE__</code></dt>
+<dd><p>Optimizations are enabled (<code>__OPTIMIZE__</code>) per the current
+compiler flags.
+</p></dd>
+</dl>
+
+<a name="Local-to-tests-in-gcc_002etarget_002fi386"></a>
+<h4 class="subsubsection">7.2.3.16 Local to tests in <code>gcc.target/i386</code></h4>
+
+<dl compact="compact">
+<dt><code>3dnow</code></dt>
+<dd><p>Target supports compiling <code>3dnow</code> instructions.
+</p>
+</dd>
+<dt><code>aes</code></dt>
+<dd><p>Target supports compiling <code>aes</code> instructions.
+</p>
+</dd>
+<dt><code>fma4</code></dt>
+<dd><p>Target supports compiling <code>fma4</code> instructions.
+</p>
+</dd>
+<dt><code>mfentry</code></dt>
+<dd><p>Target supports the <code>-mfentry</code> option that alters the
+position of profiling calls such that they precede the prologue.
+</p>
+</dd>
+<dt><code>ms_hook_prologue</code></dt>
+<dd><p>Target supports attribute <code>ms_hook_prologue</code>.
+</p>
+</dd>
+<dt><code>pclmul</code></dt>
+<dd><p>Target supports compiling <code>pclmul</code> instructions.
+</p>
+</dd>
+<dt><code>sse3</code></dt>
+<dd><p>Target supports compiling <code>sse3</code> instructions.
+</p>
+</dd>
+<dt><code>sse4</code></dt>
+<dd><p>Target supports compiling <code>sse4</code> instructions.
+</p>
+</dd>
+<dt><code>sse4a</code></dt>
+<dd><p>Target supports compiling <code>sse4a</code> instructions.
+</p>
+</dd>
+<dt><code>ssse3</code></dt>
+<dd><p>Target supports compiling <code>ssse3</code> instructions.
+</p>
+</dd>
+<dt><code>vaes</code></dt>
+<dd><p>Target supports compiling <code>vaes</code> instructions.
+</p>
+</dd>
+<dt><code>vpclmul</code></dt>
+<dd><p>Target supports compiling <code>vpclmul</code> instructions.
+</p>
+</dd>
+<dt><code>xop</code></dt>
+<dd><p>Target supports compiling <code>xop</code> instructions.
+</p></dd>
+</dl>
+
+<a name="Local-to-tests-in-gcc_002etest_002dframework"></a>
+<h4 class="subsubsection">7.2.3.17 Local to tests in <code>gcc.test-framework</code></h4>
+
+<dl compact="compact">
+<dt><code>no</code></dt>
+<dd><p>Always returns 0.
+</p>
+</dd>
+<dt><code>yes</code></dt>
+<dd><p>Always returns 1.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Add-Options.html#Add-Options" accesskey="n" rel="next">Add Options</a>, Previous: <a href="Selectors.html#Selectors" accesskey="p" rel="previous">Selectors</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Elimination.html b/share/doc/gccint/Elimination.html
new file mode 100644
index 0000000..69fd77b
--- /dev/null
+++ b/share/doc/gccint/Elimination.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Elimination</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Elimination">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Elimination">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Stack-Arguments.html#Stack-Arguments" rel="next" title="Stack Arguments">
+<link href="Frame-Registers.html#Frame-Registers" rel="previous" title="Frame Registers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Elimination"></a>
+<div class="header">
+<p>
+Next: <a href="Stack-Arguments.html#Stack-Arguments" accesskey="n" rel="next">Stack Arguments</a>, Previous: <a href="Frame-Registers.html#Frame-Registers" accesskey="p" rel="previous">Frame Registers</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Eliminating-Frame-Pointer-and-Arg-Pointer"></a>
+<h4 class="subsection">18.9.5 Eliminating Frame Pointer and Arg Pointer</h4>
+
+<p>This is about eliminating the frame pointer and arg pointer.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fFRAME_005fPOINTER_005fREQUIRED"></a>Target Hook: <em>bool</em> <strong>TARGET_FRAME_POINTER_REQUIRED</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return <code>true</code> if a function must have and use
+a frame pointer. This target hook is called in the reload pass. If its return
+value is <code>true</code> the function will have a frame pointer.
+</p>
+<p>This target hook can in principle examine the current function and decide
+according to the facts, but on most machines the constant <code>false</code> or the
+constant <code>true</code> suffices. Use <code>false</code> when the machine allows code
+to be generated with no frame pointer, and doing so saves some time or space.
+Use <code>true</code> when there is no possible advantage to avoiding a frame
+pointer.
+</p>
+<p>In certain cases, the compiler does not know how to produce valid code
+without a frame pointer. The compiler recognizes those cases and
+automatically gives the function a frame pointer regardless of what
+<code>targetm.frame_pointer_required</code> returns. You don&rsquo;t need to worry about
+them.
+</p>
+<p>In a function that does not require a frame pointer, the frame pointer
+register can be allocated for ordinary usage, unless you mark it as a
+fixed register. See <code>FIXED_REGISTERS</code> for more information.
+</p>
+<p>Default return value is <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ELIMINABLE_005fREGS"></a>Macro: <strong>ELIMINABLE_REGS</strong></dt>
+<dd><p>This macro specifies a table of register pairs used to eliminate
+unneeded registers that point into the stack frame.
+</p>
+<p>The definition of this macro is a list of structure initializations, each
+of which specifies an original and replacement register.
+</p>
+<p>On some machines, the position of the argument pointer is not known until
+the compilation is completed. In such a case, a separate hard register
+must be used for the argument pointer. This register can be eliminated by
+replacing it with either the frame pointer or the argument pointer,
+depending on whether or not the frame pointer has been eliminated.
+</p>
+<p>In this case, you might specify:
+</p><div class="smallexample">
+<pre class="smallexample">#define ELIMINABLE_REGS \
+{{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
+ {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
+ {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
+</pre></div>
+
+<p>Note that the elimination of the argument pointer with the stack pointer is
+specified first since that is the preferred elimination.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCAN_005fELIMINATE"></a>Target Hook: <em>bool</em> <strong>TARGET_CAN_ELIMINATE</strong> <em>(const int <var>from_reg</var>, const int <var>to_reg</var>)</em></dt>
+<dd><p>This target hook should return <code>true</code> if the compiler is allowed to
+try to replace register number <var>from_reg</var> with register number
+<var>to_reg</var>. This target hook will usually be <code>true</code>, since most of the
+cases preventing register elimination are things that the compiler already
+knows about.
+</p>
+<p>Default return value is <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INITIAL_005fELIMINATION_005fOFFSET"></a>Macro: <strong>INITIAL_ELIMINATION_OFFSET</strong> <em>(<var>from-reg</var>, <var>to-reg</var>, <var>offset-var</var>)</em></dt>
+<dd><p>This macro returns the initial difference between the specified pair
+of registers. The value would be computed from information
+such as the result of <code>get_frame_size ()</code> and the tables of
+registers <code>df_regs_ever_live_p</code> and <code>call_used_regs</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPUTE_005fFRAME_005fLAYOUT"></a>Target Hook: <em>void</em> <strong>TARGET_COMPUTE_FRAME_LAYOUT</strong> <em>(void)</em></dt>
+<dd><p>This target hook is called once each time the frame layout needs to be
+recalculated. The calculations can be cached by the target and can then
+be used by <code>INITIAL_ELIMINATION_OFFSET</code> instead of re-computing the
+layout on every invocation of that hook. This is particularly useful
+for targets that have an expensive frame layout function. Implementing
+this callback is optional.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack-Arguments.html#Stack-Arguments" accesskey="n" rel="next">Stack Arguments</a>, Previous: <a href="Frame-Registers.html#Frame-Registers" accesskey="p" rel="previous">Frame Registers</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Empty-Statements.html b/share/doc/gccint/Empty-Statements.html
new file mode 100644
index 0000000..91251f6
--- /dev/null
+++ b/share/doc/gccint/Empty-Statements.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Empty Statements</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Empty Statements">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Empty Statements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Jumps.html#Jumps" rel="next" title="Jumps">
+<link href="Statement-Sequences.html#Statement-Sequences" rel="previous" title="Statement Sequences">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Empty-Statements"></a>
+<div class="header">
+<p>
+Next: <a href="Jumps.html#Jumps" accesskey="n" rel="next">Jumps</a>, Previous: <a href="Statement-Sequences.html#Statement-Sequences" accesskey="p" rel="previous">Statement Sequences</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Empty-Statements-1"></a>
+<h4 class="subsection">11.7.4 Empty Statements</h4>
+<a name="index-Empty-Statements"></a>
+
+<p>Whenever possible, statements with no effect are discarded. But
+if they are nested within another construct which cannot be
+discarded for some reason, they are instead replaced with an
+empty statement, generated by <code>build_empty_stmt</code>.
+Initially, all empty statements were shared, after the pattern of
+the Java front end, but this caused a lot of trouble in practice.
+</p>
+<p>An empty statement is represented as <code>(void)0</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Emulated-TLS.html b/share/doc/gccint/Emulated-TLS.html
new file mode 100644
index 0000000..11ae4ac
--- /dev/null
+++ b/share/doc/gccint/Emulated-TLS.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Emulated TLS</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Emulated TLS">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Emulated TLS">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="MIPS-Coprocessors.html#MIPS-Coprocessors" rel="next" title="MIPS Coprocessors">
+<link href="Target-Attributes.html#Target-Attributes" rel="previous" title="Target Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Emulated-TLS"></a>
+<div class="header">
+<p>
+Next: <a href="MIPS-Coprocessors.html#MIPS-Coprocessors" accesskey="n" rel="next">MIPS Coprocessors</a>, Previous: <a href="Target-Attributes.html#Target-Attributes" accesskey="p" rel="previous">Target Attributes</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Emulating-TLS"></a>
+<h3 class="section">18.25 Emulating TLS</h3>
+<a name="index-Emulated-TLS"></a>
+
+<p>For targets whose psABI does not provide Thread Local Storage via
+specific relocations and instruction sequences, an emulation layer is
+used. A set of target hooks allows this emulation layer to be
+configured for the requirements of a particular target. For instance
+the psABI may in fact specify TLS support in terms of an emulation
+layer.
+</p>
+<p>The emulation layer works by creating a control object for every TLS
+object. To access the TLS object, a lookup function is provided
+which, when given the address of the control object, will return the
+address of the current thread&rsquo;s instance of the TLS object.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fGET_005fADDRESS"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_GET_ADDRESS</strong></dt>
+<dd><p>Contains the name of the helper function that uses a TLS control
+object to locate a TLS instance. The default causes libgcc&rsquo;s
+emulated TLS helper function to be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fREGISTER_005fCOMMON"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_REGISTER_COMMON</strong></dt>
+<dd><p>Contains the name of the helper function that should be used at
+program startup to register TLS objects that are implicitly
+initialized to zero. If this is <code>NULL</code>, all TLS objects will
+have explicit initializers. The default causes libgcc&rsquo;s emulated TLS
+registration function to be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fVAR_005fSECTION"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_VAR_SECTION</strong></dt>
+<dd><p>Contains the name of the section in which TLS control variables should
+be placed. The default of <code>NULL</code> allows these to be placed in
+any section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fTMPL_005fSECTION"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_TMPL_SECTION</strong></dt>
+<dd><p>Contains the name of the section in which TLS initializers should be
+placed. The default of <code>NULL</code> allows these to be placed in any
+section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fVAR_005fPREFIX"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_VAR_PREFIX</strong></dt>
+<dd><p>Contains the prefix to be prepended to TLS control variable names.
+The default of <code>NULL</code> uses a target-specific prefix.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fTMPL_005fPREFIX"></a>Target Hook: <em>const char *</em> <strong>TARGET_EMUTLS_TMPL_PREFIX</strong></dt>
+<dd><p>Contains the prefix to be prepended to TLS initializer objects. The
+default of <code>NULL</code> uses a target-specific prefix.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fVAR_005fFIELDS"></a>Target Hook: <em>tree</em> <strong>TARGET_EMUTLS_VAR_FIELDS</strong> <em>(tree <var>type</var>, tree *<var>name</var>)</em></dt>
+<dd><p>Specifies a function that generates the FIELD_DECLs for a TLS control
+object type. <var>type</var> is the RECORD_TYPE the fields are for and
+<var>name</var> should be filled with the structure tag, if the default of
+<code>__emutls_object</code> is unsuitable. The default creates a type suitable
+for libgcc&rsquo;s emulated TLS function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fVAR_005fINIT"></a>Target Hook: <em>tree</em> <strong>TARGET_EMUTLS_VAR_INIT</strong> <em>(tree <var>var</var>, tree <var>decl</var>, tree <var>tmpl_addr</var>)</em></dt>
+<dd><p>Specifies a function that generates the CONSTRUCTOR to initialize a
+TLS control object. <var>var</var> is the TLS control object, <var>decl</var>
+is the TLS object and <var>tmpl_addr</var> is the address of the
+initializer. The default initializes libgcc&rsquo;s emulated TLS control object.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fVAR_005fALIGN_005fFIXED"></a>Target Hook: <em>bool</em> <strong>TARGET_EMUTLS_VAR_ALIGN_FIXED</strong></dt>
+<dd><p>Specifies whether the alignment of TLS control variable objects is
+fixed and should not be increased as some backends may do to optimize
+single objects. The default is false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMUTLS_005fDEBUG_005fFORM_005fTLS_005fADDRESS"></a>Target Hook: <em>bool</em> <strong>TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS</strong></dt>
+<dd><p>Specifies whether a DWARF <code>DW_OP_form_tls_address</code> location descriptor
+may be used to describe emulated TLS control objects.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="MIPS-Coprocessors.html#MIPS-Coprocessors" accesskey="n" rel="next">MIPS Coprocessors</a>, Previous: <a href="Target-Attributes.html#Target-Attributes" accesskey="p" rel="previous">Target Attributes</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Example.html b/share/doc/gccint/Example.html
new file mode 100644
index 0000000..0ed7d81
--- /dev/null
+++ b/share/doc/gccint/Example.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Example</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Example">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="RTL-Template.html#RTL-Template" rel="next" title="RTL Template">
+<link href="Patterns.html#Patterns" rel="previous" title="Patterns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Example"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-Template.html#RTL-Template" accesskey="n" rel="next">RTL Template</a>, Previous: <a href="Patterns.html#Patterns" accesskey="p" rel="previous">Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Example-of-define_005finsn"></a>
+<h3 class="section">17.3 Example of <code>define_insn</code></h3>
+<a name="index-define_005finsn-example"></a>
+
+<p>Here is an example of an instruction pattern, taken from the machine
+description for the 68000/68020.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;tstsi&quot;
+ [(set (cc0)
+ (match_operand:SI 0 &quot;general_operand&quot; &quot;rm&quot;))]
+ &quot;&quot;
+ &quot;*
+{
+ if (TARGET_68020 || ! ADDRESS_REG_P (operands[0]))
+ return \&quot;tstl %0\&quot;;
+ return \&quot;cmpl #0,%0\&quot;;
+}&quot;)
+</pre></div>
+
+<p>This can also be written using braced strings:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;tstsi&quot;
+ [(set (cc0)
+ (match_operand:SI 0 &quot;general_operand&quot; &quot;rm&quot;))]
+ &quot;&quot;
+{
+ if (TARGET_68020 || ! ADDRESS_REG_P (operands[0]))
+ return &quot;tstl %0&quot;;
+ return &quot;cmpl #0,%0&quot;;
+})
+</pre></div>
+
+<p>This describes an instruction which sets the condition codes based on the
+value of a general operand. It has no condition, so any insn with an RTL
+description of the form shown may be matched to this pattern. The name
+&lsquo;<samp>tstsi</samp>&rsquo; means &ldquo;test a <code>SImode</code> value&rdquo; and tells the RTL
+generation pass that, when it is necessary to test such a value, an insn
+to do so can be constructed using this pattern.
+</p>
+<p>The output control string is a piece of C code which chooses which
+output template to return based on the kind of operand and the specific
+type of CPU for which code is being generated.
+</p>
+<p>&lsquo;<samp>&quot;rm&quot;</samp>&rsquo; is an operand constraint. Its meaning is explained below.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Examples.html b/share/doc/gccint/Examples.html
new file mode 100644
index 0000000..4ddb479
--- /dev/null
+++ b/share/doc/gccint/Examples.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Examples</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Examples">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Examples">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Mode-Iterators.html#Mode-Iterators" rel="up" title="Mode Iterators">
+<link href="Code-Iterators.html#Code-Iterators" rel="next" title="Code Iterators">
+<link href="Substitutions.html#Substitutions" rel="previous" title="Substitutions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Examples"></a>
+<div class="header">
+<p>
+Previous: <a href="Substitutions.html#Substitutions" accesskey="p" rel="previous">Substitutions</a>, Up: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="u" rel="up">Mode Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Mode-Iterator-Examples"></a>
+<h4 class="subsubsection">17.23.1.3 Mode Iterator Examples</h4>
+
+<p>Here is an example from the MIPS port. It defines the following
+modes and attributes (among others):
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator GPR [SI (DI &quot;TARGET_64BIT&quot;)])
+(define_mode_attr d [(SI &quot;&quot;) (DI &quot;d&quot;)])
+</pre></div>
+
+<p>and uses the following template to define both <code>subsi3</code>
+and <code>subdi3</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;sub&lt;mode&gt;3&quot;
+ [(set (match_operand:GPR 0 &quot;register_operand&quot; &quot;=d&quot;)
+ (minus:GPR (match_operand:GPR 1 &quot;register_operand&quot; &quot;d&quot;)
+ (match_operand:GPR 2 &quot;register_operand&quot; &quot;d&quot;)))]
+ &quot;&quot;
+ &quot;&lt;d&gt;subu\t%0,%1,%2&quot;
+ [(set_attr &quot;type&quot; &quot;arith&quot;)
+ (set_attr &quot;mode&quot; &quot;&lt;MODE&gt;&quot;)])
+</pre></div>
+
+<p>This is exactly equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;subsi3&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=d&quot;)
+ (minus:SI (match_operand:SI 1 &quot;register_operand&quot; &quot;d&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;d&quot;)))]
+ &quot;&quot;
+ &quot;subu\t%0,%1,%2&quot;
+ [(set_attr &quot;type&quot; &quot;arith&quot;)
+ (set_attr &quot;mode&quot; &quot;SI&quot;)])
+
+(define_insn &quot;subdi3&quot;
+ [(set (match_operand:DI 0 &quot;register_operand&quot; &quot;=d&quot;)
+ (minus:DI (match_operand:DI 1 &quot;register_operand&quot; &quot;d&quot;)
+ (match_operand:DI 2 &quot;register_operand&quot; &quot;d&quot;)))]
+ &quot;TARGET_64BIT&quot;
+ &quot;dsubu\t%0,%1,%2&quot;
+ [(set_attr &quot;type&quot; &quot;arith&quot;)
+ (set_attr &quot;mode&quot; &quot;DI&quot;)])
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Exception-Handling.html b/share/doc/gccint/Exception-Handling.html
new file mode 100644
index 0000000..7a8400f
--- /dev/null
+++ b/share/doc/gccint/Exception-Handling.html
@@ -0,0 +1,225 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Exception Handling</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Exception Handling">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Exception Handling">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Stack-Checking.html#Stack-Checking" rel="next" title="Stack Checking">
+<link href="Frame-Layout.html#Frame-Layout" rel="previous" title="Frame Layout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Exception-Handling"></a>
+<div class="header">
+<p>
+Next: <a href="Stack-Checking.html#Stack-Checking" accesskey="n" rel="next">Stack Checking</a>, Previous: <a href="Frame-Layout.html#Frame-Layout" accesskey="p" rel="previous">Frame Layout</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Exception-Handling-Support"></a>
+<h4 class="subsection">18.9.2 Exception Handling Support</h4>
+<a name="index-exception-handling-1"></a>
+
+<dl>
+<dt><a name="index-EH_005fRETURN_005fDATA_005fREGNO"></a>Macro: <strong>EH_RETURN_DATA_REGNO</strong> <em>(<var>N</var>)</em></dt>
+<dd><p>A C expression whose value is the <var>N</var>th register number used for
+data by exception handlers, or <code>INVALID_REGNUM</code> if fewer than
+<var>N</var> registers are usable.
+</p>
+<p>The exception handling library routines communicate with the exception
+handlers via a set of agreed upon registers. Ideally these registers
+should be call-clobbered; it is possible to use call-saved registers,
+but may negatively impact code size. The target must support at least
+2 data registers, but should define 4 if there are enough free registers.
+</p>
+<p>You must define this macro if you want to support call frame exception
+handling like that provided by DWARF 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EH_005fRETURN_005fSTACKADJ_005fRTX"></a>Macro: <strong>EH_RETURN_STACKADJ_RTX</strong></dt>
+<dd><p>A C expression whose value is RTL representing a location in which
+to store a stack adjustment to be applied before function return.
+This is used to unwind the stack to an exception handler&rsquo;s call frame.
+It will be assigned zero on code paths that return normally.
+</p>
+<p>Typically this is a call-clobbered hard register that is otherwise
+untouched by the epilogue, but could also be a stack slot.
+</p>
+<p>Do not define this macro if the stack pointer is saved and restored
+by the regular prolog and epilog code in the call frame itself; in
+this case, the exception handling library routines will update the
+stack location to be restored in place. Otherwise, you must define
+this macro if you want to support call frame exception handling like
+that provided by DWARF 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EH_005fRETURN_005fHANDLER_005fRTX"></a>Macro: <strong>EH_RETURN_HANDLER_RTX</strong></dt>
+<dd><p>A C expression whose value is RTL representing a location in which
+to store the address of an exception handler to which we should
+return. It will not be assigned on code paths that return normally.
+</p>
+<p>Typically this is the location in the call frame at which the normal
+return address is stored. For targets that return by popping an
+address off the stack, this might be a memory address just below
+the <em>target</em> call frame rather than inside the current call
+frame. If defined, <code>EH_RETURN_STACKADJ_RTX</code> will have already
+been assigned, so it may be used to calculate the location of the
+target call frame.
+</p>
+<p>Some targets have more complex requirements than storing to an
+address calculable during initial code generation. In that case
+the <code>eh_return</code> instruction pattern should be used instead.
+</p>
+<p>If you want to support call frame exception handling, you must
+define either this macro or the <code>eh_return</code> instruction pattern.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-RETURN_005fADDR_005fOFFSET"></a>Macro: <strong>RETURN_ADDR_OFFSET</strong></dt>
+<dd><p>If defined, an integer-valued C expression for which rtl will be generated
+to add it to the exception handler address before it is searched in the
+exception handling tables, and to subtract it again from the address before
+using it to return to the exception handler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fPREFERRED_005fEH_005fDATA_005fFORMAT"></a>Macro: <strong>ASM_PREFERRED_EH_DATA_FORMAT</strong> <em>(<var>code</var>, <var>global</var>)</em></dt>
+<dd><p>This macro chooses the encoding of pointers embedded in the exception
+handling sections. If at all possible, this should be defined such
+that the exception handling section will not require dynamic relocations,
+and so may be read-only.
+</p>
+<p><var>code</var> is 0 for data, 1 for code labels, 2 for function pointers.
+<var>global</var> is true if the symbol may be affected by dynamic relocations.
+The macro should return a combination of the <code>DW_EH_PE_*</code> defines
+as found in <samp>dwarf2.h</samp>.
+</p>
+<p>If this macro is not defined, pointers will not be encoded but
+represented directly.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fMAYBE_005fOUTPUT_005fENCODED_005fADDR_005fRTX"></a>Macro: <strong>ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX</strong> <em>(<var>file</var>, <var>encoding</var>, <var>size</var>, <var>addr</var>, <var>done</var>)</em></dt>
+<dd><p>This macro allows the target to emit whatever special magic is required
+to represent the encoding chosen by <code>ASM_PREFERRED_EH_DATA_FORMAT</code>.
+Generic code takes care of pc-relative and indirect encodings; this must
+be defined if the target uses text-relative or data-relative encodings.
+</p>
+<p>This is a C statement that branches to <var>done</var> if the format was
+handled. <var>encoding</var> is the format chosen, <var>size</var> is the number
+of bytes that the format occupies, <var>addr</var> is the <code>SYMBOL_REF</code>
+to be emitted.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MD_005fFALLBACK_005fFRAME_005fSTATE_005fFOR"></a>Macro: <strong>MD_FALLBACK_FRAME_STATE_FOR</strong> <em>(<var>context</var>, <var>fs</var>)</em></dt>
+<dd><p>This macro allows the target to add CPU and operating system specific
+code to the call-frame unwinder for use when there is no unwind data
+available. The most common reason to implement this macro is to unwind
+through signal frames.
+</p>
+<p>This macro is called from <code>uw_frame_state_for</code> in
+<samp>unwind-dw2.c</samp>, <samp>unwind-dw2-xtensa.c</samp> and
+<samp>unwind-ia64.c</samp>. <var>context</var> is an <code>_Unwind_Context</code>;
+<var>fs</var> is an <code>_Unwind_FrameState</code>. Examine <code>context-&gt;ra</code>
+for the address of the code being executed and <code>context-&gt;cfa</code> for
+the stack pointer value. If the frame can be decoded, the register
+save addresses should be updated in <var>fs</var> and the macro should
+evaluate to <code>_URC_NO_REASON</code>. If the frame cannot be decoded,
+the macro should evaluate to <code>_URC_END_OF_STACK</code>.
+</p>
+<p>For proper signal handling in Java this macro is accompanied by
+<code>MAKE_THROW_FRAME</code>, defined in <samp>libjava/include/*-signal.h</samp> headers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MD_005fHANDLE_005fUNWABI"></a>Macro: <strong>MD_HANDLE_UNWABI</strong> <em>(<var>context</var>, <var>fs</var>)</em></dt>
+<dd><p>This macro allows the target to add operating system specific code to the
+call-frame unwinder to handle the IA-64 <code>.unwabi</code> unwinding directive,
+usually used for signal or interrupt frames.
+</p>
+<p>This macro is called from <code>uw_update_context</code> in libgcc&rsquo;s
+<samp>unwind-ia64.c</samp>. <var>context</var> is an <code>_Unwind_Context</code>;
+<var>fs</var> is an <code>_Unwind_FrameState</code>. Examine <code>fs-&gt;unwabi</code>
+for the abi and context in the <code>.unwabi</code> directive. If the
+<code>.unwabi</code> directive can be handled, the register save addresses should
+be updated in <var>fs</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSES_005fWEAK_005fUNWIND_005fINFO"></a>Macro: <strong>TARGET_USES_WEAK_UNWIND_INFO</strong></dt>
+<dd><p>A C expression that evaluates to true if the target requires unwind
+info to be given comdat linkage. Define it to be <code>1</code> if comdat
+linkage is necessary. The default is <code>0</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack-Checking.html#Stack-Checking" accesskey="n" rel="next">Stack Checking</a>, Previous: <a href="Frame-Layout.html#Frame-Layout" accesskey="p" rel="previous">Frame Layout</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Exception-Region-Output.html b/share/doc/gccint/Exception-Region-Output.html
new file mode 100644
index 0000000..25b4c5c
--- /dev/null
+++ b/share/doc/gccint/Exception-Region-Output.html
@@ -0,0 +1,251 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Exception Region Output</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Exception Region Output">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Exception Region Output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Alignment-Output.html#Alignment-Output" rel="next" title="Alignment Output">
+<link href="Dispatch-Tables.html#Dispatch-Tables" rel="previous" title="Dispatch Tables">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Exception-Region-Output"></a>
+<div class="header">
+<p>
+Next: <a href="Alignment-Output.html#Alignment-Output" accesskey="n" rel="next">Alignment Output</a>, Previous: <a href="Dispatch-Tables.html#Dispatch-Tables" accesskey="p" rel="previous">Dispatch Tables</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Assembler-Commands-for-Exception-Regions"></a>
+<h4 class="subsection">18.20.9 Assembler Commands for Exception Regions</h4>
+
+
+<p>This describes commands marking the start and the end of an exception
+region.
+</p>
+<dl>
+<dt><a name="index-EH_005fFRAME_005fSECTION_005fNAME"></a>Macro: <strong>EH_FRAME_SECTION_NAME</strong></dt>
+<dd><p>If defined, a C string constant for the name of the section containing
+exception handling frame unwind information. If not defined, GCC will
+provide a default definition if the target supports named sections.
+<samp>crtstuff.c</samp> uses this macro to switch to the appropriate section.
+</p>
+<p>You should define this symbol if your target supports DWARF 2 frame
+unwind information and the default definition does not work.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EH_005fFRAME_005fTHROUGH_005fCOLLECT2"></a>Macro: <strong>EH_FRAME_THROUGH_COLLECT2</strong></dt>
+<dd><p>If defined, DWARF 2 frame unwind information will identified by
+specially named labels. The collect2 process will locate these
+labels and generate code to register the frames.
+</p>
+<p>This might be necessary, for instance, if the system linker will not
+place the eh_frames in-between the sentinals from <samp>crtstuff.c</samp>,
+or if the system linker does garbage collection and sections cannot
+be marked as not to be collected.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EH_005fTABLES_005fCAN_005fBE_005fREAD_005fONLY"></a>Macro: <strong>EH_TABLES_CAN_BE_READ_ONLY</strong></dt>
+<dd><p>Define this macro to 1 if your target is such that no frame unwind
+information encoding used with non-PIC code will ever require a
+runtime relocation, but the linker may not support merging read-only
+and read-write sections into a single read-write section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MASK_005fRETURN_005fADDR"></a>Macro: <strong>MASK_RETURN_ADDR</strong></dt>
+<dd><p>An rtx used to mask the return address found via <code>RETURN_ADDR_RTX</code>, so
+that it does not contain any extraneous set bits in it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF2_005fUNWIND_005fINFO"></a>Macro: <strong>DWARF2_UNWIND_INFO</strong></dt>
+<dd><p>Define this macro to 0 if your target supports DWARF 2 frame unwind
+information, but it does not yet work with exception handling.
+Otherwise, if your target supports this information (if it defines
+<code>INCOMING_RETURN_ADDR_RTX</code> and <code>OBJECT_FORMAT_ELF</code>),
+GCC will provide a default definition of 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXCEPT_005fUNWIND_005fINFO"></a>Common Target Hook: <em>enum unwind_info_type</em> <strong>TARGET_EXCEPT_UNWIND_INFO</strong> <em>(struct gcc_options *<var>opts</var>)</em></dt>
+<dd><p>This hook defines the mechanism that will be used for exception handling
+by the target. If the target has ABI specified unwind tables, the hook
+should return <code>UI_TARGET</code>. If the target is to use the
+<code>setjmp</code>/<code>longjmp</code>-based exception handling scheme, the hook
+should return <code>UI_SJLJ</code>. If the target supports DWARF 2 frame unwind
+information, the hook should return <code>UI_DWARF2</code>.
+</p>
+<p>A target may, if exceptions are disabled, choose to return <code>UI_NONE</code>.
+This may end up simplifying other parts of target-specific code. The
+default implementation of this hook never returns <code>UI_NONE</code>.
+</p>
+<p>Note that the value returned by this hook should be constant. It should
+not depend on anything except the command-line switches described by
+<var>opts</var>. In particular, the
+setting <code>UI_SJLJ</code> must be fixed at compiler start-up as C pre-processor
+macros and builtin functions related to exception handling are set up
+depending on this setting.
+</p>
+<p>The default implementation of the hook first honors the
+<samp>--enable-sjlj-exceptions</samp> configure option, then
+<code>DWARF2_UNWIND_INFO</code>, and finally defaults to <code>UI_SJLJ</code>. If
+<code>DWARF2_UNWIND_INFO</code> depends on command-line options, the target
+must define this hook so that <var>opts</var> is used correctly.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUNWIND_005fTABLES_005fDEFAULT"></a>Common Target Hook: <em>bool</em> <strong>TARGET_UNWIND_TABLES_DEFAULT</strong></dt>
+<dd><p>This variable should be set to <code>true</code> if the target ABI requires unwinding
+tables even when exceptions are not used. It must not be modified by
+command-line option processing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DONT_005fUSE_005fBUILTIN_005fSETJMP"></a>Macro: <strong>DONT_USE_BUILTIN_SETJMP</strong></dt>
+<dd><p>Define this macro to 1 if the <code>setjmp</code>/<code>longjmp</code>-based scheme
+should use the <code>setjmp</code>/<code>longjmp</code> functions from the C library
+instead of the <code>__builtin_setjmp</code>/<code>__builtin_longjmp</code> machinery.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-JMP_005fBUF_005fSIZE"></a>Macro: <strong>JMP_BUF_SIZE</strong></dt>
+<dd><p>This macro has no effect unless <code>DONT_USE_BUILTIN_SETJMP</code> is also
+defined. Define this macro if the default size of <code>jmp_buf</code> buffer
+for the <code>setjmp</code>/<code>longjmp</code>-based exception handling mechanism
+is not large enough, or if it is much too large.
+The default size is <code>FIRST_PSEUDO_REGISTER * sizeof(void *)</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fCIE_005fDATA_005fALIGNMENT"></a>Macro: <strong>DWARF_CIE_DATA_ALIGNMENT</strong></dt>
+<dd><p>This macro need only be defined if the target might save registers in the
+function prologue at an offset to the stack pointer that is not aligned to
+<code>UNITS_PER_WORD</code>. The definition should be the negative minimum
+alignment if <code>STACK_GROWS_DOWNWARD</code> is true, and the positive
+minimum alignment otherwise. See <a href="DWARF.html#DWARF">DWARF</a>. Only applicable if
+the target supports DWARF 2 frame unwind information.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fTERMINATE_005fDW2_005fEH_005fFRAME_005fINFO"></a>Target Hook: <em>bool</em> <strong>TARGET_TERMINATE_DW2_EH_FRAME_INFO</strong></dt>
+<dd><p>Contains the value true if the target should add a zero word onto the
+end of a Dwarf-2 frame info section when used for exception handling.
+Default value is false if <code>EH_FRAME_SECTION_NAME</code> is defined, and
+true otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDWARF_005fREGISTER_005fSPAN"></a>Target Hook: <em>rtx</em> <strong>TARGET_DWARF_REGISTER_SPAN</strong> <em>(rtx <var>reg</var>)</em></dt>
+<dd><p>Given a register, this hook should return a parallel of registers to
+represent where to find the register pieces. Define this hook if the
+register and its mode are represented in Dwarf in non-contiguous
+locations, or if the register should be represented in more than one
+register in Dwarf. Otherwise, this hook should return <code>NULL_RTX</code>.
+If not defined, the default is to return <code>NULL_RTX</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDWARF_005fFRAME_005fREG_005fMODE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_DWARF_FRAME_REG_MODE</strong> <em>(int <var>regno</var>)</em></dt>
+<dd><p>Given a register, this hook should return the mode which the
+corresponding Dwarf frame register should have. This is normally
+used to return a smaller mode than the raw mode to prevent call
+clobbered parts of a register altering the frame register size
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINIT_005fDWARF_005fREG_005fSIZES_005fEXTRA"></a>Target Hook: <em>void</em> <strong>TARGET_INIT_DWARF_REG_SIZES_EXTRA</strong> <em>(tree <var>address</var>)</em></dt>
+<dd><p>If some registers are represented in Dwarf-2 unwind information in
+multiple pieces, define this hook to fill in information about the
+sizes of those pieces in the table used by the unwinder at runtime.
+It will be called by <code>expand_builtin_init_dwarf_reg_sizes</code> after
+filling in a single size corresponding to each hard register;
+<var>address</var> is the address of the table.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fTTYPE"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_TTYPE</strong> <em>(rtx <var>sym</var>)</em></dt>
+<dd><p>This hook is used to output a reference from a frame unwinding table to
+the type_info object identified by <var>sym</var>. It should return <code>true</code>
+if the reference was output. Returning <code>false</code> will cause the
+reference to be output using the normal Dwarf2 routines.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fARM_005fEABI_005fUNWINDER"></a>Target Hook: <em>bool</em> <strong>TARGET_ARM_EABI_UNWINDER</strong></dt>
+<dd><p>This flag should be set to <code>true</code> on targets that use an ARM EABI
+based unwinding library, and <code>false</code> on other targets. This effects
+the format of unwinding tables, and how the unwinder in entered after
+running a cleanup. The default is <code>false</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Alignment-Output.html#Alignment-Output" accesskey="n" rel="next">Alignment Output</a>, Previous: <a href="Dispatch-Tables.html#Dispatch-Tables" accesskey="p" rel="previous">Dispatch Tables</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Exception-handling-routines.html b/share/doc/gccint/Exception-handling-routines.html
new file mode 100644
index 0000000..a085ea6
--- /dev/null
+++ b/share/doc/gccint/Exception-handling-routines.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Exception handling routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Exception handling routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Exception handling routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Miscellaneous-routines.html#Miscellaneous-routines" rel="next" title="Miscellaneous routines">
+<link href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" rel="previous" title="Fixed-point fractional library routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Exception-handling-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-routines.html#Miscellaneous-routines" accesskey="n" rel="next">Miscellaneous routines</a>, Previous: <a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" accesskey="p" rel="previous">Fixed-point fractional library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Language_002dindependent-routines-for-exception-handling"></a>
+<h3 class="section">4.5 Language-independent routines for exception handling</h3>
+
+<p>document me!
+</p>
+<div class="smallexample">
+<pre class="smallexample"> _Unwind_DeleteException
+ _Unwind_Find_FDE
+ _Unwind_ForcedUnwind
+ _Unwind_GetGR
+ _Unwind_GetIP
+ _Unwind_GetLanguageSpecificData
+ _Unwind_GetRegionStart
+ _Unwind_GetTextRelBase
+ _Unwind_GetDataRelBase
+ _Unwind_RaiseException
+ _Unwind_Resume
+ _Unwind_SetGR
+ _Unwind_SetIP
+ _Unwind_FindEnclosingFunction
+ _Unwind_SjLj_Register
+ _Unwind_SjLj_Unregister
+ _Unwind_SjLj_RaiseException
+ _Unwind_SjLj_ForcedUnwind
+ _Unwind_SjLj_Resume
+ __deregister_frame
+ __deregister_frame_info
+ __deregister_frame_info_bases
+ __register_frame
+ __register_frame_info
+ __register_frame_info_bases
+ __register_frame_info_table
+ __register_frame_info_table_bases
+ __register_frame_table
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Expander-Definitions.html b/share/doc/gccint/Expander-Definitions.html
new file mode 100644
index 0000000..ceed1fa
--- /dev/null
+++ b/share/doc/gccint/Expander-Definitions.html
@@ -0,0 +1,289 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Expander Definitions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Expander Definitions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Expander Definitions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Insn-Splitting.html#Insn-Splitting" rel="next" title="Insn Splitting">
+<link href="Insn-Canonicalizations.html#Insn-Canonicalizations" rel="previous" title="Insn Canonicalizations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Expander-Definitions"></a>
+<div class="header">
+<p>
+Next: <a href="Insn-Splitting.html#Insn-Splitting" accesskey="n" rel="next">Insn Splitting</a>, Previous: <a href="Insn-Canonicalizations.html#Insn-Canonicalizations" accesskey="p" rel="previous">Insn Canonicalizations</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-RTL-Sequences-for-Code-Generation"></a>
+<h3 class="section">17.15 Defining RTL Sequences for Code Generation</h3>
+<a name="index-expander-definitions"></a>
+<a name="index-code-generation-RTL-sequences"></a>
+<a name="index-defining-RTL-sequences-for-code-generation"></a>
+
+<p>On some target machines, some standard pattern names for RTL generation
+cannot be handled with single insn, but a sequence of RTL insns can
+represent them. For these target machines, you can write a
+<code>define_expand</code> to specify how to generate the sequence of RTL.
+</p>
+<a name="index-define_005fexpand"></a>
+<p>A <code>define_expand</code> is an RTL expression that looks almost like a
+<code>define_insn</code>; but, unlike the latter, a <code>define_expand</code> is used
+only for RTL generation and it can produce more than one RTL insn.
+</p>
+<p>A <code>define_expand</code> RTX has four operands:
+</p>
+<ul>
+<li> The name. Each <code>define_expand</code> must have a name, since the only
+use for it is to refer to it by name.
+
+</li><li> The RTL template. This is a vector of RTL expressions representing
+a sequence of separate instructions. Unlike <code>define_insn</code>, there
+is no implicit surrounding <code>PARALLEL</code>.
+
+</li><li> The condition, a string containing a C expression. This expression is
+used to express how the availability of this pattern depends on
+subclasses of target machine, selected by command-line options when GCC
+is run. This is just like the condition of a <code>define_insn</code> that
+has a standard name. Therefore, the condition (if present) may not
+depend on the data in the insn being matched, but only the
+target-machine-type flags. The compiler needs to test these conditions
+during initialization in order to learn exactly which named instructions
+are available in a particular run.
+
+</li><li> The preparation statements, a string containing zero or more C
+statements which are to be executed before RTL code is generated from
+the RTL template.
+
+<p>Usually these statements prepare temporary registers for use as
+internal operands in the RTL template, but they can also generate RTL
+insns directly by calling routines such as <code>emit_insn</code>, etc.
+Any such insns precede the ones that come from the RTL template.
+</p>
+</li><li> Optionally, a vector containing the values of attributes. See <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>.
+</li></ul>
+
+<p>Every RTL insn emitted by a <code>define_expand</code> must match some
+<code>define_insn</code> in the machine description. Otherwise, the compiler
+will crash when trying to generate code for the insn or trying to optimize
+it.
+</p>
+<p>The RTL template, in addition to controlling generation of RTL insns,
+also describes the operands that need to be specified when this pattern
+is used. In particular, it gives a predicate for each operand.
+</p>
+<p>A true operand, which needs to be specified in order to generate RTL from
+the pattern, should be described with a <code>match_operand</code> in its first
+occurrence in the RTL template. This enters information on the operand&rsquo;s
+predicate into the tables that record such things. GCC uses the
+information to preload the operand into a register if that is required for
+valid RTL code. If the operand is referred to more than once, subsequent
+references should use <code>match_dup</code>.
+</p>
+<p>The RTL template may also refer to internal &ldquo;operands&rdquo; which are
+temporary registers or labels used only within the sequence made by the
+<code>define_expand</code>. Internal operands are substituted into the RTL
+template with <code>match_dup</code>, never with <code>match_operand</code>. The
+values of the internal operands are not passed in as arguments by the
+compiler when it requests use of this pattern. Instead, they are computed
+within the pattern, in the preparation statements. These statements
+compute the values and store them into the appropriate elements of
+<code>operands</code> so that <code>match_dup</code> can find them.
+</p>
+<p>There are two special macros defined for use in the preparation statements:
+<code>DONE</code> and <code>FAIL</code>. Use them with a following semicolon,
+as a statement.
+</p>
+<dl compact="compact">
+<dd>
+<a name="index-DONE"></a>
+</dd>
+<dt><code>DONE</code></dt>
+<dd><p>Use the <code>DONE</code> macro to end RTL generation for the pattern. The
+only RTL insns resulting from the pattern on this occasion will be
+those already emitted by explicit calls to <code>emit_insn</code> within the
+preparation statements; the RTL template will not be generated.
+</p>
+<a name="index-FAIL"></a>
+</dd>
+<dt><code>FAIL</code></dt>
+<dd><p>Make the pattern fail on this occasion. When a pattern fails, it means
+that the pattern was not truly available. The calling routines in the
+compiler will try other strategies for code generation using other patterns.
+</p>
+<p>Failure is currently supported only for binary (addition, multiplication,
+shifting, etc.) and bit-field (<code>extv</code>, <code>extzv</code>, and <code>insv</code>)
+operations.
+</p></dd>
+</dl>
+
+<p>If the preparation falls through (invokes neither <code>DONE</code> nor
+<code>FAIL</code>), then the <code>define_expand</code> acts like a
+<code>define_insn</code> in that the RTL template is used to generate the
+insn.
+</p>
+<p>The RTL template is not used for matching, only for generating the
+initial insn list. If the preparation statement always invokes
+<code>DONE</code> or <code>FAIL</code>, the RTL template may be reduced to a simple
+list of operands, such as this example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;addsi3&quot;
+ [(match_operand:SI 0 &quot;register_operand&quot; &quot;&quot;)
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;&quot;)]
+ &quot;&quot;
+ &quot;
+{
+ handle_add (operands[0], operands[1], operands[2]);
+ DONE;
+}&quot;)
+</pre></div>
+
+<p>Here is an example, the definition of left-shift for the SPUR chip:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;ashlsi3&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;&quot;)
+ (ashift:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;&quot;)
+ (match_operand:SI 2 &quot;nonmemory_operand&quot; &quot;&quot;)))]
+ &quot;&quot;
+ &quot;
+{
+ if (GET_CODE (operands[2]) != CONST_INT
+ || (unsigned) INTVAL (operands[2]) &gt; 3)
+ FAIL;
+}&quot;)
+</pre></div>
+
+<p>This example uses <code>define_expand</code> so that it can generate an RTL insn
+for shifting when the shift-count is in the supported range of 0 to 3 but
+fail in other cases where machine insns aren&rsquo;t available. When it fails,
+the compiler tries another strategy using different patterns (such as, a
+library call).
+</p>
+<p>If the compiler were able to handle nontrivial condition-strings in
+patterns with names, then it would be possible to use a
+<code>define_insn</code> in that case. Here is another case (zero-extension
+on the 68000) which makes more use of the power of <code>define_expand</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;zero_extendhisi2&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;&quot;)
+ (const_int 0))
+ (set (strict_low_part
+ (subreg:HI
+ (match_dup 0)
+ 0))
+ (match_operand:HI 1 &quot;general_operand&quot; &quot;&quot;))]
+ &quot;&quot;
+ &quot;operands[1] = make_safe_from (operands[1], operands[0]);&quot;)
+</pre></div>
+
+<a name="index-make_005fsafe_005ffrom"></a>
+<p>Here two RTL insns are generated, one to clear the entire output operand
+and the other to copy the input operand into its low half. This sequence
+is incorrect if the input operand refers to [the old value of] the output
+operand, so the preparation statement makes sure this isn&rsquo;t so. The
+function <code>make_safe_from</code> copies the <code>operands[1]</code> into a
+temporary register if it refers to <code>operands[0]</code>. It does this
+by emitting another RTL insn.
+</p>
+<p>Finally, a third example shows the use of an internal operand.
+Zero-extension on the SPUR chip is done by <code>and</code>-ing the result
+against a halfword mask. But this mask cannot be represented by a
+<code>const_int</code> because the constant value is too large to be legitimate
+on this machine. So it must be copied into a register with
+<code>force_reg</code> and then the register used in the <code>and</code>.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;zero_extendhisi2&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;&quot;)
+ (and:SI (subreg:SI
+ (match_operand:HI 1 &quot;register_operand&quot; &quot;&quot;)
+ 0)
+ (match_dup 2)))]
+ &quot;&quot;
+ &quot;operands[2]
+ = force_reg (SImode, GEN_INT (65535)); &quot;)
+</pre></div>
+
+<p><em>Note:</em> If the <code>define_expand</code> is used to serve a
+standard binary or unary arithmetic operation or a bit-field operation,
+then the last insn it generates must not be a <code>code_label</code>,
+<code>barrier</code> or <code>note</code>. It must be an <code>insn</code>,
+<code>jump_insn</code> or <code>call_insn</code>. If you don&rsquo;t need a real insn
+at the end, emit an insn to copy the result of the operation into
+itself. Such an insn will generate no code, but it can avoid problems
+in the compiler.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Insn-Splitting.html#Insn-Splitting" accesskey="n" rel="next">Insn Splitting</a>, Previous: <a href="Insn-Canonicalizations.html#Insn-Canonicalizations" accesskey="p" rel="previous">Insn Canonicalizations</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Expression-trees.html b/share/doc/gccint/Expression-trees.html
new file mode 100644
index 0000000..1e43865
--- /dev/null
+++ b/share/doc/gccint/Expression-trees.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Expression trees</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Expression trees">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Expression trees">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Constant-expressions.html#Constant-expressions" rel="next" title="Constant expressions">
+<link href="Attributes.html#Attributes" rel="previous" title="Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Expression-trees"></a>
+<div class="header">
+<p>
+Next: <a href="Statements.html#Statements" accesskey="n" rel="next">Statements</a>, Previous: <a href="Attributes.html#Attributes" accesskey="p" rel="previous">Attributes</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Expressions-1"></a>
+<h3 class="section">11.6 Expressions</h3>
+<a name="index-expression"></a>
+<a name="index-TREE_005fTYPE-3"></a>
+<a name="index-TREE_005fOPERAND"></a>
+
+<p>The internal representation for expressions is for the most part quite
+straightforward. However, there are a few facts that one must bear in
+mind. In particular, the expression &ldquo;tree&rdquo; is actually a directed
+acyclic graph. (For example there may be many references to the integer
+constant zero throughout the source program; many of these will be
+represented by the same expression node.) You should not rely on
+certain kinds of node being shared, nor should you rely on certain kinds of
+nodes being unshared.
+</p>
+<p>The following macros can be used with all expression nodes:
+</p>
+<dl compact="compact">
+<dt><code>TREE_TYPE</code>
+<a name="index-TREE_005fTYPE-4"></a>
+</dt>
+<dd><p>Returns the type of the expression. This value may not be precisely the
+same type that would be given the expression in the original program.
+</p></dd>
+</dl>
+
+<p>In what follows, some nodes that one might expect to always have type
+<code>bool</code> are documented to have either integral or boolean type. At
+some point in the future, the C front end may also make use of this same
+intermediate representation, and at this point these nodes will
+certainly have integral type. The previous sentence is not meant to
+imply that the C++ front end does not or will not give these nodes
+integral type.
+</p>
+<p>Below, we list the various kinds of expression nodes. Except where
+noted otherwise, the operands to an expression are accessed using the
+<code>TREE_OPERAND</code> macro. For example, to access the first operand to
+a binary plus expression <code>expr</code>, use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">TREE_OPERAND (expr, 0)
+</pre></div>
+
+<p>As this example indicates, the operands are zero-indexed.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Constant-expressions.html#Constant-expressions" accesskey="1">Constants</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Storage-References.html#Storage-References" accesskey="2">Storage References</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" accesskey="3">Unary and Binary Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Vectors.html#Vectors" accesskey="4">Vectors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Statements.html#Statements" accesskey="n" rel="next">Statements</a>, Previous: <a href="Attributes.html#Attributes" accesskey="p" rel="previous">Attributes</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Expressions.html b/share/doc/gccint/Expressions.html
new file mode 100644
index 0000000..b23cda6
--- /dev/null
+++ b/share/doc/gccint/Expressions.html
@@ -0,0 +1,323 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Tagging-Insns.html#Tagging-Insns" rel="next" title="Tagging Insns">
+<link href="Defining-Attributes.html#Defining-Attributes" rel="previous" title="Defining Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Expressions"></a>
+<div class="header">
+<p>
+Next: <a href="Tagging-Insns.html#Tagging-Insns" accesskey="n" rel="next">Tagging Insns</a>, Previous: <a href="Defining-Attributes.html#Defining-Attributes" accesskey="p" rel="previous">Defining Attributes</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Attribute-Expressions"></a>
+<h4 class="subsection">17.19.2 Attribute Expressions</h4>
+<a name="index-attribute-expressions"></a>
+
+<p>RTL expressions used to define attributes use the codes described above
+plus a few specific to attribute definitions, to be discussed below.
+Attribute value expressions must have one of the following forms:
+</p>
+<dl compact="compact">
+<dd><a name="index-const_005fint-and-attributes"></a>
+</dd>
+<dt><code>(const_int <var>i</var>)</code></dt>
+<dd><p>The integer <var>i</var> specifies the value of a numeric attribute. <var>i</var>
+must be non-negative.
+</p>
+<p>The value of a numeric attribute can be specified either with a
+<code>const_int</code>, or as an integer represented as a string in
+<code>const_string</code>, <code>eq_attr</code> (see below), <code>attr</code>,
+<code>symbol_ref</code>, simple arithmetic expressions, and <code>set_attr</code>
+overrides on specific instructions (see <a href="Tagging-Insns.html#Tagging-Insns">Tagging Insns</a>).
+</p>
+<a name="index-const_005fstring-and-attributes"></a>
+</dd>
+<dt><code>(const_string <var>value</var>)</code></dt>
+<dd><p>The string <var>value</var> specifies a constant attribute value.
+If <var>value</var> is specified as &lsquo;<samp>&quot;*&quot;</samp>&rsquo;, it means that the default value of
+the attribute is to be used for the insn containing this expression.
+&lsquo;<samp>&quot;*&quot;</samp>&rsquo; obviously cannot be used in the <var>default</var> expression
+of a <code>define_attr</code>.
+</p>
+<p>If the attribute whose value is being specified is numeric, <var>value</var>
+must be a string containing a non-negative integer (normally
+<code>const_int</code> would be used in this case). Otherwise, it must
+contain one of the valid values for the attribute.
+</p>
+<a name="index-if_005fthen_005felse-and-attributes"></a>
+</dd>
+<dt><code>(if_then_else <var>test</var> <var>true-value</var> <var>false-value</var>)</code></dt>
+<dd><p><var>test</var> specifies an attribute test, whose format is defined below.
+The value of this expression is <var>true-value</var> if <var>test</var> is true,
+otherwise it is <var>false-value</var>.
+</p>
+<a name="index-cond-and-attributes"></a>
+</dd>
+<dt><code>(cond [<var>test1</var> <var>value1</var> &hellip;] <var>default</var>)</code></dt>
+<dd><p>The first operand of this expression is a vector containing an even
+number of expressions and consisting of pairs of <var>test</var> and <var>value</var>
+expressions. The value of the <code>cond</code> expression is that of the
+<var>value</var> corresponding to the first true <var>test</var> expression. If
+none of the <var>test</var> expressions are true, the value of the <code>cond</code>
+expression is that of the <var>default</var> expression.
+</p></dd>
+</dl>
+
+<p><var>test</var> expressions can have one of the following forms:
+</p>
+<dl compact="compact">
+<dd><a name="index-const_005fint-and-attribute-tests"></a>
+</dd>
+<dt><code>(const_int <var>i</var>)</code></dt>
+<dd><p>This test is true if <var>i</var> is nonzero and false otherwise.
+</p>
+<a name="index-not-and-attributes"></a>
+<a name="index-ior-and-attributes"></a>
+<a name="index-and-and-attributes"></a>
+</dd>
+<dt><code>(not <var>test</var>)</code></dt>
+<dt><code>(ior <var>test1</var> <var>test2</var>)</code></dt>
+<dt><code>(and <var>test1</var> <var>test2</var>)</code></dt>
+<dd><p>These tests are true if the indicated logical function is true.
+</p>
+<a name="index-match_005foperand-and-attributes"></a>
+</dd>
+<dt><code>(match_operand:<var>m</var> <var>n</var> <var>pred</var> <var>constraints</var>)</code></dt>
+<dd><p>This test is true if operand <var>n</var> of the insn whose attribute value
+is being determined has mode <var>m</var> (this part of the test is ignored
+if <var>m</var> is <code>VOIDmode</code>) and the function specified by the string
+<var>pred</var> returns a nonzero value when passed operand <var>n</var> and mode
+<var>m</var> (this part of the test is ignored if <var>pred</var> is the null
+string).
+</p>
+<p>The <var>constraints</var> operand is ignored and should be the null string.
+</p>
+<a name="index-match_005ftest-and-attributes"></a>
+</dd>
+<dt><code>(match_test <var>c-expr</var>)</code></dt>
+<dd><p>The test is true if C expression <var>c-expr</var> is true. In non-constant
+attributes, <var>c-expr</var> has access to the following variables:
+</p>
+<dl compact="compact">
+<dt><var>insn</var></dt>
+<dd><p>The rtl instruction under test.
+</p></dd>
+<dt><var>which_alternative</var></dt>
+<dd><p>The <code>define_insn</code> alternative that <var>insn</var> matches.
+See <a href="Output-Statement.html#Output-Statement">Output Statement</a>.
+</p></dd>
+<dt><var>operands</var></dt>
+<dd><p>An array of <var>insn</var>&rsquo;s rtl operands.
+</p></dd>
+</dl>
+
+<p><var>c-expr</var> behaves like the condition in a C <code>if</code> statement,
+so there is no need to explicitly convert the expression into a boolean
+0 or 1 value. For example, the following two tests are equivalent:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_test &quot;x &amp; 2&quot;)
+(match_test &quot;(x &amp; 2) != 0&quot;)
+</pre></div>
+
+<a name="index-le-and-attributes"></a>
+<a name="index-leu-and-attributes"></a>
+<a name="index-lt-and-attributes"></a>
+<a name="index-gt-and-attributes"></a>
+<a name="index-gtu-and-attributes"></a>
+<a name="index-ge-and-attributes"></a>
+<a name="index-geu-and-attributes"></a>
+<a name="index-ne-and-attributes"></a>
+<a name="index-eq-and-attributes"></a>
+<a name="index-plus-and-attributes"></a>
+<a name="index-minus-and-attributes"></a>
+<a name="index-mult-and-attributes"></a>
+<a name="index-div-and-attributes"></a>
+<a name="index-mod-and-attributes"></a>
+<a name="index-abs-and-attributes"></a>
+<a name="index-neg-and-attributes"></a>
+<a name="index-ashift-and-attributes"></a>
+<a name="index-lshiftrt-and-attributes"></a>
+<a name="index-ashiftrt-and-attributes"></a>
+</dd>
+<dt><code>(le <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(leu <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(lt <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(ltu <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(gt <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(gtu <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(ge <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(geu <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(ne <var>arith1</var> <var>arith2</var>)</code></dt>
+<dt><code>(eq <var>arith1</var> <var>arith2</var>)</code></dt>
+<dd><p>These tests are true if the indicated comparison of the two arithmetic
+expressions is true. Arithmetic expressions are formed with
+<code>plus</code>, <code>minus</code>, <code>mult</code>, <code>div</code>, <code>mod</code>,
+<code>abs</code>, <code>neg</code>, <code>and</code>, <code>ior</code>, <code>xor</code>, <code>not</code>,
+<code>ashift</code>, <code>lshiftrt</code>, and <code>ashiftrt</code> expressions.
+</p>
+<a name="index-get_005fattr"></a>
+<p><code>const_int</code> and <code>symbol_ref</code> are always valid terms (see <a href="Insn-Lengths.html#Insn-Lengths">Insn Lengths</a>,for additional forms). <code>symbol_ref</code> is a string
+denoting a C expression that yields an <code>int</code> when evaluated by the
+&lsquo;<samp>get_attr_&hellip;</samp>&rsquo; routine. It should normally be a global
+variable.
+</p>
+<a name="index-eq_005fattr"></a>
+</dd>
+<dt><code>(eq_attr <var>name</var> <var>value</var>)</code></dt>
+<dd><p><var>name</var> is a string specifying the name of an attribute.
+</p>
+<p><var>value</var> is a string that is either a valid value for attribute
+<var>name</var>, a comma-separated list of values, or &lsquo;<samp>!</samp>&rsquo; followed by a
+value or list. If <var>value</var> does not begin with a &lsquo;<samp>!</samp>&rsquo;, this
+test is true if the value of the <var>name</var> attribute of the current
+insn is in the list specified by <var>value</var>. If <var>value</var> begins
+with a &lsquo;<samp>!</samp>&rsquo;, this test is true if the attribute&rsquo;s value is
+<em>not</em> in the specified list.
+</p>
+<p>For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(eq_attr &quot;type&quot; &quot;load,store&quot;)
+</pre></div>
+
+<p>is equivalent to
+</p>
+<div class="smallexample">
+<pre class="smallexample">(ior (eq_attr &quot;type&quot; &quot;load&quot;) (eq_attr &quot;type&quot; &quot;store&quot;))
+</pre></div>
+
+<p>If <var>name</var> specifies an attribute of &lsquo;<samp>alternative</samp>&rsquo;, it refers to the
+value of the compiler variable <code>which_alternative</code>
+(see <a href="Output-Statement.html#Output-Statement">Output Statement</a>) and the values must be small integers. For
+example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(eq_attr &quot;alternative&quot; &quot;2,3&quot;)
+</pre></div>
+
+<p>is equivalent to
+</p>
+<div class="smallexample">
+<pre class="smallexample">(ior (eq (symbol_ref &quot;which_alternative&quot;) (const_int 2))
+ (eq (symbol_ref &quot;which_alternative&quot;) (const_int 3)))
+</pre></div>
+
+<p>Note that, for most attributes, an <code>eq_attr</code> test is simplified in cases
+where the value of the attribute being tested is known for all insns matching
+a particular pattern. This is by far the most common case.
+</p>
+<a name="index-attr_005fflag"></a>
+</dd>
+<dt><code>(attr_flag <var>name</var>)</code></dt>
+<dd><p>The value of an <code>attr_flag</code> expression is true if the flag
+specified by <var>name</var> is true for the <code>insn</code> currently being
+scheduled.
+</p>
+<p><var>name</var> is a string specifying one of a fixed set of flags to test.
+Test the flags <code>forward</code> and <code>backward</code> to determine the
+direction of a conditional branch.
+</p>
+<p>This example describes a conditional branch delay slot which
+can be nullified for forward branches that are taken (annul-true) or
+for backward branches which are not taken (annul-false).
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_delay (eq_attr &quot;type&quot; &quot;cbranch&quot;)
+ [(eq_attr &quot;in_branch_delay&quot; &quot;true&quot;)
+ (and (eq_attr &quot;in_branch_delay&quot; &quot;true&quot;)
+ (attr_flag &quot;forward&quot;))
+ (and (eq_attr &quot;in_branch_delay&quot; &quot;true&quot;)
+ (attr_flag &quot;backward&quot;))])
+</pre></div>
+
+<p>The <code>forward</code> and <code>backward</code> flags are false if the current
+<code>insn</code> being scheduled is not a conditional branch.
+</p>
+<p><code>attr_flag</code> is only used during delay slot scheduling and has no
+meaning to other passes of the compiler.
+</p>
+<a name="index-attr"></a>
+</dd>
+<dt><code>(attr <var>name</var>)</code></dt>
+<dd><p>The value of another attribute is returned. This is most useful
+for numeric attributes, as <code>eq_attr</code> and <code>attr_flag</code>
+produce more efficient code for non-numeric attributes.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tagging-Insns.html#Tagging-Insns" accesskey="n" rel="next">Tagging Insns</a>, Previous: <a href="Defining-Attributes.html#Defining-Attributes" accesskey="p" rel="previous">Defining Attributes</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/File-Framework.html b/share/doc/gccint/File-Framework.html
new file mode 100644
index 0000000..164799d
--- /dev/null
+++ b/share/doc/gccint/File-Framework.html
@@ -0,0 +1,314 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: File Framework</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: File Framework">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: File Framework">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Data-Output.html#Data-Output" rel="next" title="Data Output">
+<link href="Assembler-Format.html#Assembler-Format" rel="previous" title="Assembler Format">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="File-Framework"></a>
+<div class="header">
+<p>
+Next: <a href="Data-Output.html#Data-Output" accesskey="n" rel="next">Data Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Overall-Framework-of-an-Assembler-File"></a>
+<h4 class="subsection">18.20.1 The Overall Framework of an Assembler File</h4>
+<a name="index-assembler-format"></a>
+<a name="index-output-of-assembler-code"></a>
+
+<p>This describes the overall framework of an assembly file.
+</p>
+<a name="index-default_005ffile_005fstart"></a>
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFILE_005fSTART"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FILE_START</strong> <em>(void)</em></dt>
+<dd><p>Output to <code>asm_out_file</code> any text which the assembler expects to
+find at the beginning of a file. The default behavior is controlled
+by two flags, documented below. Unless your target&rsquo;s assembler is
+quite unusual, if you override the default, you should call
+<code>default_file_start</code> at some point in your target hook. This
+lets other target files rely on these variables.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFILE_005fSTART_005fAPP_005fOFF"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_FILE_START_APP_OFF</strong></dt>
+<dd><p>If this flag is true, the text of the macro <code>ASM_APP_OFF</code> will be
+printed as the very first line in the assembly file, unless
+<samp>-fverbose-asm</samp> is in effect. (If that macro has been defined
+to the empty string, this variable has no effect.) With the normal
+definition of <code>ASM_APP_OFF</code>, the effect is to notify the GNU
+assembler that it need not bother stripping comments or extra
+whitespace from its input. This allows it to work a bit faster.
+</p>
+<p>The default is false. You should not set it to true unless you have
+verified that your port does not generate any extra whitespace or
+comments that will cause GAS to issue errors in NO_APP mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFILE_005fSTART_005fFILE_005fDIRECTIVE"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_FILE_START_FILE_DIRECTIVE</strong></dt>
+<dd><p>If this flag is true, <code>output_file_directive</code> will be called
+for the primary source file, immediately after printing
+<code>ASM_APP_OFF</code> (if that is enabled). Most ELF assemblers expect
+this to be done. The default is false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFILE_005fEND"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FILE_END</strong> <em>(void)</em></dt>
+<dd><p>Output to <code>asm_out_file</code> any text which the assembler expects
+to find at the end of a file. The default is to output nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-file_005fend_005findicate_005fexec_005fstack"></a>Function: <em>void</em> <strong>file_end_indicate_exec_stack</strong> <em>()</em></dt>
+<dd><p>Some systems use a common convention, the &lsquo;<samp>.note.GNU-stack</samp>&rsquo;
+special section, to indicate whether or not an object file relies on
+the stack being executable. If your system uses this convention, you
+should define <code>TARGET_ASM_FILE_END</code> to this function. If you
+need to do other things in that hook, have your hook function call
+this function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fLTO_005fSTART"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_LTO_START</strong> <em>(void)</em></dt>
+<dd><p>Output to <code>asm_out_file</code> any text which the assembler expects
+to find at the start of an LTO section. The default is to output
+nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fLTO_005fEND"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_LTO_END</strong> <em>(void)</em></dt>
+<dd><p>Output to <code>asm_out_file</code> any text which the assembler expects
+to find at the end of an LTO section. The default is to output
+nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fCODE_005fEND"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_CODE_END</strong> <em>(void)</em></dt>
+<dd><p>Output to <code>asm_out_file</code> any text which is needed before emitting
+unwind info and debug info at the end of a file. Some targets emit
+here PIC setup thunks that cannot be emitted at the end of file,
+because they couldn&rsquo;t have unwind info then. The default is to output
+nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fCOMMENT_005fSTART"></a>Macro: <strong>ASM_COMMENT_START</strong></dt>
+<dd><p>A C string constant describing how to begin a comment in the target
+assembler language. The compiler assumes that the comment will end at
+the end of the line.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fAPP_005fON"></a>Macro: <strong>ASM_APP_ON</strong></dt>
+<dd><p>A C string constant for text to be output before each <code>asm</code>
+statement or group of consecutive ones. Normally this is
+<code>&quot;#APP&quot;</code>, which is a comment that has no effect on most
+assemblers but tells the GNU assembler that it must check the lines
+that follow for all valid assembler constructs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fAPP_005fOFF"></a>Macro: <strong>ASM_APP_OFF</strong></dt>
+<dd><p>A C string constant for text to be output after each <code>asm</code>
+statement or group of consecutive ones. Normally this is
+<code>&quot;#NO_APP&quot;</code>, which tells the GNU assembler to resume making the
+time-saving assumptions that are valid for ordinary compiler output.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fSOURCE_005fFILENAME"></a>Macro: <strong>ASM_OUTPUT_SOURCE_FILENAME</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement to output COFF information or DWARF debugging information
+which indicates that filename <var>name</var> is the current source file to
+the stdio stream <var>stream</var>.
+</p>
+<p>This macro need not be defined if the standard form of output
+for the file format in use is appropriate.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fSOURCE_005fFILENAME"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_OUTPUT_SOURCE_FILENAME</strong> <em>(FILE *<var>file</var>, const char *<var>name</var>)</em></dt>
+<dd><p>Output DWARF debugging information which indicates that filename
+<var>name</var> is the current source file to the stdio stream <var>file</var>.
+</p>
+<p>This target hook need not be defined if the standard form of output
+for the file format in use is appropriate.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fIDENT"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_OUTPUT_IDENT</strong> <em>(const char *<var>name</var>)</em></dt>
+<dd><p>Output a string based on <var>name</var>, suitable for the &lsquo;<samp>#ident</samp>&rsquo;
+directive, or the equivalent directive or pragma in non-C-family languages.
+If this hook is not defined, nothing is output for the &lsquo;<samp>#ident</samp>&rsquo;
+directive.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OUTPUT_005fQUOTED_005fSTRING"></a>Macro: <strong>OUTPUT_QUOTED_STRING</strong> <em>(<var>stream</var>, <var>string</var>)</em></dt>
+<dd><p>A C statement to output the string <var>string</var> to the stdio stream
+<var>stream</var>. If you do not call the function <code>output_quoted_string</code>
+in your config files, GCC will only call it to output filenames to
+the assembler source. So you can use it to canonicalize the format
+of the filename using this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fNAMED_005fSECTION"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_NAMED_SECTION</strong> <em>(const char *<var>name</var>, unsigned int <var>flags</var>, tree <var>decl</var>)</em></dt>
+<dd><p>Output assembly directives to switch to section <var>name</var>. The section
+should have attributes as specified by <var>flags</var>, which is a bit mask
+of the <code>SECTION_*</code> flags defined in <samp>output.h</samp>. If <var>decl</var>
+is non-NULL, it is the <code>VAR_DECL</code> or <code>FUNCTION_DECL</code> with which
+this section is associated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fELF_005fFLAGS_005fNUMERIC"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_ELF_FLAGS_NUMERIC</strong> <em>(unsigned int <var>flags</var>, unsigned int *<var>num</var>)</em></dt>
+<dd><p>This hook can be used to encode ELF section flags for which no letter
+code has been defined in the assembler. It is called by
+<code>default_asm_named_section</code> whenever the section flags need to be
+emitted in the assembler output. If the hook returns true, then the
+numerical value for ELF section flags should be calculated from
+<var>flags</var> and saved in <var>*num</var>; the value is printed out instead of the
+normal sequence of letter codes. If the hook is not defined, or if it
+returns false, then <var>num</var> is ignored and the traditional letter sequence
+is emitted.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_FUNCTION_SECTION</strong> <em>(tree <var>decl</var>, enum node_frequency <var>freq</var>, bool <var>startup</var>, bool <var>exit</var>)</em></dt>
+<dd><p>Return preferred text (sub)section for function <var>decl</var>.
+Main purpose of this function is to separate cold, normal and hot
+functions. <var>startup</var> is true when function is known to be used only
+at startup (from static constructors or it is <code>main()</code>).
+<var>exit</var> is true when function is known to be used only at exit
+(from static destructors).
+Return NULL if function should go to default text section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fSWITCHED_005fTEXT_005fSECTIONS"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS</strong> <em>(FILE *<var>file</var>, tree <var>decl</var>, bool <var>new_is_cold</var>)</em></dt>
+<dd><p>Used by the target to emit any assembler directives or additional
+labels needed when a function is partitioned between different
+sections. Output should be written to <var>file</var>. The function
+decl is available as <var>decl</var> and the new section is &lsquo;cold&rsquo; if
+<var>new_is_cold</var> is <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fNAMED_005fSECTIONS"></a>Common Target Hook: <em>bool</em> <strong>TARGET_HAVE_NAMED_SECTIONS</strong></dt>
+<dd><p>This flag is true if the target supports <code>TARGET_ASM_NAMED_SECTION</code>.
+It must not be modified by command-line option processing.
+</p></dd></dl>
+
+<a name="TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS"></a><dl>
+<dt><a name="index-TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_SWITCHABLE_BSS_SECTIONS</strong></dt>
+<dd><p>This flag is true if we can create zeroed data by switching to a BSS
+section and then using <code>ASM_OUTPUT_SKIP</code> to allocate the space.
+This is true on most ELF targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSECTION_005fTYPE_005fFLAGS"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_SECTION_TYPE_FLAGS</strong> <em>(tree <var>decl</var>, const char *<var>name</var>, int <var>reloc</var>)</em></dt>
+<dd><p>Choose a set of section attributes for use by <code>TARGET_ASM_NAMED_SECTION</code>
+based on a variable or function decl, a section name, and whether or not the
+declaration&rsquo;s initializer may contain runtime relocations. <var>decl</var> may be
+null, in which case read-write data should be assumed.
+</p>
+<p>The default version of this function handles choosing code vs data,
+read-only vs read-write data, and <code>flag_pic</code>. You should only
+need to override this if your target has special flags that might be
+set via <code>__attribute__</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fRECORD_005fGCC_005fSWITCHES"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_RECORD_GCC_SWITCHES</strong> <em>(const char *<var></var>)</em></dt>
+<dd><p>Provides the target with the ability to record the gcc command line
+switches provided as argument.
+</p>
+<p>By default this hook is set to NULL, but an example implementation is
+provided for ELF based targets. Called <var>elf_record_gcc_switches</var>,
+it records the switches as ASCII text inside a new, string mergeable
+section in the assembler output file. The name of the new section is
+provided by the <code>TARGET_ASM_RECORD_GCC_SWITCHES_SECTION</code> target
+hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fRECORD_005fGCC_005fSWITCHES_005fSECTION"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_RECORD_GCC_SWITCHES_SECTION</strong></dt>
+<dd><p>This is the name of the section that will be created by the example
+ELF implementation of the <code>TARGET_ASM_RECORD_GCC_SWITCHES</code> target
+hook.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Data-Output.html#Data-Output" accesskey="n" rel="next">Data Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Files.html b/share/doc/gccint/Files.html
new file mode 100644
index 0000000..7ad3227
--- /dev/null
+++ b/share/doc/gccint/Files.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Files</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Files">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" rel="next" title="Invoking the garbage collector">
+<link href="GGC-Roots.html#GGC-Roots" rel="previous" title="GGC Roots">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Files"></a>
+<div class="header">
+<p>
+Next: <a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" accesskey="n" rel="next">Invoking the garbage collector</a>, Previous: <a href="GGC-Roots.html#GGC-Roots" accesskey="p" rel="previous">GGC Roots</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Source-Files-Containing-Type-Information"></a>
+<h3 class="section">23.5 Source Files Containing Type Information</h3>
+<a name="index-generated-files"></a>
+<a name="index-files_002c-generated"></a>
+
+<p>Whenever you add <code>GTY</code> markers to a source file that previously
+had none, or create a new source file containing <code>GTY</code> markers,
+there are three things you need to do:
+</p>
+<ol>
+<li> You need to add the file to the list of source files the type
+machinery scans. There are four cases:
+
+<ol>
+<li> For a back-end file, this is usually done
+automatically; if not, you should add it to <code>target_gtfiles</code> in
+the appropriate port&rsquo;s entries in <samp>config.gcc</samp>.
+
+</li><li> For files shared by all front ends, add the filename to the
+<code>GTFILES</code> variable in <samp>Makefile.in</samp>.
+
+</li><li> For files that are part of one front end, add the filename to the
+<code>gtfiles</code> variable defined in the appropriate
+<samp>config-lang.in</samp>.
+Headers should appear before non-headers in this list.
+
+</li><li> For files that are part of some but not all front ends, add the
+filename to the <code>gtfiles</code> variable of <em>all</em> the front ends
+that use it.
+</li></ol>
+
+</li><li> If the file was a header file, you&rsquo;ll need to check that it&rsquo;s included
+in the right place to be visible to the generated files. For a back-end
+header file, this should be done automatically. For a front-end header
+file, it needs to be included by the same file that includes
+<samp>gtype-<var>lang</var>.h</samp>. For other header files, it needs to be
+included in <samp>gtype-desc.cc</samp>, which is a generated file, so add it to
+<code>ifiles</code> in <code>open_base_file</code> in <samp>gengtype.cc</samp>.
+
+<p>For source files that aren&rsquo;t header files, the machinery will generate a
+header file that should be included in the source file you just changed.
+The file will be called <samp>gt-<var>path</var>.h</samp> where <var>path</var> is the
+pathname relative to the <samp>gcc</samp> directory with slashes replaced by
+<tt>-</tt>, so for example the header file to be included in
+<samp>cp/parser.cc</samp> is called <samp>gt-cp-parser.h</samp>. The
+generated header file should be included after everything else in the
+source file.
+</p>
+</li></ol>
+
+<p>For language frontends, there is another file that needs to be included
+somewhere. It will be called <samp>gtype-<var>lang</var>.h</samp>, where
+<var>lang</var> is the name of the subdirectory the language is contained in.
+</p>
+<p>Plugins can add additional root tables. Run the <code>gengtype</code>
+utility in plugin mode as <code>gengtype -P pluginout.h <var>source-dir</var>
+<var>file-list</var> <var>plugin*.c</var></code> with your plugin files
+<var>plugin*.c</var> using <code>GTY</code> to generate the <var>pluginout.h</var> file.
+The GCC build tree is needed to be present in that mode.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" accesskey="n" rel="next">Invoking the garbage collector</a>, Previous: <a href="GGC-Roots.html#GGC-Roots" accesskey="p" rel="previous">GGC Roots</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Filesystem.html b/share/doc/gccint/Filesystem.html
new file mode 100644
index 0000000..5d537a1
--- /dev/null
+++ b/share/doc/gccint/Filesystem.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Filesystem</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Filesystem">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Filesystem">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Host-Config.html#Host-Config" rel="up" title="Host Config">
+<link href="Host-Misc.html#Host-Misc" rel="next" title="Host Misc">
+<link href="Host-Common.html#Host-Common" rel="previous" title="Host Common">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Filesystem"></a>
+<div class="header">
+<p>
+Next: <a href="Host-Misc.html#Host-Misc" accesskey="n" rel="next">Host Misc</a>, Previous: <a href="Host-Common.html#Host-Common" accesskey="p" rel="previous">Host Common</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Host-Filesystem"></a>
+<h3 class="section">19.2 Host Filesystem</h3>
+<a name="index-configuration-file"></a>
+<a name="index-xm_002dmachine_002eh"></a>
+
+<p>GCC needs to know a number of things about the semantics of the host
+machine&rsquo;s filesystem. Filesystems with Unix and MS-DOS semantics are
+automatically detected. For other systems, you can define the
+following macros in <samp>xm-<var>machine</var>.h</samp>.
+</p>
+<dl compact="compact">
+<dt><code>HAVE_DOS_BASED_FILE_SYSTEM</code>
+<a name="index-HAVE_005fDOS_005fBASED_005fFILE_005fSYSTEM"></a>
+</dt>
+<dd><p>This macro is automatically defined by <samp>system.h</samp> if the host
+file system obeys the semantics defined by MS-DOS instead of Unix.
+DOS file systems are case insensitive, file specifications may begin
+with a drive letter, and both forward slash and backslash (&lsquo;<samp>/</samp>&rsquo;
+and &lsquo;<samp>\</samp>&rsquo;) are directory separators.
+</p>
+</dd>
+<dt><code>DIR_SEPARATOR</code>
+<a name="index-DIR_005fSEPARATOR"></a>
+</dt>
+<dt><code>DIR_SEPARATOR_2</code>
+<a name="index-DIR_005fSEPARATOR_005f2"></a>
+</dt>
+<dd><p>If defined, these macros expand to character constants specifying
+separators for directory names within a file specification.
+<samp>system.h</samp> will automatically give them appropriate values on
+Unix and MS-DOS file systems. If your file system is neither of
+these, define one or both appropriately in <samp>xm-<var>machine</var>.h</samp>.
+</p>
+<p>However, operating systems like VMS, where constructing a pathname is
+more complicated than just stringing together directory names
+separated by a special character, should not define either of these
+macros.
+</p>
+</dd>
+<dt><code>PATH_SEPARATOR</code>
+<a name="index-PATH_005fSEPARATOR"></a>
+</dt>
+<dd><p>If defined, this macro should expand to a character constant
+specifying the separator for elements of search paths. The default
+value is a colon (&lsquo;<samp>:</samp>&rsquo;). DOS-based systems usually, but not
+always, use semicolon (&lsquo;<samp>;</samp>&rsquo;).
+</p>
+</dd>
+<dt><code>VMS</code>
+<a name="index-VMS"></a>
+</dt>
+<dd><p>Define this macro if the host system is VMS.
+</p>
+</dd>
+<dt><code>HOST_OBJECT_SUFFIX</code>
+<a name="index-HOST_005fOBJECT_005fSUFFIX"></a>
+</dt>
+<dd><p>Define this macro to be a C string representing the suffix for object
+files on your host machine. If you do not define this macro, GCC will
+use &lsquo;<samp>.o</samp>&rsquo; as the suffix for object files.
+</p>
+</dd>
+<dt><code>HOST_EXECUTABLE_SUFFIX</code>
+<a name="index-HOST_005fEXECUTABLE_005fSUFFIX"></a>
+</dt>
+<dd><p>Define this macro to be a C string representing the suffix for
+executable files on your host machine. If you do not define this macro,
+GCC will use the null string as the suffix for executable files.
+</p>
+</dd>
+<dt><code>HOST_BIT_BUCKET</code>
+<a name="index-HOST_005fBIT_005fBUCKET"></a>
+</dt>
+<dd><p>A pathname defined by the host operating system, which can be opened as
+a file and written to, but all the information written is discarded.
+This is commonly known as a <em>bit bucket</em> or <em>null device</em>. If
+you do not define this macro, GCC will use &lsquo;<samp>/dev/null</samp>&rsquo; as the bit
+bucket. If the host does not support a bit bucket, define this macro to
+an invalid filename.
+</p>
+</dd>
+<dt><code>UPDATE_PATH_HOST_CANONICALIZE (<var>path</var>)</code>
+<a name="index-UPDATE_005fPATH_005fHOST_005fCANONICALIZE-_0028path_0029"></a>
+</dt>
+<dd><p>If defined, a C statement (sans semicolon) that performs host-dependent
+canonicalization when a path used in a compilation driver or
+preprocessor is canonicalized. <var>path</var> is a malloc-ed path to be
+canonicalized. If the C statement does canonicalize <var>path</var> into a
+different buffer, the old path should be freed and the new buffer should
+have been allocated with malloc.
+</p>
+</dd>
+<dt><code>DUMPFILE_FORMAT</code>
+<a name="index-DUMPFILE_005fFORMAT"></a>
+</dt>
+<dd><p>Define this macro to be a C string representing the format to use for
+constructing the index part of debugging dump file names. The resultant
+string must fit in fifteen bytes. The full filename will be the
+concatenation of: the prefix of the assembler file name, the string
+resulting from applying this format to an index number, and a string
+unique to each dump file kind, e.g. &lsquo;<samp>rtl</samp>&rsquo;.
+</p>
+<p>If you do not define this macro, GCC will use &lsquo;<samp>.%02d.</samp>&rsquo;. You should
+define this macro if using the default will create an invalid file name.
+</p>
+</dd>
+<dt><code>DELETE_IF_ORDINARY</code>
+<a name="index-DELETE_005fIF_005fORDINARY"></a>
+</dt>
+<dd><p>Define this macro to be a C statement (sans semicolon) that performs
+host-dependent removal of ordinary temp files in the compilation driver.
+</p>
+<p>If you do not define this macro, GCC will use the default version. You
+should define this macro if the default version does not reliably remove
+the temp file as, for example, on VMS which allows multiple versions
+of a file.
+</p>
+</dd>
+<dt><code>HOST_LACKS_INODE_NUMBERS</code>
+<a name="index-HOST_005fLACKS_005fINODE_005fNUMBERS"></a>
+</dt>
+<dd><p>Define this macro if the host filesystem does not report meaningful inode
+numbers in struct stat.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Host-Misc.html#Host-Misc" accesskey="n" rel="next">Host Misc</a>, Previous: <a href="Host-Common.html#Host-Common" accesskey="p" rel="previous">Host Common</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Final-Actions.html b/share/doc/gccint/Final-Actions.html
new file mode 100644
index 0000000..f0649a8
--- /dev/null
+++ b/share/doc/gccint/Final-Actions.html
@@ -0,0 +1,409 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Final Actions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Final Actions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Final Actions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Ada-Tests.html#Ada-Tests" rel="next" title="Ada Tests">
+<link href="Require-Support.html#Require-Support" rel="previous" title="Require Support">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Final-Actions"></a>
+<div class="header">
+<p>
+Previous: <a href="Require-Support.html#Require-Support" accesskey="p" rel="previous">Require Support</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Commands-for-use-in-dg_002dfinal"></a>
+<h4 class="subsection">7.2.6 Commands for use in <code>dg-final</code></h4>
+
+<p>The GCC testsuite defines the following directives to be used within
+<code>dg-final</code>.
+</p>
+<a name="Scan-a-particular-file"></a>
+<h4 class="subsubsection">7.2.6.1 Scan a particular file</h4>
+
+<dl compact="compact">
+<dt><code>scan-file <var>filename</var> <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regexp</var> matches text in <var>filename</var>.
+</p></dd>
+<dt><code>scan-file-not <var>filename</var> <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regexp</var> does not match text in <var>filename</var>.
+</p></dd>
+<dt><code>scan-module <var>module</var> <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regexp</var> matches in Fortran module <var>module</var>.
+</p></dd>
+<dt><code>dg-check-dot <var>filename</var></code></dt>
+<dd><p>Passes if <var>filename</var> is a valid <samp>.dot</samp> file (by running
+<code>dot -Tpng</code> on it, and verifying the exit code is 0).
+</p></dd>
+<dt><code>scan-sarif-file <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regexp</var> matches text in the file generated by
+<samp>-fdiagnostics-format=sarif-file</samp>.
+</p></dd>
+<dt><code>scan-sarif-file-not <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regexp</var> does not match text in the file generated by
+<samp>-fdiagnostics-format=sarif-file</samp>.
+</p></dd>
+</dl>
+
+<a name="Scan-the-assembly-output"></a>
+<h4 class="subsubsection">7.2.6.2 Scan the assembly output</h4>
+
+<dl compact="compact">
+<dt><code>scan-assembler <var>regex</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> matches text in the test&rsquo;s assembler output.
+</p>
+</dd>
+<dt><code>scan-assembler-not <var>regex</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> does not match text in the test&rsquo;s assembler output.
+</p>
+</dd>
+<dt><code>scan-assembler-times <var>regex</var> <var>num</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> is matched exactly <var>num</var> times in the test&rsquo;s
+assembler output.
+</p>
+</dd>
+<dt><code>scan-assembler-dem <var>regex</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> matches text in the test&rsquo;s demangled assembler output.
+</p>
+</dd>
+<dt><code>scan-assembler-dem-not <var>regex</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> does not match text in the test&rsquo;s demangled assembler
+output.
+</p>
+</dd>
+<dt><code>scan-assembler-symbol-section <var>functions</var> <var>section</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>functions</var> are all in <var>section</var>. The caller needs to
+allow for <code>USER_LABEL_PREFIX</code> and different section name conventions.
+</p>
+</dd>
+<dt><code>scan-symbol-section <var>filename</var> <var>functions</var> <var>section</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>functions</var> are all in <var>section</var>in <var>filename</var>.
+The same caveats as for <code>scan-assembler-symbol-section</code> apply.
+</p>
+</dd>
+<dt><code>scan-hidden <var>symbol</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>symbol</var> is defined as a hidden symbol in the test&rsquo;s
+assembly output.
+</p>
+</dd>
+<dt><code>scan-not-hidden <var>symbol</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>symbol</var> is not defined as a hidden symbol in the test&rsquo;s
+assembly output.
+</p>
+</dd>
+<dt><code>check-function-bodies <var>prefix</var> <var>terminator</var> [<var>options</var> [{ target/xfail <var>selector</var> }]]</code></dt>
+<dd><p>Looks through the source file for comments that give the expected assembly
+output for selected functions. Each line of expected output starts with the
+prefix string <var>prefix</var> and the expected output for a function as a whole
+is followed by a line that starts with the string <var>terminator</var>.
+Specifying an empty terminator is equivalent to specifying &lsquo;<samp>&quot;*/&quot;</samp>&rsquo;.
+</p>
+<p><var>options</var>, if specified, is a list of regular expressions, each of
+which matches a full command-line option. A non-empty list prevents
+the test from running unless all of the given options are present on the
+command line. This can help if a source file is compiled both with
+and without optimization, since it is rarely useful to check the full
+function body for unoptimized code.
+</p>
+<p>The first line of the expected output for a function <var>fn</var> has the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>prefix</var> <var>fn</var>: [{ target/xfail <var>selector</var> }]
+</pre></div>
+
+<p>Subsequent lines of the expected output also start with <var>prefix</var>.
+In both cases, whitespace after <var>prefix</var> is not significant.
+</p>
+<p>The test discards assembly directives such as <code>.cfi_startproc</code>
+and local label definitions such as <code>.LFB0</code> from the compiler&rsquo;s
+assembly output. It then matches the result against the expected
+output for a function as a single regular expression. This means that
+later lines can use backslashes to refer back to &lsquo;<samp>(&hellip;)</samp>&rsquo;
+captures on earlier lines. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-final { check-function-bodies &quot;**&quot; &quot;&quot; &quot;-DCHECK_ASM&quot; } } */
+&hellip;
+/*
+** add_w0_s8_m:
+** mov (z[0-9]+\.b), w0
+** add z0\.b, p0/m, z0\.b, \1
+** ret
+*/
+svint8_t add_w0_s8_m (&hellip;) { &hellip; }
+&hellip;
+/*
+** add_b0_s8_m:
+** mov (z[0-9]+\.b), b0
+** add z1\.b, p0/m, z1\.b, \1
+** ret
+*/
+svint8_t add_b0_s8_m (&hellip;) { &hellip; }
+</pre></div>
+
+<p>checks whether the implementations of <code>add_w0_s8_m</code> and
+<code>add_b0_s8_m</code> match the regular expressions given. The test only
+runs when &lsquo;<samp>-DCHECK_ASM</samp>&rsquo; is passed on the command line.
+</p>
+<p>It is possible to create non-capturing multi-line regular expression
+groups of the form &lsquo;<samp>(<var>a</var>|<var>b</var>|&hellip;)</samp>&rsquo; by putting the
+&lsquo;<samp>(</samp>&rsquo;, &lsquo;<samp>|</samp>&rsquo; and &lsquo;<samp>)</samp>&rsquo; on separate lines (each still using
+<var>prefix</var>). For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/*
+** cmple_f16_tied:
+** (
+** fcmge p0\.h, p0/z, z1\.h, z0\.h
+** |
+** fcmle p0\.h, p0/z, z0\.h, z1\.h
+** )
+** ret
+*/
+svbool_t cmple_f16_tied (&hellip;) { &hellip; }
+</pre></div>
+
+<p>checks whether <code>cmple_f16_tied</code> is implemented by the
+<code>fcmge</code> instruction followed by <code>ret</code> or by the
+<code>fcmle</code> instruction followed by <code>ret</code>. The test is
+still a single regular rexpression.
+</p>
+<p>A line containing just:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>prefix</var> ...
+</pre></div>
+
+<p>stands for zero or more unmatched lines; the whitespace after
+<var>prefix</var> is again not significant.
+</p>
+</dd>
+</dl>
+
+<a name="Scan-optimization-dump-files"></a>
+<h4 class="subsubsection">7.2.6.3 Scan optimization dump files</h4>
+
+<p>These commands are available for <var>kind</var> of <code>tree</code>, <code>ltrans-tree</code>,
+<code>offload-tree</code>, <code>rtl</code>, <code>offload-rtl</code>, <code>ipa</code>, and
+<code>wpa-ipa</code>.
+</p>
+<dl compact="compact">
+<dt><code>scan-<var>kind</var>-dump <var>regex</var> <var>suffix</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> matches text in the dump file with suffix <var>suffix</var>.
+</p>
+</dd>
+<dt><code>scan-<var>kind</var>-dump-not <var>regex</var> <var>suffix</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> does not match text in the dump file with suffix
+<var>suffix</var>.
+</p>
+</dd>
+<dt><code>scan-<var>kind</var>-dump-times <var>regex</var> <var>num</var> <var>suffix</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> is found exactly <var>num</var> times in the dump file
+with suffix <var>suffix</var>.
+</p>
+</dd>
+<dt><code>scan-<var>kind</var>-dump-dem <var>regex</var> <var>suffix</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> matches demangled text in the dump file with
+suffix <var>suffix</var>.
+</p>
+</dd>
+<dt><code>scan-<var>kind</var>-dump-dem-not <var>regex</var> <var>suffix</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if <var>regex</var> does not match demangled text in the dump file with
+suffix <var>suffix</var>.
+</p></dd>
+</dl>
+
+<p>The <var>suffix</var> argument which describes the dump file to be scanned
+may contain a glob pattern that must expand to exactly one file
+name. This is useful if, e.g., different pass instances are executed
+depending on torture testing command-line flags, producing dump files
+whose names differ only in their pass instance number suffix. For
+example, to scan instances 1, 2, 3 of a tree pass &ldquo;mypass&rdquo; for
+occurrences of the string &ldquo;code has been optimized&rdquo;, use:
+</p><div class="smallexample">
+<pre class="smallexample">/* { dg-options &quot;-fdump-tree-mypass&quot; } */
+/* { dg-final { scan-tree-dump &quot;code has been optimized&quot; &quot;mypass\[1-3\]&quot; } } */
+</pre></div>
+
+
+<a name="Check-for-output-files"></a>
+<h4 class="subsubsection">7.2.6.4 Check for output files</h4>
+
+<dl compact="compact">
+<dt><code>output-exists [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if compiler output file exists.
+</p>
+</dd>
+<dt><code>output-exists-not [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if compiler output file does not exist.
+</p>
+</dd>
+<dt><code>scan-symbol <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if the pattern is present in the final executable.
+</p>
+</dd>
+<dt><code>scan-symbol-not <var>regexp</var> [{ target/xfail <var>selector</var> }]</code></dt>
+<dd><p>Passes if the pattern is absent from the final executable.
+</p></dd>
+</dl>
+
+<a name="Checks-for-gcov-tests"></a>
+<h4 class="subsubsection">7.2.6.5 Checks for <code>gcov</code> tests</h4>
+
+<dl compact="compact">
+<dt><code>run-gcov <var>sourcefile</var></code></dt>
+<dd><p>Check line counts in <code>gcov</code> tests.
+</p>
+</dd>
+<dt><code>run-gcov [branches] [calls] { <var>opts</var> <var>sourcefile</var> }</code></dt>
+<dd><p>Check branch and/or call counts, in addition to line counts, in
+<code>gcov</code> tests.
+</p>
+</dd>
+<dt><code>run-gcov-pytest { <var>sourcefile</var> <var>pytest_file</var> }</code></dt>
+<dd><p>Check output of <code>gcov</code> intermediate format with a pytest
+script.
+</p></dd>
+</dl>
+
+<a name="Clean-up-generated-test-files"></a>
+<h4 class="subsubsection">7.2.6.6 Clean up generated test files</h4>
+
+<p>Usually the test-framework removes files that were generated during
+testing. If a testcase, for example, uses any dumping mechanism to
+inspect a passes dump file, the testsuite recognized the dump option
+passed to the tool and schedules a final cleanup to remove these files.
+</p>
+<p>There are, however, following additional cleanup directives that can be
+used to annotate a testcase &quot;manually&quot;.
+</p><dl compact="compact">
+<dt><code>cleanup-coverage-files</code></dt>
+<dd><p>Removes coverage data files generated for this test.
+</p>
+</dd>
+<dt><code>cleanup-modules &quot;<var>list-of-extra-modules</var>&quot;</code></dt>
+<dd><p>Removes Fortran module files generated for this test, excluding the
+module names listed in keep-modules.
+Cleaning up module files is usually done automatically by the testsuite
+by looking at the source files and removing the modules after the test
+has been executed.
+</p><div class="smallexample">
+<pre class="smallexample">module MoD1
+end module MoD1
+module Mod2
+end module Mod2
+module moD3
+end module moD3
+module mod4
+end module mod4
+! { dg-final { cleanup-modules &quot;mod1 mod2&quot; } } ! redundant
+! { dg-final { keep-modules &quot;mod3 mod4&quot; } }
+</pre></div>
+
+</dd>
+<dt><code>keep-modules &quot;<var>list-of-modules-not-to-delete</var>&quot;</code></dt>
+<dd><p>Whitespace separated list of module names that should not be deleted by
+cleanup-modules.
+If the list of modules is empty, all modules defined in this file are kept.
+</p><div class="smallexample">
+<pre class="smallexample">module maybe_unneeded
+end module maybe_unneeded
+module keep1
+end module keep1
+module keep2
+end module keep2
+! { dg-final { keep-modules &quot;keep1 keep2&quot; } } ! just keep these two
+! { dg-final { keep-modules &quot;&quot; } } ! keep all
+</pre></div>
+
+</dd>
+<dt><code>dg-keep-saved-temps &quot;<var>list-of-suffixes-not-to-delete</var>&quot;</code></dt>
+<dd><p>Whitespace separated list of suffixes that should not be deleted
+automatically in a testcase that uses <samp>-save-temps</samp>.
+</p><div class="smallexample">
+<pre class="smallexample">// { dg-options &quot;-save-temps -fpch-preprocess -I.&quot; }
+int main() { return 0; }
+// { dg-keep-saved-temps &quot;.s&quot; } ! just keep assembler file
+// { dg-keep-saved-temps &quot;.s&quot; &quot;.i&quot; } ! ... and .i
+// { dg-keep-saved-temps &quot;.ii&quot; &quot;.o&quot; } ! or just .ii and .o
+</pre></div>
+
+</dd>
+<dt><code>cleanup-profile-file</code></dt>
+<dd><p>Removes profiling files generated for this test.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Require-Support.html#Require-Support" accesskey="p" rel="previous">Require Support</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Fixed_002dpoint-fractional-library-routines.html b/share/doc/gccint/Fixed_002dpoint-fractional-library-routines.html
new file mode 100644
index 0000000..e258255
--- /dev/null
+++ b/share/doc/gccint/Fixed_002dpoint-fractional-library-routines.html
@@ -0,0 +1,1537 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Fixed-point fractional library routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Fixed-point fractional library routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Fixed-point fractional library routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Exception-handling-routines.html#Exception-handling-routines" rel="next" title="Exception handling routines">
+<link href="Decimal-float-library-routines.html#Decimal-float-library-routines" rel="previous" title="Decimal float library routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Fixed_002dpoint-fractional-library-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Exception-handling-routines.html#Exception-handling-routines" accesskey="n" rel="next">Exception handling routines</a>, Previous: <a href="Decimal-float-library-routines.html#Decimal-float-library-routines" accesskey="p" rel="previous">Decimal float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Routines-for-fixed_002dpoint-fractional-emulation"></a>
+<h3 class="section">4.4 Routines for fixed-point fractional emulation</h3>
+<a name="index-fixed_002dpoint-fractional-library"></a>
+<a name="index-fractional-types"></a>
+<a name="index-Embedded-C"></a>
+
+<p>The software fixed-point library implements fixed-point fractional
+arithmetic, and is only activated on selected targets.
+</p>
+<p>For ease of comprehension <code>fract</code> is an alias for the
+<code>_Fract</code> type, <code>accum</code> an alias for <code>_Accum</code>, and
+<code>sat</code> an alias for <code>_Sat</code>.
+</p>
+<p>For illustrative purposes, in this section the fixed-point fractional type
+<code>short&nbsp;fract<!-- /@w --></code> is assumed to correspond to machine mode <code>QQmode</code>;
+<code>unsigned&nbsp;short&nbsp;fract<!-- /@w --></code> to <code>UQQmode</code>;
+<code>fract</code> to <code>HQmode</code>;
+<code>unsigned&nbsp;fract<!-- /@w --></code> to <code>UHQmode</code>;
+<code>long&nbsp;fract<!-- /@w --></code> to <code>SQmode</code>;
+<code>unsigned&nbsp;long&nbsp;fract<!-- /@w --></code> to <code>USQmode</code>;
+<code>long&nbsp;long&nbsp;fract<!-- /@w --></code> to <code>DQmode</code>;
+and <code>unsigned&nbsp;long&nbsp;long&nbsp;fract<!-- /@w --></code> to <code>UDQmode</code>.
+Similarly the fixed-point accumulator type
+<code>short&nbsp;accum<!-- /@w --></code> corresponds to <code>HAmode</code>;
+<code>unsigned&nbsp;short&nbsp;accum<!-- /@w --></code> to <code>UHAmode</code>;
+<code>accum</code> to <code>SAmode</code>;
+<code>unsigned&nbsp;accum<!-- /@w --></code> to <code>USAmode</code>;
+<code>long&nbsp;accum<!-- /@w --></code> to <code>DAmode</code>;
+<code>unsigned&nbsp;long&nbsp;accum<!-- /@w --></code> to <code>UDAmode</code>;
+<code>long&nbsp;long&nbsp;accum<!-- /@w --></code> to <code>TAmode</code>;
+and <code>unsigned&nbsp;long&nbsp;long&nbsp;accum<!-- /@w --></code> to <code>UTAmode</code>.
+</p>
+<a name="Arithmetic-functions-3"></a>
+<h4 class="subsection">4.4.1 Arithmetic functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005faddqq3"></a>Runtime Function: <em>short fract</em> <strong>__addqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddhq3"></a>Runtime Function: <em>fract</em> <strong>__addhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddsq3"></a>Runtime Function: <em>long fract</em> <strong>__addsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadddq3"></a>Runtime Function: <em>long long fract</em> <strong>__adddq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadduqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__adduqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadduhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__adduhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__addusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__addudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddha3"></a>Runtime Function: <em>short accum</em> <strong>__addha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddsa3"></a>Runtime Function: <em>accum</em> <strong>__addsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddda3"></a>Runtime Function: <em>long accum</em> <strong>__addda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddta3"></a>Runtime Function: <em>long long accum</em> <strong>__addta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadduha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__adduha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__addusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadduda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__adduda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadduta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__adduta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fssaddqq3"></a>Runtime Function: <em>short fract</em> <strong>__ssaddqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddhq3"></a>Runtime Function: <em>fract</em> <strong>__ssaddhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddsq3"></a>Runtime Function: <em>long fract</em> <strong>__ssaddsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssadddq3"></a>Runtime Function: <em>long long fract</em> <strong>__ssadddq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddha3"></a>Runtime Function: <em>short accum</em> <strong>__ssaddha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddsa3"></a>Runtime Function: <em>accum</em> <strong>__ssaddsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddda3"></a>Runtime Function: <em>long accum</em> <strong>__ssaddda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssaddta3"></a>Runtime Function: <em>long long accum</em> <strong>__ssaddta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var> with signed saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fusadduqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__usadduqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusadduhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__usadduhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusaddusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__usaddusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusaddudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__usaddudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusadduha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__usadduha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusaddusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__usaddusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusadduda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__usadduda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusadduta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__usadduta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var> with unsigned saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsubqq3"></a>Runtime Function: <em>short fract</em> <strong>__subqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubhq3"></a>Runtime Function: <em>fract</em> <strong>__subhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubsq3"></a>Runtime Function: <em>long fract</em> <strong>__subsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubdq3"></a>Runtime Function: <em>long long fract</em> <strong>__subdq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubuqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__subuqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubuhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__subuhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__subusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__subudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubha3"></a>Runtime Function: <em>short accum</em> <strong>__subha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubsa3"></a>Runtime Function: <em>accum</em> <strong>__subsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubda3"></a>Runtime Function: <em>long accum</em> <strong>__subda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubta3"></a>Runtime Function: <em>long long accum</em> <strong>__subta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubuha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__subuha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__subusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubuda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__subuda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubuta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__subuta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the difference of <var>a</var> and <var>b</var>;
+that is, <code><var>a</var> - <var>b</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsssubqq3"></a>Runtime Function: <em>short fract</em> <strong>__sssubqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubhq3"></a>Runtime Function: <em>fract</em> <strong>__sssubhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubsq3"></a>Runtime Function: <em>long fract</em> <strong>__sssubsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubdq3"></a>Runtime Function: <em>long long fract</em> <strong>__sssubdq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubha3"></a>Runtime Function: <em>short accum</em> <strong>__sssubha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubsa3"></a>Runtime Function: <em>accum</em> <strong>__sssubsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubda3"></a>Runtime Function: <em>long accum</em> <strong>__sssubda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsssubta3"></a>Runtime Function: <em>long long accum</em> <strong>__sssubta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the difference of <var>a</var> and <var>b</var> with signed
+saturation; that is, <code><var>a</var> - <var>b</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fussubuqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__ussubuqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubuhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__ussubuhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__ussubusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__ussubudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubuha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__ussubuha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__ussubusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubuda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__ussubuda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fussubuta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__ussubuta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the difference of <var>a</var> and <var>b</var> with unsigned
+saturation; that is, <code><var>a</var> - <var>b</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmulqq3"></a>Runtime Function: <em>short fract</em> <strong>__mulqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulhq3"></a>Runtime Function: <em>fract</em> <strong>__mulhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulsq3"></a>Runtime Function: <em>long fract</em> <strong>__mulsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuldq3"></a>Runtime Function: <em>long long fract</em> <strong>__muldq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuluqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__muluqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuluhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__muluhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__mulusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuludq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__muludq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulha3"></a>Runtime Function: <em>short accum</em> <strong>__mulha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulsa3"></a>Runtime Function: <em>accum</em> <strong>__mulsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulda3"></a>Runtime Function: <em>long accum</em> <strong>__mulda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulta3"></a>Runtime Function: <em>long long accum</em> <strong>__multa3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuluha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__muluha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__mulusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuluda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__muluda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuluta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__muluta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fssmulqq3"></a>Runtime Function: <em>short fract</em> <strong>__ssmulqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulhq3"></a>Runtime Function: <em>fract</em> <strong>__ssmulhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulsq3"></a>Runtime Function: <em>long fract</em> <strong>__ssmulsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmuldq3"></a>Runtime Function: <em>long long fract</em> <strong>__ssmuldq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulha3"></a>Runtime Function: <em>short accum</em> <strong>__ssmulha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulsa3"></a>Runtime Function: <em>accum</em> <strong>__ssmulsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulda3"></a>Runtime Function: <em>long accum</em> <strong>__ssmulda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssmulta3"></a>Runtime Function: <em>long long accum</em> <strong>__ssmulta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var> with signed
+saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fusmuluqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__usmuluqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmuluhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__usmuluhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmulusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__usmulusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmuludq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__usmuludq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmuluha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__usmuluha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmulusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__usmulusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmuluda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__usmuluda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusmuluta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__usmuluta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var> with unsigned
+saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdivqq3"></a>Runtime Function: <em>short fract</em> <strong>__divqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivhq3"></a>Runtime Function: <em>fract</em> <strong>__divhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivsq3"></a>Runtime Function: <em>long fract</em> <strong>__divsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivdq3"></a>Runtime Function: <em>long long fract</em> <strong>__divdq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivha3"></a>Runtime Function: <em>short accum</em> <strong>__divha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivsa3"></a>Runtime Function: <em>accum</em> <strong>__divsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivda3"></a>Runtime Function: <em>long accum</em> <strong>__divda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivta3"></a>Runtime Function: <em>long long accum</em> <strong>__divta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the signed division of <var>a</var>
+and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fudivuqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__udivuqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivuhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__udivuhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__udivusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__udivudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivuha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__udivuha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__udivusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivuda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__udivuda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivuta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__udivuta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the unsigned division of <var>a</var>
+and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fssdivqq3"></a>Runtime Function: <em>short fract</em> <strong>__ssdivqq3</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivhq3"></a>Runtime Function: <em>fract</em> <strong>__ssdivhq3</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivsq3"></a>Runtime Function: <em>long fract</em> <strong>__ssdivsq3</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivdq3"></a>Runtime Function: <em>long long fract</em> <strong>__ssdivdq3</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivha3"></a>Runtime Function: <em>short accum</em> <strong>__ssdivha3</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivsa3"></a>Runtime Function: <em>accum</em> <strong>__ssdivsa3</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivda3"></a>Runtime Function: <em>long accum</em> <strong>__ssdivda3</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssdivta3"></a>Runtime Function: <em>long long accum</em> <strong>__ssdivta3</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the signed division of <var>a</var>
+and <var>b</var> with signed saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fusdivuqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__usdivuqq3</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivuhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__usdivuhq3</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__usdivusq3</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__usdivudq3</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivuha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__usdivuha3</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__usdivusa3</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivuda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__usdivuda3</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusdivuta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__usdivuta3</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the unsigned division of <var>a</var>
+and <var>b</var> with unsigned saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fnegqq2"></a>Runtime Function: <em>short fract</em> <strong>__negqq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneghq2"></a>Runtime Function: <em>fract</em> <strong>__neghq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegsq2"></a>Runtime Function: <em>long fract</em> <strong>__negsq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegdq2"></a>Runtime Function: <em>long long fract</em> <strong>__negdq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneguqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__neguqq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneguhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__neguhq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__negusq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__negudq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegha2"></a>Runtime Function: <em>short accum</em> <strong>__negha2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegsa2"></a>Runtime Function: <em>accum</em> <strong>__negsa2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegda2"></a>Runtime Function: <em>long accum</em> <strong>__negda2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegta2"></a>Runtime Function: <em>long long accum</em> <strong>__negta2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneguha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__neguha2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegusa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__negusa2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneguda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__neguda2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fneguta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__neguta2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fssnegqq2"></a>Runtime Function: <em>short fract</em> <strong>__ssnegqq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssneghq2"></a>Runtime Function: <em>fract</em> <strong>__ssneghq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegsq2"></a>Runtime Function: <em>long fract</em> <strong>__ssnegsq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegdq2"></a>Runtime Function: <em>long long fract</em> <strong>__ssnegdq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegha2"></a>Runtime Function: <em>short accum</em> <strong>__ssnegha2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegsa2"></a>Runtime Function: <em>accum</em> <strong>__ssnegsa2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegda2"></a>Runtime Function: <em>long accum</em> <strong>__ssnegda2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fssnegta2"></a>Runtime Function: <em>long long accum</em> <strong>__ssnegta2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var> with signed saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fusneguqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__usneguqq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusneguhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__usneguhq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusnegusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__usnegusq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusnegudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__usnegudq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusneguha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__usneguha2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusnegusa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__usnegusa2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusneguda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__usneguda2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fusneguta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__usneguta2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var> with unsigned saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fashlqq3"></a>Runtime Function: <em>short fract</em> <strong>__ashlqq3</strong> <em>(short fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlhq3"></a>Runtime Function: <em>fract</em> <strong>__ashlhq3</strong> <em>(fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlsq3"></a>Runtime Function: <em>long fract</em> <strong>__ashlsq3</strong> <em>(long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashldq3"></a>Runtime Function: <em>long long fract</em> <strong>__ashldq3</strong> <em>(long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashluqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__ashluqq3</strong> <em>(unsigned short fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashluhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__ashluhq3</strong> <em>(unsigned fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__ashlusq3</strong> <em>(unsigned long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashludq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__ashludq3</strong> <em>(unsigned long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlha3"></a>Runtime Function: <em>short accum</em> <strong>__ashlha3</strong> <em>(short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlsa3"></a>Runtime Function: <em>accum</em> <strong>__ashlsa3</strong> <em>(accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlda3"></a>Runtime Function: <em>long accum</em> <strong>__ashlda3</strong> <em>(long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlta3"></a>Runtime Function: <em>long long accum</em> <strong>__ashlta3</strong> <em>(long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashluha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__ashluha3</strong> <em>(unsigned short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__ashlusa3</strong> <em>(unsigned accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashluda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__ashluda3</strong> <em>(unsigned long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashluta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__ashluta3</strong> <em>(unsigned long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of shifting <var>a</var> left by <var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fashrqq3"></a>Runtime Function: <em>short fract</em> <strong>__ashrqq3</strong> <em>(short fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrhq3"></a>Runtime Function: <em>fract</em> <strong>__ashrhq3</strong> <em>(fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrsq3"></a>Runtime Function: <em>long fract</em> <strong>__ashrsq3</strong> <em>(long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrdq3"></a>Runtime Function: <em>long long fract</em> <strong>__ashrdq3</strong> <em>(long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrha3"></a>Runtime Function: <em>short accum</em> <strong>__ashrha3</strong> <em>(short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrsa3"></a>Runtime Function: <em>accum</em> <strong>__ashrsa3</strong> <em>(accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrda3"></a>Runtime Function: <em>long accum</em> <strong>__ashrda3</strong> <em>(long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrta3"></a>Runtime Function: <em>long long accum</em> <strong>__ashrta3</strong> <em>(long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of arithmetically shifting <var>a</var> right
+by <var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005flshruqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__lshruqq3</strong> <em>(unsigned short fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshruhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__lshruhq3</strong> <em>(unsigned fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshrusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__lshrusq3</strong> <em>(unsigned long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshrudq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__lshrudq3</strong> <em>(unsigned long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshruha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__lshruha3</strong> <em>(unsigned short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshrusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__lshrusa3</strong> <em>(unsigned accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshruda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__lshruda3</strong> <em>(unsigned long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshruta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__lshruta3</strong> <em>(unsigned long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of logically shifting <var>a</var> right
+by <var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fssashlhq3"></a>Runtime Function: <em>fract</em> <strong>__ssashlhq3</strong> <em>(fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashlsq3"></a>Runtime Function: <em>long fract</em> <strong>__ssashlsq3</strong> <em>(long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashldq3"></a>Runtime Function: <em>long long fract</em> <strong>__ssashldq3</strong> <em>(long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashlha3"></a>Runtime Function: <em>short accum</em> <strong>__ssashlha3</strong> <em>(short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashlsa3"></a>Runtime Function: <em>accum</em> <strong>__ssashlsa3</strong> <em>(accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashlda3"></a>Runtime Function: <em>long accum</em> <strong>__ssashlda3</strong> <em>(long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fssashlta3"></a>Runtime Function: <em>long long accum</em> <strong>__ssashlta3</strong> <em>(long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of shifting <var>a</var> left by <var>b</var> bits
+with signed saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fusashluqq3"></a>Runtime Function: <em>unsigned short fract</em> <strong>__usashluqq3</strong> <em>(unsigned short fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashluhq3"></a>Runtime Function: <em>unsigned fract</em> <strong>__usashluhq3</strong> <em>(unsigned fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashlusq3"></a>Runtime Function: <em>unsigned long fract</em> <strong>__usashlusq3</strong> <em>(unsigned long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashludq3"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__usashludq3</strong> <em>(unsigned long long fract <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashluha3"></a>Runtime Function: <em>unsigned short accum</em> <strong>__usashluha3</strong> <em>(unsigned short accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashlusa3"></a>Runtime Function: <em>unsigned accum</em> <strong>__usashlusa3</strong> <em>(unsigned accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashluda3"></a>Runtime Function: <em>unsigned long accum</em> <strong>__usashluda3</strong> <em>(unsigned long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fusashluta3"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__usashluta3</strong> <em>(unsigned long long accum <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of shifting <var>a</var> left by <var>b</var> bits
+with unsigned saturation.
+</p></dd></dl>
+
+<a name="Comparison-functions-3"></a>
+<h4 class="subsection">4.4.2 Comparison functions</h4>
+
+<p>The following functions implement fixed-point comparisons. These functions
+implement a low-level compare, upon which the higher level comparison
+operators (such as less than and greater than or equal to) can be
+constructed. The returned values lie in the range zero to two, to allow
+the high-level operators to be implemented by testing the returned
+result using either signed or unsigned comparison.
+</p>
+<dl>
+<dt><a name="index-_005f_005fcmpqq2"></a>Runtime Function: <em>int</em> <strong>__cmpqq2</strong> <em>(short fract <var>a</var>, short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmphq2"></a>Runtime Function: <em>int</em> <strong>__cmphq2</strong> <em>(fract <var>a</var>, fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpsq2"></a>Runtime Function: <em>int</em> <strong>__cmpsq2</strong> <em>(long fract <var>a</var>, long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpdq2"></a>Runtime Function: <em>int</em> <strong>__cmpdq2</strong> <em>(long long fract <var>a</var>, long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpuqq2"></a>Runtime Function: <em>int</em> <strong>__cmpuqq2</strong> <em>(unsigned short fract <var>a</var>, unsigned short fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpuhq2"></a>Runtime Function: <em>int</em> <strong>__cmpuhq2</strong> <em>(unsigned fract <var>a</var>, unsigned fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpusq2"></a>Runtime Function: <em>int</em> <strong>__cmpusq2</strong> <em>(unsigned long fract <var>a</var>, unsigned long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpudq2"></a>Runtime Function: <em>int</em> <strong>__cmpudq2</strong> <em>(unsigned long long fract <var>a</var>, unsigned long long fract <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpha2"></a>Runtime Function: <em>int</em> <strong>__cmpha2</strong> <em>(short accum <var>a</var>, short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpsa2"></a>Runtime Function: <em>int</em> <strong>__cmpsa2</strong> <em>(accum <var>a</var>, accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpda2"></a>Runtime Function: <em>int</em> <strong>__cmpda2</strong> <em>(long accum <var>a</var>, long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpta2"></a>Runtime Function: <em>int</em> <strong>__cmpta2</strong> <em>(long long accum <var>a</var>, long long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpuha2"></a>Runtime Function: <em>int</em> <strong>__cmpuha2</strong> <em>(unsigned short accum <var>a</var>, unsigned short accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpusa2"></a>Runtime Function: <em>int</em> <strong>__cmpusa2</strong> <em>(unsigned accum <var>a</var>, unsigned accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpuda2"></a>Runtime Function: <em>int</em> <strong>__cmpuda2</strong> <em>(unsigned long accum <var>a</var>, unsigned long accum <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmputa2"></a>Runtime Function: <em>int</em> <strong>__cmputa2</strong> <em>(unsigned long long accum <var>a</var>, unsigned long long accum <var>b</var>)</em></dt>
+<dd><p>These functions perform a signed or unsigned comparison of <var>a</var> and
+<var>b</var> (depending on the selected machine mode). If <var>a</var> is less
+than <var>b</var>, they return 0; if <var>a</var> is greater than <var>b</var>, they
+return 2; and if <var>a</var> and <var>b</var> are equal they return 1.
+</p></dd></dl>
+
+<a name="Conversion-functions-2"></a>
+<h4 class="subsection">4.4.3 Conversion functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005ffractqqhq2"></a>Runtime Function: <em>fract</em> <strong>__fractqqhq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqsq2"></a>Runtime Function: <em>long fract</em> <strong>__fractqqsq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__fractqqdq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqha"></a>Runtime Function: <em>short accum</em> <strong>__fractqqha</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqsa"></a>Runtime Function: <em>accum</em> <strong>__fractqqsa</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqda"></a>Runtime Function: <em>long accum</em> <strong>__fractqqda</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractqqta</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractqquqq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractqquhq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractqqusq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractqqudq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractqquha</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractqqusa</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractqquda</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractqquta</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractqqqi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqhi"></a>Runtime Function: <em>short</em> <strong>__fractqqhi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqsi"></a>Runtime Function: <em>int</em> <strong>__fractqqsi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqdi"></a>Runtime Function: <em>long</em> <strong>__fractqqdi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqti"></a>Runtime Function: <em>long long</em> <strong>__fractqqti</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqsf"></a>Runtime Function: <em>float</em> <strong>__fractqqsf</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqqdf"></a>Runtime Function: <em>double</em> <strong>__fractqqdf</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqqq2"></a>Runtime Function: <em>short fract</em> <strong>__fracthqqq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqsq2"></a>Runtime Function: <em>long fract</em> <strong>__fracthqsq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__fracthqdq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqha"></a>Runtime Function: <em>short accum</em> <strong>__fracthqha</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqsa"></a>Runtime Function: <em>accum</em> <strong>__fracthqsa</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqda"></a>Runtime Function: <em>long accum</em> <strong>__fracthqda</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqta"></a>Runtime Function: <em>long long accum</em> <strong>__fracthqta</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fracthquqq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fracthquhq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fracthqusq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fracthqudq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fracthquha</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fracthqusa</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fracthquda</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fracthquta</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqqi"></a>Runtime Function: <em>signed char</em> <strong>__fracthqqi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqhi"></a>Runtime Function: <em>short</em> <strong>__fracthqhi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqsi"></a>Runtime Function: <em>int</em> <strong>__fracthqsi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqdi"></a>Runtime Function: <em>long</em> <strong>__fracthqdi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqti"></a>Runtime Function: <em>long long</em> <strong>__fracthqti</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqsf"></a>Runtime Function: <em>float</em> <strong>__fracthqsf</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthqdf"></a>Runtime Function: <em>double</em> <strong>__fracthqdf</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqqq2"></a>Runtime Function: <em>short fract</em> <strong>__fractsqqq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqhq2"></a>Runtime Function: <em>fract</em> <strong>__fractsqhq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__fractsqdq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqha"></a>Runtime Function: <em>short accum</em> <strong>__fractsqha</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqsa"></a>Runtime Function: <em>accum</em> <strong>__fractsqsa</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqda"></a>Runtime Function: <em>long accum</em> <strong>__fractsqda</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractsqta</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractsquqq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractsquhq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractsqusq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractsqudq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractsquha</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractsqusa</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractsquda</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractsquta</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractsqqi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqhi"></a>Runtime Function: <em>short</em> <strong>__fractsqhi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqsi"></a>Runtime Function: <em>int</em> <strong>__fractsqsi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqdi"></a>Runtime Function: <em>long</em> <strong>__fractsqdi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqti"></a>Runtime Function: <em>long long</em> <strong>__fractsqti</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqsf"></a>Runtime Function: <em>float</em> <strong>__fractsqsf</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsqdf"></a>Runtime Function: <em>double</em> <strong>__fractsqdf</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqqq2"></a>Runtime Function: <em>short fract</em> <strong>__fractdqqq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqhq2"></a>Runtime Function: <em>fract</em> <strong>__fractdqhq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqsq2"></a>Runtime Function: <em>long fract</em> <strong>__fractdqsq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqha"></a>Runtime Function: <em>short accum</em> <strong>__fractdqha</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqsa"></a>Runtime Function: <em>accum</em> <strong>__fractdqsa</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqda"></a>Runtime Function: <em>long accum</em> <strong>__fractdqda</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractdqta</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractdquqq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractdquhq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractdqusq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractdqudq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractdquha</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractdqusa</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractdquda</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractdquta</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractdqqi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqhi"></a>Runtime Function: <em>short</em> <strong>__fractdqhi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqsi"></a>Runtime Function: <em>int</em> <strong>__fractdqsi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqdi"></a>Runtime Function: <em>long</em> <strong>__fractdqdi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqti"></a>Runtime Function: <em>long long</em> <strong>__fractdqti</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqsf"></a>Runtime Function: <em>float</em> <strong>__fractdqsf</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdqdf"></a>Runtime Function: <em>double</em> <strong>__fractdqdf</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthaqq"></a>Runtime Function: <em>short fract</em> <strong>__fracthaqq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthahq"></a>Runtime Function: <em>fract</em> <strong>__fracthahq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthasq"></a>Runtime Function: <em>long fract</em> <strong>__fracthasq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthadq"></a>Runtime Function: <em>long long fract</em> <strong>__fracthadq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthasa2"></a>Runtime Function: <em>accum</em> <strong>__fracthasa2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthada2"></a>Runtime Function: <em>long accum</em> <strong>__fracthada2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthata2"></a>Runtime Function: <em>long long accum</em> <strong>__fracthata2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fracthauqq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fracthauhq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fracthausq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fracthaudq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fracthauha</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fracthausa</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fracthauda</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fracthauta</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthaqi"></a>Runtime Function: <em>signed char</em> <strong>__fracthaqi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthahi"></a>Runtime Function: <em>short</em> <strong>__fracthahi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthasi"></a>Runtime Function: <em>int</em> <strong>__fracthasi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthadi"></a>Runtime Function: <em>long</em> <strong>__fracthadi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthati"></a>Runtime Function: <em>long long</em> <strong>__fracthati</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthasf"></a>Runtime Function: <em>float</em> <strong>__fracthasf</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthadf"></a>Runtime Function: <em>double</em> <strong>__fracthadf</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractsaqq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsahq"></a>Runtime Function: <em>fract</em> <strong>__fractsahq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsasq"></a>Runtime Function: <em>long fract</em> <strong>__fractsasq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractsadq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsaha2"></a>Runtime Function: <em>short accum</em> <strong>__fractsaha2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsada2"></a>Runtime Function: <em>long accum</em> <strong>__fractsada2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsata2"></a>Runtime Function: <em>long long accum</em> <strong>__fractsata2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractsauqq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractsauhq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractsausq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractsaudq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractsauha</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractsausa</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractsauda</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractsauta</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractsaqi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsahi"></a>Runtime Function: <em>short</em> <strong>__fractsahi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsasi"></a>Runtime Function: <em>int</em> <strong>__fractsasi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsadi"></a>Runtime Function: <em>long</em> <strong>__fractsadi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsati"></a>Runtime Function: <em>long long</em> <strong>__fractsati</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsasf"></a>Runtime Function: <em>float</em> <strong>__fractsasf</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsadf"></a>Runtime Function: <em>double</em> <strong>__fractsadf</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractdaqq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdahq"></a>Runtime Function: <em>fract</em> <strong>__fractdahq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdasq"></a>Runtime Function: <em>long fract</em> <strong>__fractdasq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractdadq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdaha2"></a>Runtime Function: <em>short accum</em> <strong>__fractdaha2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdasa2"></a>Runtime Function: <em>accum</em> <strong>__fractdasa2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdata2"></a>Runtime Function: <em>long long accum</em> <strong>__fractdata2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractdauqq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractdauhq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractdausq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractdaudq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractdauha</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractdausa</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractdauda</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractdauta</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractdaqi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdahi"></a>Runtime Function: <em>short</em> <strong>__fractdahi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdasi"></a>Runtime Function: <em>int</em> <strong>__fractdasi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdadi"></a>Runtime Function: <em>long</em> <strong>__fractdadi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdati"></a>Runtime Function: <em>long long</em> <strong>__fractdati</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdasf"></a>Runtime Function: <em>float</em> <strong>__fractdasf</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdadf"></a>Runtime Function: <em>double</em> <strong>__fractdadf</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttaqq"></a>Runtime Function: <em>short fract</em> <strong>__fracttaqq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttahq"></a>Runtime Function: <em>fract</em> <strong>__fracttahq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttasq"></a>Runtime Function: <em>long fract</em> <strong>__fracttasq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttadq"></a>Runtime Function: <em>long long fract</em> <strong>__fracttadq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttaha2"></a>Runtime Function: <em>short accum</em> <strong>__fracttaha2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttasa2"></a>Runtime Function: <em>accum</em> <strong>__fracttasa2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttada2"></a>Runtime Function: <em>long accum</em> <strong>__fracttada2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fracttauqq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fracttauhq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fracttausq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fracttaudq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fracttauha</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fracttausa</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fracttauda</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fracttauta</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttaqi"></a>Runtime Function: <em>signed char</em> <strong>__fracttaqi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttahi"></a>Runtime Function: <em>short</em> <strong>__fracttahi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttasi"></a>Runtime Function: <em>int</em> <strong>__fracttasi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttadi"></a>Runtime Function: <em>long</em> <strong>__fracttadi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttati"></a>Runtime Function: <em>long long</em> <strong>__fracttati</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttasf"></a>Runtime Function: <em>float</em> <strong>__fracttasf</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttadf"></a>Runtime Function: <em>double</em> <strong>__fracttadf</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqqq"></a>Runtime Function: <em>short fract</em> <strong>__fractuqqqq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqhq"></a>Runtime Function: <em>fract</em> <strong>__fractuqqhq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqsq"></a>Runtime Function: <em>long fract</em> <strong>__fractuqqsq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractuqqdq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqha"></a>Runtime Function: <em>short accum</em> <strong>__fractuqqha</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqsa"></a>Runtime Function: <em>accum</em> <strong>__fractuqqsa</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqda"></a>Runtime Function: <em>long accum</em> <strong>__fractuqqda</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractuqqta</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractuqquhq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractuqqusq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractuqqudq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractuqquha</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractuqqusa</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractuqquda</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractuqquta</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractuqqqi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqhi"></a>Runtime Function: <em>short</em> <strong>__fractuqqhi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqsi"></a>Runtime Function: <em>int</em> <strong>__fractuqqsi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqdi"></a>Runtime Function: <em>long</em> <strong>__fractuqqdi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqti"></a>Runtime Function: <em>long long</em> <strong>__fractuqqti</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqsf"></a>Runtime Function: <em>float</em> <strong>__fractuqqsf</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuqqdf"></a>Runtime Function: <em>double</em> <strong>__fractuqqdf</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqqq"></a>Runtime Function: <em>short fract</em> <strong>__fractuhqqq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqhq"></a>Runtime Function: <em>fract</em> <strong>__fractuhqhq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqsq"></a>Runtime Function: <em>long fract</em> <strong>__fractuhqsq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractuhqdq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqha"></a>Runtime Function: <em>short accum</em> <strong>__fractuhqha</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqsa"></a>Runtime Function: <em>accum</em> <strong>__fractuhqsa</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqda"></a>Runtime Function: <em>long accum</em> <strong>__fractuhqda</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractuhqta</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractuhquqq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractuhqusq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractuhqudq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractuhquha</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractuhqusa</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractuhquda</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractuhquta</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractuhqqi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqhi"></a>Runtime Function: <em>short</em> <strong>__fractuhqhi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqsi"></a>Runtime Function: <em>int</em> <strong>__fractuhqsi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqdi"></a>Runtime Function: <em>long</em> <strong>__fractuhqdi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqti"></a>Runtime Function: <em>long long</em> <strong>__fractuhqti</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqsf"></a>Runtime Function: <em>float</em> <strong>__fractuhqsf</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhqdf"></a>Runtime Function: <em>double</em> <strong>__fractuhqdf</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqqq"></a>Runtime Function: <em>short fract</em> <strong>__fractusqqq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqhq"></a>Runtime Function: <em>fract</em> <strong>__fractusqhq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqsq"></a>Runtime Function: <em>long fract</em> <strong>__fractusqsq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractusqdq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqha"></a>Runtime Function: <em>short accum</em> <strong>__fractusqha</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqsa"></a>Runtime Function: <em>accum</em> <strong>__fractusqsa</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqda"></a>Runtime Function: <em>long accum</em> <strong>__fractusqda</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractusqta</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractusquqq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractusquhq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractusqudq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractusquha</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractusqusa</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractusquda</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractusquta</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractusqqi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqhi"></a>Runtime Function: <em>short</em> <strong>__fractusqhi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqsi"></a>Runtime Function: <em>int</em> <strong>__fractusqsi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqdi"></a>Runtime Function: <em>long</em> <strong>__fractusqdi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqti"></a>Runtime Function: <em>long long</em> <strong>__fractusqti</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqsf"></a>Runtime Function: <em>float</em> <strong>__fractusqsf</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusqdf"></a>Runtime Function: <em>double</em> <strong>__fractusqdf</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqqq"></a>Runtime Function: <em>short fract</em> <strong>__fractudqqq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqhq"></a>Runtime Function: <em>fract</em> <strong>__fractudqhq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqsq"></a>Runtime Function: <em>long fract</em> <strong>__fractudqsq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractudqdq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqha"></a>Runtime Function: <em>short accum</em> <strong>__fractudqha</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqsa"></a>Runtime Function: <em>accum</em> <strong>__fractudqsa</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqda"></a>Runtime Function: <em>long accum</em> <strong>__fractudqda</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqta"></a>Runtime Function: <em>long long accum</em> <strong>__fractudqta</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractudquqq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractudquhq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractudqusq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractudquha</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractudqusa</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractudquda</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractudquta</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqqi"></a>Runtime Function: <em>signed char</em> <strong>__fractudqqi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqhi"></a>Runtime Function: <em>short</em> <strong>__fractudqhi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqsi"></a>Runtime Function: <em>int</em> <strong>__fractudqsi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqdi"></a>Runtime Function: <em>long</em> <strong>__fractudqdi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqti"></a>Runtime Function: <em>long long</em> <strong>__fractudqti</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqsf"></a>Runtime Function: <em>float</em> <strong>__fractudqsf</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudqdf"></a>Runtime Function: <em>double</em> <strong>__fractudqdf</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractuhaqq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhahq"></a>Runtime Function: <em>fract</em> <strong>__fractuhahq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhasq"></a>Runtime Function: <em>long fract</em> <strong>__fractuhasq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractuhadq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhaha"></a>Runtime Function: <em>short accum</em> <strong>__fractuhaha</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhasa"></a>Runtime Function: <em>accum</em> <strong>__fractuhasa</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhada"></a>Runtime Function: <em>long accum</em> <strong>__fractuhada</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhata"></a>Runtime Function: <em>long long accum</em> <strong>__fractuhata</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractuhauqq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractuhauhq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractuhausq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractuhaudq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractuhausa2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractuhauda2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractuhauta2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractuhaqi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhahi"></a>Runtime Function: <em>short</em> <strong>__fractuhahi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhasi"></a>Runtime Function: <em>int</em> <strong>__fractuhasi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhadi"></a>Runtime Function: <em>long</em> <strong>__fractuhadi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhati"></a>Runtime Function: <em>long long</em> <strong>__fractuhati</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhasf"></a>Runtime Function: <em>float</em> <strong>__fractuhasf</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractuhadf"></a>Runtime Function: <em>double</em> <strong>__fractuhadf</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractusaqq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusahq"></a>Runtime Function: <em>fract</em> <strong>__fractusahq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusasq"></a>Runtime Function: <em>long fract</em> <strong>__fractusasq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractusadq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusaha"></a>Runtime Function: <em>short accum</em> <strong>__fractusaha</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusasa"></a>Runtime Function: <em>accum</em> <strong>__fractusasa</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusada"></a>Runtime Function: <em>long accum</em> <strong>__fractusada</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusata"></a>Runtime Function: <em>long long accum</em> <strong>__fractusata</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractusauqq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractusauhq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractusausq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractusaudq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractusauha2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractusauda2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractusauta2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractusaqi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusahi"></a>Runtime Function: <em>short</em> <strong>__fractusahi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusasi"></a>Runtime Function: <em>int</em> <strong>__fractusasi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusadi"></a>Runtime Function: <em>long</em> <strong>__fractusadi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusati"></a>Runtime Function: <em>long long</em> <strong>__fractusati</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusasf"></a>Runtime Function: <em>float</em> <strong>__fractusasf</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractusadf"></a>Runtime Function: <em>double</em> <strong>__fractusadf</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractudaqq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudahq"></a>Runtime Function: <em>fract</em> <strong>__fractudahq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudasq"></a>Runtime Function: <em>long fract</em> <strong>__fractudasq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractudadq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudaha"></a>Runtime Function: <em>short accum</em> <strong>__fractudaha</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudasa"></a>Runtime Function: <em>accum</em> <strong>__fractudasa</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudada"></a>Runtime Function: <em>long accum</em> <strong>__fractudada</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudata"></a>Runtime Function: <em>long long accum</em> <strong>__fractudata</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractudauqq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractudauhq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractudausq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractudaudq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractudauha2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractudausa2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractudauta2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractudaqi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudahi"></a>Runtime Function: <em>short</em> <strong>__fractudahi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudasi"></a>Runtime Function: <em>int</em> <strong>__fractudasi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudadi"></a>Runtime Function: <em>long</em> <strong>__fractudadi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudati"></a>Runtime Function: <em>long long</em> <strong>__fractudati</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudasf"></a>Runtime Function: <em>float</em> <strong>__fractudasf</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractudadf"></a>Runtime Function: <em>double</em> <strong>__fractudadf</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutaqq"></a>Runtime Function: <em>short fract</em> <strong>__fractutaqq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutahq"></a>Runtime Function: <em>fract</em> <strong>__fractutahq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutasq"></a>Runtime Function: <em>long fract</em> <strong>__fractutasq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutadq"></a>Runtime Function: <em>long long fract</em> <strong>__fractutadq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutaha"></a>Runtime Function: <em>short accum</em> <strong>__fractutaha</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutasa"></a>Runtime Function: <em>accum</em> <strong>__fractutasa</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutada"></a>Runtime Function: <em>long accum</em> <strong>__fractutada</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutata"></a>Runtime Function: <em>long long accum</em> <strong>__fractutata</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractutauqq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractutauhq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractutausq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractutaudq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractutauha2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractutausa2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractutauda2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutaqi"></a>Runtime Function: <em>signed char</em> <strong>__fractutaqi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutahi"></a>Runtime Function: <em>short</em> <strong>__fractutahi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutasi"></a>Runtime Function: <em>int</em> <strong>__fractutasi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutadi"></a>Runtime Function: <em>long</em> <strong>__fractutadi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutati"></a>Runtime Function: <em>long long</em> <strong>__fractutati</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutasf"></a>Runtime Function: <em>float</em> <strong>__fractutasf</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractutadf"></a>Runtime Function: <em>double</em> <strong>__fractutadf</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractqiqq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqihq"></a>Runtime Function: <em>fract</em> <strong>__fractqihq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqisq"></a>Runtime Function: <em>long fract</em> <strong>__fractqisq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractqidq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiha"></a>Runtime Function: <em>short accum</em> <strong>__fractqiha</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqisa"></a>Runtime Function: <em>accum</em> <strong>__fractqisa</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqida"></a>Runtime Function: <em>long accum</em> <strong>__fractqida</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqita"></a>Runtime Function: <em>long long accum</em> <strong>__fractqita</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractqiuqq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractqiuhq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractqiusq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractqiudq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractqiuha</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractqiusa</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractqiuda</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractqiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractqiuta</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiqq"></a>Runtime Function: <em>short fract</em> <strong>__fracthiqq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthihq"></a>Runtime Function: <em>fract</em> <strong>__fracthihq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthisq"></a>Runtime Function: <em>long fract</em> <strong>__fracthisq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthidq"></a>Runtime Function: <em>long long fract</em> <strong>__fracthidq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiha"></a>Runtime Function: <em>short accum</em> <strong>__fracthiha</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthisa"></a>Runtime Function: <em>accum</em> <strong>__fracthisa</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthida"></a>Runtime Function: <em>long accum</em> <strong>__fracthida</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthita"></a>Runtime Function: <em>long long accum</em> <strong>__fracthita</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fracthiuqq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fracthiuhq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fracthiusq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fracthiudq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fracthiuha</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fracthiusa</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fracthiuda</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracthiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fracthiuta</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractsiqq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsihq"></a>Runtime Function: <em>fract</em> <strong>__fractsihq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsisq"></a>Runtime Function: <em>long fract</em> <strong>__fractsisq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractsidq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiha"></a>Runtime Function: <em>short accum</em> <strong>__fractsiha</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsisa"></a>Runtime Function: <em>accum</em> <strong>__fractsisa</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsida"></a>Runtime Function: <em>long accum</em> <strong>__fractsida</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsita"></a>Runtime Function: <em>long long accum</em> <strong>__fractsita</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractsiuqq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractsiuhq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractsiusq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractsiudq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractsiuha</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractsiusa</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractsiuda</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractsiuta</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractdiqq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdihq"></a>Runtime Function: <em>fract</em> <strong>__fractdihq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdisq"></a>Runtime Function: <em>long fract</em> <strong>__fractdisq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractdidq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiha"></a>Runtime Function: <em>short accum</em> <strong>__fractdiha</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdisa"></a>Runtime Function: <em>accum</em> <strong>__fractdisa</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdida"></a>Runtime Function: <em>long accum</em> <strong>__fractdida</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdita"></a>Runtime Function: <em>long long accum</em> <strong>__fractdita</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractdiuqq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractdiuhq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractdiusq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractdiudq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractdiuha</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractdiusa</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractdiuda</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractdiuta</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiqq"></a>Runtime Function: <em>short fract</em> <strong>__fracttiqq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttihq"></a>Runtime Function: <em>fract</em> <strong>__fracttihq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttisq"></a>Runtime Function: <em>long fract</em> <strong>__fracttisq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttidq"></a>Runtime Function: <em>long long fract</em> <strong>__fracttidq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiha"></a>Runtime Function: <em>short accum</em> <strong>__fracttiha</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttisa"></a>Runtime Function: <em>accum</em> <strong>__fracttisa</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttida"></a>Runtime Function: <em>long accum</em> <strong>__fracttida</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttita"></a>Runtime Function: <em>long long accum</em> <strong>__fracttita</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fracttiuqq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fracttiuhq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fracttiusq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fracttiudq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fracttiuha</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fracttiusa</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fracttiuda</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffracttiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fracttiuta</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfqq"></a>Runtime Function: <em>short fract</em> <strong>__fractsfqq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfhq"></a>Runtime Function: <em>fract</em> <strong>__fractsfhq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfsq"></a>Runtime Function: <em>long fract</em> <strong>__fractsfsq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractsfdq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfha"></a>Runtime Function: <em>short accum</em> <strong>__fractsfha</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfsa"></a>Runtime Function: <em>accum</em> <strong>__fractsfsa</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfda"></a>Runtime Function: <em>long accum</em> <strong>__fractsfda</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfta"></a>Runtime Function: <em>long long accum</em> <strong>__fractsfta</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractsfuqq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractsfuhq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractsfusq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractsfudq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractsfuha</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractsfusa</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractsfuda</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractsfuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractsfuta</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfqq"></a>Runtime Function: <em>short fract</em> <strong>__fractdfqq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfhq"></a>Runtime Function: <em>fract</em> <strong>__fractdfhq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfsq"></a>Runtime Function: <em>long fract</em> <strong>__fractdfsq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfdq"></a>Runtime Function: <em>long long fract</em> <strong>__fractdfdq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfha"></a>Runtime Function: <em>short accum</em> <strong>__fractdfha</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfsa"></a>Runtime Function: <em>accum</em> <strong>__fractdfsa</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfda"></a>Runtime Function: <em>long accum</em> <strong>__fractdfda</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfta"></a>Runtime Function: <em>long long accum</em> <strong>__fractdfta</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractdfuqq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractdfuhq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractdfusq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractdfudq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractdfuha</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractdfusa</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractdfuda</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractdfuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractdfuta</strong> <em>(double <var>a</var>)</em></dt>
+<dd><p>These functions convert from fractional and signed non-fractionals to
+fractionals and signed non-fractionals, without saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsatfractqqhq2"></a>Runtime Function: <em>fract</em> <strong>__satfractqqhq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqsq2"></a>Runtime Function: <em>long fract</em> <strong>__satfractqqsq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__satfractqqdq2</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractqqha</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractqqsa</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractqqda</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractqqta</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractqquqq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractqquhq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractqqusq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractqqudq</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractqquha</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractqqusa</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractqquda</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractqquta</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqqq2"></a>Runtime Function: <em>short fract</em> <strong>__satfracthqqq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqsq2"></a>Runtime Function: <em>long fract</em> <strong>__satfracthqsq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__satfracthqdq2</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqha"></a>Runtime Function: <em>short accum</em> <strong>__satfracthqha</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqsa"></a>Runtime Function: <em>accum</em> <strong>__satfracthqsa</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqda"></a>Runtime Function: <em>long accum</em> <strong>__satfracthqda</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfracthqta</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfracthquqq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfracthquhq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfracthqusq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfracthqudq</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfracthquha</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfracthqusa</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfracthquda</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfracthquta</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqqq2"></a>Runtime Function: <em>short fract</em> <strong>__satfractsqqq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqhq2"></a>Runtime Function: <em>fract</em> <strong>__satfractsqhq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqdq2"></a>Runtime Function: <em>long long fract</em> <strong>__satfractsqdq2</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractsqha</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractsqsa</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractsqda</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractsqta</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractsquqq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractsquhq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractsqusq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractsqudq</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractsquha</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractsqusa</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractsquda</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractsquta</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqqq2"></a>Runtime Function: <em>short fract</em> <strong>__satfractdqqq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqhq2"></a>Runtime Function: <em>fract</em> <strong>__satfractdqhq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqsq2"></a>Runtime Function: <em>long fract</em> <strong>__satfractdqsq2</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractdqha</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractdqsa</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractdqda</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractdqta</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdquqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractdquqq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdquhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractdquhq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractdqusq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractdqudq</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractdquha</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractdqusa</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractdquda</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractdquta</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfracthaqq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthahq"></a>Runtime Function: <em>fract</em> <strong>__satfracthahq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthasq"></a>Runtime Function: <em>long fract</em> <strong>__satfracthasq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfracthadq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthasa2"></a>Runtime Function: <em>accum</em> <strong>__satfracthasa2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthada2"></a>Runtime Function: <em>long accum</em> <strong>__satfracthada2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthata2"></a>Runtime Function: <em>long long accum</em> <strong>__satfracthata2</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfracthauqq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfracthauhq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfracthausq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfracthaudq</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfracthauha</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfracthausa</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfracthauda</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfracthauta</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractsaqq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsahq"></a>Runtime Function: <em>fract</em> <strong>__satfractsahq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractsasq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractsadq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsaha2"></a>Runtime Function: <em>short accum</em> <strong>__satfractsaha2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsada2"></a>Runtime Function: <em>long accum</em> <strong>__satfractsada2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsata2"></a>Runtime Function: <em>long long accum</em> <strong>__satfractsata2</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractsauqq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractsauhq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractsausq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractsaudq</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractsauha</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractsausa</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractsauda</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractsauta</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractdaqq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdahq"></a>Runtime Function: <em>fract</em> <strong>__satfractdahq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractdasq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractdadq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdaha2"></a>Runtime Function: <em>short accum</em> <strong>__satfractdaha2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdasa2"></a>Runtime Function: <em>accum</em> <strong>__satfractdasa2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdata2"></a>Runtime Function: <em>long long accum</em> <strong>__satfractdata2</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractdauqq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractdauhq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractdausq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractdaudq</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractdauha</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractdausa</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractdauda</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractdauta</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfracttaqq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttahq"></a>Runtime Function: <em>fract</em> <strong>__satfracttahq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttasq"></a>Runtime Function: <em>long fract</em> <strong>__satfracttasq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfracttadq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttaha2"></a>Runtime Function: <em>short accum</em> <strong>__satfracttaha2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttasa2"></a>Runtime Function: <em>accum</em> <strong>__satfracttasa2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttada2"></a>Runtime Function: <em>long accum</em> <strong>__satfracttada2</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfracttauqq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfracttauhq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfracttausq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfracttaudq</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttauha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfracttauha</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttausa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfracttausa</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttauda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfracttauda</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttauta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfracttauta</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractuqqqq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqhq"></a>Runtime Function: <em>fract</em> <strong>__satfractuqqhq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractuqqsq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractuqqdq</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractuqqha</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractuqqsa</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractuqqda</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractuqqta</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractuqquhq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractuqqusq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractuqqudq2</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractuqquha</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractuqqusa</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractuqquda</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuqquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractuqquta</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractuhqqq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqhq"></a>Runtime Function: <em>fract</em> <strong>__satfractuhqhq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractuhqsq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractuhqdq</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractuhqha</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractuhqsa</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractuhqda</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractuhqta</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractuhquqq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractuhqusq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractuhqudq2</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractuhquha</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractuhqusa</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractuhquda</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractuhquta</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractusqqq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqhq"></a>Runtime Function: <em>fract</em> <strong>__satfractusqhq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractusqsq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractusqdq</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractusqha</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractusqsa</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractusqda</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractusqta</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractusquqq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractusquhq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqudq2"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractusqudq2</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractusquha</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractusqusa</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractusquda</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractusquta</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractudqqq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqhq"></a>Runtime Function: <em>fract</em> <strong>__satfractudqhq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractudqsq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractudqdq</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqha"></a>Runtime Function: <em>short accum</em> <strong>__satfractudqha</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqsa"></a>Runtime Function: <em>accum</em> <strong>__satfractudqsa</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqda"></a>Runtime Function: <em>long accum</em> <strong>__satfractudqda</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractudqta</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudquqq2"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractudquqq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudquhq2"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractudquhq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqusq2"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractudqusq2</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudquha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractudquha</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudqusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractudqusa</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudquda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractudquda</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudquta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractudquta</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractuhaqq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhahq"></a>Runtime Function: <em>fract</em> <strong>__satfractuhahq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractuhasq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractuhadq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhaha"></a>Runtime Function: <em>short accum</em> <strong>__satfractuhaha</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhasa"></a>Runtime Function: <em>accum</em> <strong>__satfractuhasa</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhada"></a>Runtime Function: <em>long accum</em> <strong>__satfractuhada</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhata"></a>Runtime Function: <em>long long accum</em> <strong>__satfractuhata</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractuhauqq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractuhauhq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractuhausq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractuhaudq</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractuhausa2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractuhauda2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractuhauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractuhauta2</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractusaqq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusahq"></a>Runtime Function: <em>fract</em> <strong>__satfractusahq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractusasq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractusadq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusaha"></a>Runtime Function: <em>short accum</em> <strong>__satfractusaha</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusasa"></a>Runtime Function: <em>accum</em> <strong>__satfractusasa</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusada"></a>Runtime Function: <em>long accum</em> <strong>__satfractusada</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusata"></a>Runtime Function: <em>long long accum</em> <strong>__satfractusata</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractusauqq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractusauhq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractusausq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractusaudq</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractusauha2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractusauda2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractusauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractusauta2</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractudaqq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudahq"></a>Runtime Function: <em>fract</em> <strong>__satfractudahq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractudasq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractudadq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudaha"></a>Runtime Function: <em>short accum</em> <strong>__satfractudaha</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudasa"></a>Runtime Function: <em>accum</em> <strong>__satfractudasa</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudada"></a>Runtime Function: <em>long accum</em> <strong>__satfractudada</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudata"></a>Runtime Function: <em>long long accum</em> <strong>__satfractudata</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractudauqq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractudauhq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractudausq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractudaudq</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractudauha2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractudausa2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractudauta2"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractudauta2</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutaqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractutaqq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutahq"></a>Runtime Function: <em>fract</em> <strong>__satfractutahq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutasq"></a>Runtime Function: <em>long fract</em> <strong>__satfractutasq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutadq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractutadq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutaha"></a>Runtime Function: <em>short accum</em> <strong>__satfractutaha</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutasa"></a>Runtime Function: <em>accum</em> <strong>__satfractutasa</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutada"></a>Runtime Function: <em>long accum</em> <strong>__satfractutada</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutata"></a>Runtime Function: <em>long long accum</em> <strong>__satfractutata</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutauqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractutauqq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutauhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractutauhq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutausq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractutausq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutaudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractutaudq</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutauha2"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractutauha2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutausa2"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractutausa2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractutauda2"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractutauda2</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractqiqq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqihq"></a>Runtime Function: <em>fract</em> <strong>__satfractqihq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractqisq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractqidq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractqiha</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqisa"></a>Runtime Function: <em>accum</em> <strong>__satfractqisa</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqida"></a>Runtime Function: <em>long accum</em> <strong>__satfractqida</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractqita</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractqiuqq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractqiuhq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractqiusq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractqiudq</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractqiuha</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractqiusa</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractqiuda</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractqiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractqiuta</strong> <em>(signed char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfracthiqq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthihq"></a>Runtime Function: <em>fract</em> <strong>__satfracthihq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthisq"></a>Runtime Function: <em>long fract</em> <strong>__satfracthisq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfracthidq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiha"></a>Runtime Function: <em>short accum</em> <strong>__satfracthiha</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthisa"></a>Runtime Function: <em>accum</em> <strong>__satfracthisa</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthida"></a>Runtime Function: <em>long accum</em> <strong>__satfracthida</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthita"></a>Runtime Function: <em>long long accum</em> <strong>__satfracthita</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfracthiuqq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfracthiuhq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfracthiusq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfracthiudq</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfracthiuha</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfracthiusa</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfracthiuda</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracthiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfracthiuta</strong> <em>(short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractsiqq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsihq"></a>Runtime Function: <em>fract</em> <strong>__satfractsihq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractsisq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractsidq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractsiha</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsisa"></a>Runtime Function: <em>accum</em> <strong>__satfractsisa</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsida"></a>Runtime Function: <em>long accum</em> <strong>__satfractsida</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractsita</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractsiuqq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractsiuhq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractsiusq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractsiudq</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractsiuha</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractsiusa</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractsiuda</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractsiuta</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractdiqq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdihq"></a>Runtime Function: <em>fract</em> <strong>__satfractdihq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractdisq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractdidq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractdiha</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdisa"></a>Runtime Function: <em>accum</em> <strong>__satfractdisa</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdida"></a>Runtime Function: <em>long accum</em> <strong>__satfractdida</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractdita</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractdiuqq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractdiuhq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractdiusq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractdiudq</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractdiuha</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractdiusa</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractdiuda</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractdiuta</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfracttiqq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttihq"></a>Runtime Function: <em>fract</em> <strong>__satfracttihq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttisq"></a>Runtime Function: <em>long fract</em> <strong>__satfracttisq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfracttidq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiha"></a>Runtime Function: <em>short accum</em> <strong>__satfracttiha</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttisa"></a>Runtime Function: <em>accum</em> <strong>__satfracttisa</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttida"></a>Runtime Function: <em>long accum</em> <strong>__satfracttida</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttita"></a>Runtime Function: <em>long long accum</em> <strong>__satfracttita</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfracttiuqq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfracttiuhq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfracttiusq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfracttiudq</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfracttiuha</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfracttiusa</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfracttiuda</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfracttiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfracttiuta</strong> <em>(long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractsfqq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfhq"></a>Runtime Function: <em>fract</em> <strong>__satfractsfhq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractsfsq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractsfdq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfha"></a>Runtime Function: <em>short accum</em> <strong>__satfractsfha</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfsa"></a>Runtime Function: <em>accum</em> <strong>__satfractsfsa</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfda"></a>Runtime Function: <em>long accum</em> <strong>__satfractsfda</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractsfta</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractsfuqq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractsfuhq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractsfusq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractsfudq</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractsfuha</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractsfusa</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractsfuda</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractsfuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractsfuta</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractdfqq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfhq"></a>Runtime Function: <em>fract</em> <strong>__satfractdfhq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfsq"></a>Runtime Function: <em>long fract</em> <strong>__satfractdfsq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfdq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractdfdq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfha"></a>Runtime Function: <em>short accum</em> <strong>__satfractdfha</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfsa"></a>Runtime Function: <em>accum</em> <strong>__satfractdfsa</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfda"></a>Runtime Function: <em>long accum</em> <strong>__satfractdfda</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfta"></a>Runtime Function: <em>long long accum</em> <strong>__satfractdfta</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractdfuqq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractdfuhq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractdfusq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractdfudq</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractdfuha</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractdfusa</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractdfuda</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractdfuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractdfuta</strong> <em>(double <var>a</var>)</em></dt>
+<dd><p>The functions convert from fractional and signed non-fractionals to
+fractionals, with saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffractunsqqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsqqqi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsqqhi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsqqsi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsqqdi</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsqqti</strong> <em>(short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunshqqi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunshqhi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunshqsi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunshqdi</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunshqti</strong> <em>(fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunssqqi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunssqhi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunssqsi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunssqdi</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunssqti</strong> <em>(long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsdqqi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsdqhi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsdqsi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsdqdi</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsdqti</strong> <em>(long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunshaqi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunshahi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunshasi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunshadi</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunshati</strong> <em>(short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunssaqi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunssahi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunssasi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunssadi</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunssati</strong> <em>(accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsdaqi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsdahi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsdasi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsdadi</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsdati</strong> <em>(long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunstaqi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunstahi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunstasi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunstadi</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunstati</strong> <em>(long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuqqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsuqqqi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuqqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsuqqhi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuqqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsuqqsi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuqqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsuqqdi</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuqqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsuqqti</strong> <em>(unsigned short fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsuhqqi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsuhqhi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsuhqsi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsuhqdi</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsuhqti</strong> <em>(unsigned fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsusqqi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsusqhi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsusqsi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsusqdi</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsusqti</strong> <em>(unsigned long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudqqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsudqqi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudqhi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsudqhi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudqsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsudqsi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudqdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsudqdi</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudqti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsudqti</strong> <em>(unsigned long long fract <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsuhaqi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsuhahi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsuhasi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsuhadi</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsuhati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsuhati</strong> <em>(unsigned short accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsusaqi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsusahi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsusasi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsusadi</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsusati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsusati</strong> <em>(unsigned accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsudaqi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsudahi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsudasi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsudadi</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsudati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsudati</strong> <em>(unsigned long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsutaqi"></a>Runtime Function: <em>unsigned char</em> <strong>__fractunsutaqi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsutahi"></a>Runtime Function: <em>unsigned short</em> <strong>__fractunsutahi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsutasi"></a>Runtime Function: <em>unsigned int</em> <strong>__fractunsutasi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsutadi"></a>Runtime Function: <em>unsigned long</em> <strong>__fractunsutadi</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsutati"></a>Runtime Function: <em>unsigned long long</em> <strong>__fractunsutati</strong> <em>(unsigned long long accum <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractunsqiqq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqihq"></a>Runtime Function: <em>fract</em> <strong>__fractunsqihq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqisq"></a>Runtime Function: <em>long fract</em> <strong>__fractunsqisq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractunsqidq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiha"></a>Runtime Function: <em>short accum</em> <strong>__fractunsqiha</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqisa"></a>Runtime Function: <em>accum</em> <strong>__fractunsqisa</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqida"></a>Runtime Function: <em>long accum</em> <strong>__fractunsqida</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqita"></a>Runtime Function: <em>long long accum</em> <strong>__fractunsqita</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractunsqiuqq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractunsqiuhq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractunsqiusq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractunsqiudq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractunsqiuha</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractunsqiusa</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractunsqiuda</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsqiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractunsqiuta</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractunshiqq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshihq"></a>Runtime Function: <em>fract</em> <strong>__fractunshihq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshisq"></a>Runtime Function: <em>long fract</em> <strong>__fractunshisq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractunshidq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiha"></a>Runtime Function: <em>short accum</em> <strong>__fractunshiha</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshisa"></a>Runtime Function: <em>accum</em> <strong>__fractunshisa</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshida"></a>Runtime Function: <em>long accum</em> <strong>__fractunshida</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshita"></a>Runtime Function: <em>long long accum</em> <strong>__fractunshita</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractunshiuqq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractunshiuhq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractunshiusq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractunshiudq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractunshiuha</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractunshiusa</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractunshiuda</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunshiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractunshiuta</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractunssiqq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssihq"></a>Runtime Function: <em>fract</em> <strong>__fractunssihq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssisq"></a>Runtime Function: <em>long fract</em> <strong>__fractunssisq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractunssidq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiha"></a>Runtime Function: <em>short accum</em> <strong>__fractunssiha</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssisa"></a>Runtime Function: <em>accum</em> <strong>__fractunssisa</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssida"></a>Runtime Function: <em>long accum</em> <strong>__fractunssida</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssita"></a>Runtime Function: <em>long long accum</em> <strong>__fractunssita</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractunssiuqq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractunssiuhq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractunssiusq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractunssiudq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractunssiuha</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractunssiusa</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractunssiuda</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunssiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractunssiuta</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractunsdiqq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdihq"></a>Runtime Function: <em>fract</em> <strong>__fractunsdihq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdisq"></a>Runtime Function: <em>long fract</em> <strong>__fractunsdisq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractunsdidq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiha"></a>Runtime Function: <em>short accum</em> <strong>__fractunsdiha</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdisa"></a>Runtime Function: <em>accum</em> <strong>__fractunsdisa</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdida"></a>Runtime Function: <em>long accum</em> <strong>__fractunsdida</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdita"></a>Runtime Function: <em>long long accum</em> <strong>__fractunsdita</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractunsdiuqq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractunsdiuhq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractunsdiusq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractunsdiudq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractunsdiuha</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractunsdiusa</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractunsdiuda</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunsdiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractunsdiuta</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiqq"></a>Runtime Function: <em>short fract</em> <strong>__fractunstiqq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstihq"></a>Runtime Function: <em>fract</em> <strong>__fractunstihq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstisq"></a>Runtime Function: <em>long fract</em> <strong>__fractunstisq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstidq"></a>Runtime Function: <em>long long fract</em> <strong>__fractunstidq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiha"></a>Runtime Function: <em>short accum</em> <strong>__fractunstiha</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstisa"></a>Runtime Function: <em>accum</em> <strong>__fractunstisa</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstida"></a>Runtime Function: <em>long accum</em> <strong>__fractunstida</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstita"></a>Runtime Function: <em>long long accum</em> <strong>__fractunstita</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__fractunstiuqq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__fractunstiuhq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__fractunstiusq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__fractunstiudq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__fractunstiuha</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__fractunstiusa</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__fractunstiuda</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffractunstiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__fractunstiuta</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions convert from fractionals to unsigned non-fractionals;
+and from unsigned non-fractionals to fractionals, without saturation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsatfractunsqiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractunsqiqq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqihq"></a>Runtime Function: <em>fract</em> <strong>__satfractunsqihq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractunsqisq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractunsqidq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractunsqiha</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqisa"></a>Runtime Function: <em>accum</em> <strong>__satfractunsqisa</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqida"></a>Runtime Function: <em>long accum</em> <strong>__satfractunsqida</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractunsqita</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractunsqiuqq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractunsqiuhq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractunsqiusq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractunsqiudq</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractunsqiuha</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractunsqiusa</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractunsqiuda</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsqiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractunsqiuta</strong> <em>(unsigned char <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractunshiqq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshihq"></a>Runtime Function: <em>fract</em> <strong>__satfractunshihq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractunshisq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractunshidq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractunshiha</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshisa"></a>Runtime Function: <em>accum</em> <strong>__satfractunshisa</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshida"></a>Runtime Function: <em>long accum</em> <strong>__satfractunshida</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractunshita</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractunshiuqq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractunshiuhq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractunshiusq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractunshiudq</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractunshiuha</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractunshiusa</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractunshiuda</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunshiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractunshiuta</strong> <em>(unsigned short <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractunssiqq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssihq"></a>Runtime Function: <em>fract</em> <strong>__satfractunssihq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractunssisq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractunssidq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractunssiha</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssisa"></a>Runtime Function: <em>accum</em> <strong>__satfractunssisa</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssida"></a>Runtime Function: <em>long accum</em> <strong>__satfractunssida</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractunssita</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractunssiuqq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractunssiuhq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractunssiusq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractunssiudq</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractunssiuha</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractunssiusa</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractunssiuda</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunssiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractunssiuta</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractunsdiqq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdihq"></a>Runtime Function: <em>fract</em> <strong>__satfractunsdihq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractunsdisq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractunsdidq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractunsdiha</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdisa"></a>Runtime Function: <em>accum</em> <strong>__satfractunsdisa</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdida"></a>Runtime Function: <em>long accum</em> <strong>__satfractunsdida</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractunsdita</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractunsdiuqq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractunsdiuhq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractunsdiusq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractunsdiudq</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractunsdiuha</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractunsdiusa</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractunsdiuda</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunsdiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractunsdiuta</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiqq"></a>Runtime Function: <em>short fract</em> <strong>__satfractunstiqq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstihq"></a>Runtime Function: <em>fract</em> <strong>__satfractunstihq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstisq"></a>Runtime Function: <em>long fract</em> <strong>__satfractunstisq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstidq"></a>Runtime Function: <em>long long fract</em> <strong>__satfractunstidq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiha"></a>Runtime Function: <em>short accum</em> <strong>__satfractunstiha</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstisa"></a>Runtime Function: <em>accum</em> <strong>__satfractunstisa</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstida"></a>Runtime Function: <em>long accum</em> <strong>__satfractunstida</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstita"></a>Runtime Function: <em>long long accum</em> <strong>__satfractunstita</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiuqq"></a>Runtime Function: <em>unsigned short fract</em> <strong>__satfractunstiuqq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiuhq"></a>Runtime Function: <em>unsigned fract</em> <strong>__satfractunstiuhq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiusq"></a>Runtime Function: <em>unsigned long fract</em> <strong>__satfractunstiusq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiudq"></a>Runtime Function: <em>unsigned long long fract</em> <strong>__satfractunstiudq</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiuha"></a>Runtime Function: <em>unsigned short accum</em> <strong>__satfractunstiuha</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiusa"></a>Runtime Function: <em>unsigned accum</em> <strong>__satfractunstiusa</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiuda"></a>Runtime Function: <em>unsigned long accum</em> <strong>__satfractunstiuda</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fsatfractunstiuta"></a>Runtime Function: <em>unsigned long long accum</em> <strong>__satfractunstiuta</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions convert from unsigned non-fractionals to fractionals,
+with saturation.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Exception-handling-routines.html#Exception-handling-routines" accesskey="n" rel="next">Exception handling routines</a>, Previous: <a href="Decimal-float-library-routines.html#Decimal-float-library-routines" accesskey="p" rel="previous">Decimal float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Flags.html b/share/doc/gccint/Flags.html
new file mode 100644
index 0000000..00d8acb
--- /dev/null
+++ b/share/doc/gccint/Flags.html
@@ -0,0 +1,619 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Flags</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Flags">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Flags">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Machine-Modes.html#Machine-Modes" rel="next" title="Machine Modes">
+<link href="Special-Accessors.html#Special-Accessors" rel="previous" title="Special Accessors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Flags"></a>
+<div class="header">
+<p>
+Next: <a href="Machine-Modes.html#Machine-Modes" accesskey="n" rel="next">Machine Modes</a>, Previous: <a href="Special-Accessors.html#Special-Accessors" accesskey="p" rel="previous">Special Accessors</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Flags-in-an-RTL-Expression"></a>
+<h3 class="section">14.5 Flags in an RTL Expression</h3>
+<a name="index-flags-in-RTL-expression"></a>
+
+<p>RTL expressions contain several flags (one-bit bit-fields)
+that are used in certain types of expression. Most often they
+are accessed with the following macros, which expand into lvalues.
+</p>
+<dl compact="compact">
+<dd><a name="index-CROSSING_005fJUMP_005fP"></a>
+<a name="index-jump_005finsn-and-_002fj"></a>
+</dd>
+<dt><code>CROSSING_JUMP_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>jump_insn</code> if it crosses between hot and cold sections,
+which could potentially be very far apart in the executable. The presence
+of this flag indicates to other optimizations that this branching instruction
+should not be &ldquo;collapsed&rdquo; into a simpler branching construct. It is used
+when the optimization to partition basic blocks into hot and cold sections
+is turned on.
+</p>
+<a name="index-CONSTANT_005fPOOL_005fADDRESS_005fP"></a>
+<a name="index-symbol_005fref-and-_002fu"></a>
+<a name="index-unchanging_002c-in-symbol_005fref"></a>
+</dd>
+<dt><code>CONSTANT_POOL_ADDRESS_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>symbol_ref</code> if it refers to part of the current
+function&rsquo;s constant pool. For most targets these addresses are in a
+<code>.rodata</code> section entirely separate from the function, but for
+some targets the addresses are close to the beginning of the function.
+In either case GCC assumes these addresses can be addressed directly,
+perhaps with the help of base registers.
+Stored in the <code>unchanging</code> field and printed as &lsquo;<samp>/u</samp>&rsquo;.
+</p>
+<a name="index-INSN_005fANNULLED_005fBRANCH_005fP"></a>
+<a name="index-jump_005finsn-and-_002fu"></a>
+<a name="index-call_005finsn-and-_002fu"></a>
+<a name="index-insn-and-_002fu"></a>
+<a name="index-unchanging_002c-in-jump_005finsn_002c-call_005finsn-and-insn"></a>
+</dd>
+<dt><code>INSN_ANNULLED_BRANCH_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>jump_insn</code>, <code>call_insn</code>, or <code>insn</code> indicates
+that the branch is an annulling one. See the discussion under
+<code>sequence</code> below. Stored in the <code>unchanging</code> field and
+printed as &lsquo;<samp>/u</samp>&rsquo;.
+</p>
+<a name="index-INSN_005fDELETED_005fP"></a>
+<a name="index-insn-and-_002fv"></a>
+<a name="index-call_005finsn-and-_002fv"></a>
+<a name="index-jump_005finsn-and-_002fv"></a>
+<a name="index-code_005flabel-and-_002fv"></a>
+<a name="index-jump_005ftable_005fdata-and-_002fv"></a>
+<a name="index-barrier-and-_002fv"></a>
+<a name="index-note-and-_002fv"></a>
+<a name="index-volatil_002c-in-insn_002c-call_005finsn_002c-jump_005finsn_002c-code_005flabel_002c-jump_005ftable_005fdata_002c-barrier_002c-and-note"></a>
+</dd>
+<dt><code>INSN_DELETED_P (<var>x</var>)</code></dt>
+<dd><p>In an <code>insn</code>, <code>call_insn</code>, <code>jump_insn</code>, <code>code_label</code>,
+<code>jump_table_data</code>, <code>barrier</code>, or <code>note</code>,
+nonzero if the insn has been deleted. Stored in the
+<code>volatil</code> field and printed as &lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<a name="index-INSN_005fFROM_005fTARGET_005fP"></a>
+<a name="index-insn-and-_002fs"></a>
+<a name="index-jump_005finsn-and-_002fs"></a>
+<a name="index-call_005finsn-and-_002fs"></a>
+<a name="index-in_005fstruct_002c-in-insn-and-jump_005finsn-and-call_005finsn"></a>
+</dd>
+<dt><code>INSN_FROM_TARGET_P (<var>x</var>)</code></dt>
+<dd><p>In an <code>insn</code> or <code>jump_insn</code> or <code>call_insn</code> in a delay
+slot of a branch, indicates that the insn
+is from the target of the branch. If the branch insn has
+<code>INSN_ANNULLED_BRANCH_P</code> set, this insn will only be executed if
+the branch is taken. For annulled branches with
+<code>INSN_FROM_TARGET_P</code> clear, the insn will be executed only if the
+branch is not taken. When <code>INSN_ANNULLED_BRANCH_P</code> is not set,
+this insn will always be executed. Stored in the <code>in_struct</code>
+field and printed as &lsquo;<samp>/s</samp>&rsquo;.
+</p>
+<a name="index-LABEL_005fPRESERVE_005fP"></a>
+<a name="index-code_005flabel-and-_002fi"></a>
+<a name="index-note-and-_002fi"></a>
+<a name="index-in_005fstruct_002c-in-code_005flabel-and-note"></a>
+</dd>
+<dt><code>LABEL_PRESERVE_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>code_label</code> or <code>note</code>, indicates that the label is referenced by
+code or data not visible to the RTL of a given function.
+Labels referenced by a non-local goto will have this bit set. Stored
+in the <code>in_struct</code> field and printed as &lsquo;<samp>/s</samp>&rsquo;.
+</p>
+<a name="index-LABEL_005fREF_005fNONLOCAL_005fP"></a>
+<a name="index-label_005fref-and-_002fv"></a>
+<a name="index-reg_005flabel-and-_002fv"></a>
+<a name="index-volatil_002c-in-label_005fref-and-reg_005flabel"></a>
+</dd>
+<dt><code>LABEL_REF_NONLOCAL_P (<var>x</var>)</code></dt>
+<dd><p>In <code>label_ref</code> and <code>reg_label</code> expressions, nonzero if this is
+a reference to a non-local label.
+Stored in the <code>volatil</code> field and printed as &lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<a name="index-MEM_005fKEEP_005fALIAS_005fSET_005fP"></a>
+<a name="index-mem-and-_002fj"></a>
+<a name="index-jump_002c-in-mem"></a>
+</dd>
+<dt><code>MEM_KEEP_ALIAS_SET_P (<var>x</var>)</code></dt>
+<dd><p>In <code>mem</code> expressions, 1 if we should keep the alias set for this
+mem unchanged when we access a component. Set to 1, for example, when we
+are already in a non-addressable component of an aggregate.
+Stored in the <code>jump</code> field and printed as &lsquo;<samp>/j</samp>&rsquo;.
+</p>
+<a name="index-MEM_005fVOLATILE_005fP"></a>
+<a name="index-mem-and-_002fv"></a>
+<a name="index-asm_005finput-and-_002fv"></a>
+<a name="index-asm_005foperands-and-_002fv"></a>
+<a name="index-volatil_002c-in-mem_002c-asm_005foperands_002c-and-asm_005finput"></a>
+</dd>
+<dt><code>MEM_VOLATILE_P (<var>x</var>)</code></dt>
+<dd><p>In <code>mem</code>, <code>asm_operands</code>, and <code>asm_input</code> expressions,
+nonzero for volatile memory references.
+Stored in the <code>volatil</code> field and printed as &lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<a name="index-MEM_005fNOTRAP_005fP"></a>
+<a name="index-mem-and-_002fc"></a>
+<a name="index-call_002c-in-mem"></a>
+</dd>
+<dt><code>MEM_NOTRAP_P (<var>x</var>)</code></dt>
+<dd><p>In <code>mem</code>, nonzero for memory references that will not trap.
+Stored in the <code>call</code> field and printed as &lsquo;<samp>/c</samp>&rsquo;.
+</p>
+<a name="index-MEM_005fPOINTER"></a>
+<a name="index-mem-and-_002ff"></a>
+<a name="index-frame_005frelated_002c-in-mem"></a>
+</dd>
+<dt><code>MEM_POINTER (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>mem</code> if the memory reference holds a pointer.
+Stored in the <code>frame_related</code> field and printed as &lsquo;<samp>/f</samp>&rsquo;.
+</p>
+<a name="index-MEM_005fREADONLY_005fP"></a>
+<a name="index-mem-and-_002fu"></a>
+<a name="index-unchanging_002c-in-mem"></a>
+</dd>
+<dt><code>MEM_READONLY_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>mem</code>, if the memory is statically allocated and read-only.
+</p>
+<p>Read-only in this context means never modified during the lifetime of the
+program, not necessarily in ROM or in write-disabled pages. A common
+example of the later is a shared library&rsquo;s global offset table. This
+table is initialized by the runtime loader, so the memory is technically
+writable, but after control is transferred from the runtime loader to the
+application, this memory will never be subsequently modified.
+</p>
+<p>Stored in the <code>unchanging</code> field and printed as &lsquo;<samp>/u</samp>&rsquo;.
+</p>
+<a name="index-PREFETCH_005fSCHEDULE_005fBARRIER_005fP"></a>
+<a name="index-prefetch-and-_002fv"></a>
+<a name="index-volatile_002c-in-prefetch"></a>
+</dd>
+<dt><code>PREFETCH_SCHEDULE_BARRIER_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>prefetch</code>, indicates that the prefetch is a scheduling barrier.
+No other INSNs will be moved over it.
+Stored in the <code>volatil</code> field and printed as &lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<a name="index-REG_005fFUNCTION_005fVALUE_005fP"></a>
+<a name="index-reg-and-_002fi"></a>
+<a name="index-return_005fval_002c-in-reg"></a>
+</dd>
+<dt><code>REG_FUNCTION_VALUE_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>reg</code> if it is the place in which this function&rsquo;s
+value is going to be returned. (This happens only in a hard
+register.) Stored in the <code>return_val</code> field and printed as
+&lsquo;<samp>/i</samp>&rsquo;.
+</p>
+<a name="index-REG_005fPOINTER"></a>
+<a name="index-reg-and-_002ff"></a>
+<a name="index-frame_005frelated_002c-in-reg"></a>
+</dd>
+<dt><code>REG_POINTER (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>reg</code> if the register holds a pointer. Stored in the
+<code>frame_related</code> field and printed as &lsquo;<samp>/f</samp>&rsquo;.
+</p>
+<a name="index-REG_005fUSERVAR_005fP"></a>
+<a name="index-reg-and-_002fv"></a>
+<a name="index-volatil_002c-in-reg"></a>
+</dd>
+<dt><code>REG_USERVAR_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>reg</code>, nonzero if it corresponds to a variable present in
+the user&rsquo;s source code. Zero for temporaries generated internally by
+the compiler. Stored in the <code>volatil</code> field and printed as
+&lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<p>The same hard register may be used also for collecting the values of
+functions called by this one, but <code>REG_FUNCTION_VALUE_P</code> is zero
+in this kind of use.
+</p>
+<a name="index-RTL_005fCONST_005fCALL_005fP"></a>
+<a name="index-call_005finsn-and-_002fu-1"></a>
+<a name="index-unchanging_002c-in-call_005finsn"></a>
+</dd>
+<dt><code>RTL_CONST_CALL_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>call_insn</code> indicates that the insn represents a call to a
+const function. Stored in the <code>unchanging</code> field and printed as
+&lsquo;<samp>/u</samp>&rsquo;.
+</p>
+<a name="index-RTL_005fPURE_005fCALL_005fP"></a>
+<a name="index-call_005finsn-and-_002fi"></a>
+<a name="index-return_005fval_002c-in-call_005finsn"></a>
+</dd>
+<dt><code>RTL_PURE_CALL_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>call_insn</code> indicates that the insn represents a call to a
+pure function. Stored in the <code>return_val</code> field and printed as
+&lsquo;<samp>/i</samp>&rsquo;.
+</p>
+<a name="index-RTL_005fCONST_005fOR_005fPURE_005fCALL_005fP"></a>
+<a name="index-call_005finsn-and-_002fu-or-_002fi"></a>
+</dd>
+<dt><code>RTL_CONST_OR_PURE_CALL_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>call_insn</code>, true if <code>RTL_CONST_CALL_P</code> or
+<code>RTL_PURE_CALL_P</code> is true.
+</p>
+<a name="index-RTL_005fLOOPING_005fCONST_005fOR_005fPURE_005fCALL_005fP"></a>
+<a name="index-call_005finsn-and-_002fc"></a>
+<a name="index-call_002c-in-call_005finsn"></a>
+</dd>
+<dt><code>RTL_LOOPING_CONST_OR_PURE_CALL_P (<var>x</var>)</code></dt>
+<dd><p>In a <code>call_insn</code> indicates that the insn represents a possibly
+infinite looping call to a const or pure function. Stored in the
+<code>call</code> field and printed as &lsquo;<samp>/c</samp>&rsquo;. Only true if one of
+<code>RTL_CONST_CALL_P</code> or <code>RTL_PURE_CALL_P</code> is true.
+</p>
+<a name="index-RTX_005fFRAME_005fRELATED_005fP"></a>
+<a name="index-insn-and-_002ff"></a>
+<a name="index-call_005finsn-and-_002ff"></a>
+<a name="index-jump_005finsn-and-_002ff"></a>
+<a name="index-barrier-and-_002ff"></a>
+<a name="index-set-and-_002ff"></a>
+<a name="index-frame_005frelated_002c-in-insn_002c-call_005finsn_002c-jump_005finsn_002c-barrier_002c-and-set"></a>
+</dd>
+<dt><code>RTX_FRAME_RELATED_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in an <code>insn</code>, <code>call_insn</code>, <code>jump_insn</code>,
+<code>barrier</code>, or <code>set</code> which is part of a function prologue
+and sets the stack pointer, sets the frame pointer, or saves a register.
+This flag should also be set on an instruction that sets up a temporary
+register to use in place of the frame pointer.
+Stored in the <code>frame_related</code> field and printed as &lsquo;<samp>/f</samp>&rsquo;.
+</p>
+<p>In particular, on RISC targets where there are limits on the sizes of
+immediate constants, it is sometimes impossible to reach the register
+save area directly from the stack pointer. In that case, a temporary
+register is used that is near enough to the register save area, and the
+Canonical Frame Address, i.e., DWARF2&rsquo;s logical frame pointer, register
+must (temporarily) be changed to be this temporary register. So, the
+instruction that sets this temporary register must be marked as
+<code>RTX_FRAME_RELATED_P</code>.
+</p>
+<p>If the marked instruction is overly complex (defined in terms of what
+<code>dwarf2out_frame_debug_expr</code> can handle), you will also have to
+create a <code>REG_FRAME_RELATED_EXPR</code> note and attach it to the
+instruction. This note should contain a simple expression of the
+computation performed by this instruction, i.e., one that
+<code>dwarf2out_frame_debug_expr</code> can handle.
+</p>
+<p>This flag is required for exception handling support on targets with RTL
+prologues.
+</p>
+<a name="index-SCHED_005fGROUP_005fP"></a>
+<a name="index-insn-and-_002fs-1"></a>
+<a name="index-call_005finsn-and-_002fs-1"></a>
+<a name="index-jump_005finsn-and-_002fs-1"></a>
+<a name="index-jump_005ftable_005fdata-and-_002fs"></a>
+<a name="index-in_005fstruct_002c-in-insn_002c-call_005finsn_002c-jump_005finsn-and-jump_005ftable_005fdata"></a>
+</dd>
+<dt><code>SCHED_GROUP_P (<var>x</var>)</code></dt>
+<dd><p>During instruction scheduling, in an <code>insn</code>, <code>call_insn</code>,
+<code>jump_insn</code> or <code>jump_table_data</code>, indicates that the
+previous insn must be scheduled together with this insn. This is used to
+ensure that certain groups of instructions will not be split up by the
+instruction scheduling pass, for example, <code>use</code> insns before
+a <code>call_insn</code> may not be separated from the <code>call_insn</code>.
+Stored in the <code>in_struct</code> field and printed as &lsquo;<samp>/s</samp>&rsquo;.
+</p>
+<a name="index-SET_005fIS_005fRETURN_005fP"></a>
+<a name="index-insn-and-_002fj"></a>
+<a name="index-jump_002c-in-insn"></a>
+</dd>
+<dt><code>SET_IS_RETURN_P (<var>x</var>)</code></dt>
+<dd><p>For a <code>set</code>, nonzero if it is for a return.
+Stored in the <code>jump</code> field and printed as &lsquo;<samp>/j</samp>&rsquo;.
+</p>
+<a name="index-SIBLING_005fCALL_005fP"></a>
+<a name="index-call_005finsn-and-_002fj"></a>
+<a name="index-jump_002c-in-call_005finsn"></a>
+</dd>
+<dt><code>SIBLING_CALL_P (<var>x</var>)</code></dt>
+<dd><p>For a <code>call_insn</code>, nonzero if the insn is a sibling call.
+Stored in the <code>jump</code> field and printed as &lsquo;<samp>/j</samp>&rsquo;.
+</p>
+<a name="index-STRING_005fPOOL_005fADDRESS_005fP"></a>
+<a name="index-symbol_005fref-and-_002ff"></a>
+<a name="index-frame_005frelated_002c-in-symbol_005fref"></a>
+</dd>
+<dt><code>STRING_POOL_ADDRESS_P (<var>x</var>)</code></dt>
+<dd><p>For a <code>symbol_ref</code> expression, nonzero if it addresses this function&rsquo;s
+string constant pool.
+Stored in the <code>frame_related</code> field and printed as &lsquo;<samp>/f</samp>&rsquo;.
+</p>
+<a name="index-SUBREG_005fPROMOTED_005fUNSIGNED_005fP"></a>
+<a name="index-subreg-and-_002fu-and-_002fv"></a>
+<a name="index-unchanging_002c-in-subreg"></a>
+<a name="index-volatil_002c-in-subreg"></a>
+</dd>
+<dt><code>SUBREG_PROMOTED_UNSIGNED_P (<var>x</var>)</code></dt>
+<dd><p>Returns a value greater then zero for a <code>subreg</code> that has
+<code>SUBREG_PROMOTED_VAR_P</code> nonzero if the object being referenced is kept
+zero-extended, zero if it is kept sign-extended, and less then zero if it is
+extended some other way via the <code>ptr_extend</code> instruction.
+Stored in the <code>unchanging</code>
+field and <code>volatil</code> field, printed as &lsquo;<samp>/u</samp>&rsquo; and &lsquo;<samp>/v</samp>&rsquo;.
+This macro may only be used to get the value it may not be used to change
+the value. Use <code>SUBREG_PROMOTED_UNSIGNED_SET</code> to change the value.
+</p>
+<a name="index-SUBREG_005fPROMOTED_005fUNSIGNED_005fSET"></a>
+<a name="index-subreg-and-_002fu"></a>
+<a name="index-unchanging_002c-in-subreg-1"></a>
+<a name="index-volatil_002c-in-subreg-1"></a>
+</dd>
+<dt><code>SUBREG_PROMOTED_UNSIGNED_SET (<var>x</var>)</code></dt>
+<dd><p>Set the <code>unchanging</code> and <code>volatil</code> fields in a <code>subreg</code>
+to reflect zero, sign, or other extension. If <code>volatil</code> is
+zero, then <code>unchanging</code> as nonzero means zero extension and as
+zero means sign extension. If <code>volatil</code> is nonzero then some
+other type of extension was done via the <code>ptr_extend</code> instruction.
+</p>
+<a name="index-SUBREG_005fPROMOTED_005fVAR_005fP"></a>
+<a name="index-subreg-and-_002fs"></a>
+<a name="index-in_005fstruct_002c-in-subreg"></a>
+</dd>
+<dt><code>SUBREG_PROMOTED_VAR_P (<var>x</var>)</code></dt>
+<dd><p>Nonzero in a <code>subreg</code> if it was made when accessing an object that
+was promoted to a wider mode in accord with the <code>PROMOTED_MODE</code> machine
+description macro (see <a href="Storage-Layout.html#Storage-Layout">Storage Layout</a>). In this case, the mode of
+the <code>subreg</code> is the declared mode of the object and the mode of
+<code>SUBREG_REG</code> is the mode of the register that holds the object.
+Promoted variables are always either sign- or zero-extended to the wider
+mode on every assignment. Stored in the <code>in_struct</code> field and
+printed as &lsquo;<samp>/s</samp>&rsquo;.
+</p>
+<a name="index-SYMBOL_005fREF_005fUSED"></a>
+<a name="index-used_002c-in-symbol_005fref"></a>
+</dd>
+<dt><code>SYMBOL_REF_USED (<var>x</var>)</code></dt>
+<dd><p>In a <code>symbol_ref</code>, indicates that <var>x</var> has been used. This is
+normally only used to ensure that <var>x</var> is only declared external
+once. Stored in the <code>used</code> field.
+</p>
+<a name="index-SYMBOL_005fREF_005fWEAK"></a>
+<a name="index-symbol_005fref-and-_002fi"></a>
+<a name="index-return_005fval_002c-in-symbol_005fref"></a>
+</dd>
+<dt><code>SYMBOL_REF_WEAK (<var>x</var>)</code></dt>
+<dd><p>In a <code>symbol_ref</code>, indicates that <var>x</var> has been declared weak.
+Stored in the <code>return_val</code> field and printed as &lsquo;<samp>/i</samp>&rsquo;.
+</p>
+<a name="index-SYMBOL_005fREF_005fFLAG"></a>
+<a name="index-symbol_005fref-and-_002fv"></a>
+<a name="index-volatil_002c-in-symbol_005fref"></a>
+</dd>
+<dt><code>SYMBOL_REF_FLAG (<var>x</var>)</code></dt>
+<dd><p>In a <code>symbol_ref</code>, this is used as a flag for machine-specific purposes.
+Stored in the <code>volatil</code> field and printed as &lsquo;<samp>/v</samp>&rsquo;.
+</p>
+<p>Most uses of <code>SYMBOL_REF_FLAG</code> are historic and may be subsumed
+by <code>SYMBOL_REF_FLAGS</code>. Certainly use of <code>SYMBOL_REF_FLAGS</code>
+is mandatory if the target requires more than one bit of storage.
+</p></dd>
+</dl>
+
+<p>These are the fields to which the above macros refer:
+</p>
+<dl compact="compact">
+<dd><a name="index-call"></a>
+<a name="index-_002fc-in-RTL-dump"></a>
+</dd>
+<dt><code>call</code></dt>
+<dd><p>In a <code>mem</code>, 1 means that the memory reference will not trap.
+</p>
+<p>In a <code>call</code>, 1 means that this pure or const call may possibly
+infinite loop.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/c</samp>&rsquo;.
+</p>
+<a name="index-frame_005frelated"></a>
+<a name="index-_002ff-in-RTL-dump"></a>
+</dd>
+<dt><code>frame_related</code></dt>
+<dd><p>In an <code>insn</code> or <code>set</code> expression, 1 means that it is part of
+a function prologue and sets the stack pointer, sets the frame pointer,
+saves a register, or sets up a temporary register to use in place of the
+frame pointer.
+</p>
+<p>In <code>reg</code> expressions, 1 means that the register holds a pointer.
+</p>
+<p>In <code>mem</code> expressions, 1 means that the memory reference holds a pointer.
+</p>
+<p>In <code>symbol_ref</code> expressions, 1 means that the reference addresses
+this function&rsquo;s string constant pool.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/f</samp>&rsquo;.
+</p>
+<a name="index-in_005fstruct"></a>
+<a name="index-_002fs-in-RTL-dump"></a>
+</dd>
+<dt><code>in_struct</code></dt>
+<dd><p>In <code>reg</code> expressions, it is 1 if the register has its entire life
+contained within the test expression of some loop.
+</p>
+<p>In <code>subreg</code> expressions, 1 means that the <code>subreg</code> is accessing
+an object that has had its mode promoted from a wider mode.
+</p>
+<p>In <code>label_ref</code> expressions, 1 means that the referenced label is
+outside the innermost loop containing the insn in which the <code>label_ref</code>
+was found.
+</p>
+<p>In <code>code_label</code> expressions, it is 1 if the label may never be deleted.
+This is used for labels which are the target of non-local gotos. Such a
+label that would have been deleted is replaced with a <code>note</code> of type
+<code>NOTE_INSN_DELETED_LABEL</code>.
+</p>
+<p>In an <code>insn</code> during dead-code elimination, 1 means that the insn is
+dead code.
+</p>
+<p>In an <code>insn</code> or <code>jump_insn</code> during reorg for an insn in the
+delay slot of a branch,
+1 means that this insn is from the target of the branch.
+</p>
+<p>In an <code>insn</code> during instruction scheduling, 1 means that this insn
+must be scheduled as part of a group together with the previous insn.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/s</samp>&rsquo;.
+</p>
+<a name="index-return_005fval"></a>
+<a name="index-_002fi-in-RTL-dump"></a>
+</dd>
+<dt><code>return_val</code></dt>
+<dd><p>In <code>reg</code> expressions, 1 means the register contains
+the value to be returned by the current function. On
+machines that pass parameters in registers, the same register number
+may be used for parameters as well, but this flag is not set on such
+uses.
+</p>
+<p>In <code>symbol_ref</code> expressions, 1 means the referenced symbol is weak.
+</p>
+<p>In <code>call</code> expressions, 1 means the call is pure.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/i</samp>&rsquo;.
+</p>
+<a name="index-jump"></a>
+<a name="index-_002fj-in-RTL-dump"></a>
+</dd>
+<dt><code>jump</code></dt>
+<dd><p>In a <code>mem</code> expression, 1 means we should keep the alias set for this
+mem unchanged when we access a component.
+</p>
+<p>In a <code>set</code>, 1 means it is for a return.
+</p>
+<p>In a <code>call_insn</code>, 1 means it is a sibling call.
+</p>
+<p>In a <code>jump_insn</code>, 1 means it is a crossing jump.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/j</samp>&rsquo;.
+</p>
+<a name="index-unchanging"></a>
+<a name="index-_002fu-in-RTL-dump"></a>
+</dd>
+<dt><code>unchanging</code></dt>
+<dd><p>In <code>reg</code> and <code>mem</code> expressions, 1 means
+that the value of the expression never changes.
+</p>
+<p>In <code>subreg</code> expressions, it is 1 if the <code>subreg</code> references an
+unsigned object whose mode has been promoted to a wider mode.
+</p>
+<p>In an <code>insn</code> or <code>jump_insn</code> in the delay slot of a branch
+instruction, 1 means an annulling branch should be used.
+</p>
+<p>In a <code>symbol_ref</code> expression, 1 means that this symbol addresses
+something in the per-function constant pool.
+</p>
+<p>In a <code>call_insn</code> 1 means that this instruction is a call to a const
+function.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/u</samp>&rsquo;.
+</p>
+<a name="index-used"></a>
+</dd>
+<dt><code>used</code></dt>
+<dd><p>This flag is used directly (without an access macro) at the end of RTL
+generation for a function, to count the number of times an expression
+appears in insns. Expressions that appear more than once are copied,
+according to the rules for shared structure (see <a href="Sharing.html#Sharing">Sharing</a>).
+</p>
+<p>For a <code>reg</code>, it is used directly (without an access macro) by the
+leaf register renumbering code to ensure that each register is only
+renumbered once.
+</p>
+<p>In a <code>symbol_ref</code>, it indicates that an external declaration for
+the symbol has already been written.
+</p>
+<a name="index-volatil"></a>
+<a name="index-_002fv-in-RTL-dump"></a>
+<a name="index-volatile-memory-references"></a>
+</dd>
+<dt><code>volatil</code></dt>
+<dd><p>In a <code>mem</code>, <code>asm_operands</code>, or <code>asm_input</code>
+expression, it is 1 if the memory
+reference is volatile. Volatile memory references may not be deleted,
+reordered or combined.
+</p>
+<p>In a <code>symbol_ref</code> expression, it is used for machine-specific
+purposes.
+</p>
+<p>In a <code>reg</code> expression, it is 1 if the value is a user-level variable.
+0 indicates an internal compiler temporary.
+</p>
+<p>In an <code>insn</code>, 1 means the insn has been deleted.
+</p>
+<p>In <code>label_ref</code> and <code>reg_label</code> expressions, 1 means a reference
+to a non-local label.
+</p>
+<p>In <code>prefetch</code> expressions, 1 means that the containing insn is a
+scheduling barrier.
+</p>
+<p>In an RTL dump, this flag is represented as &lsquo;<samp>/v</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Machine-Modes.html#Machine-Modes" accesskey="n" rel="next">Machine Modes</a>, Previous: <a href="Special-Accessors.html#Special-Accessors" accesskey="p" rel="previous">Special Accessors</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Floating-Point.html b/share/doc/gccint/Floating-Point.html
new file mode 100644
index 0000000..4596a27
--- /dev/null
+++ b/share/doc/gccint/Floating-Point.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Floating Point</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Floating Point">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Floating Point">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Mode-Switching.html#Mode-Switching" rel="next" title="Mode Switching">
+<link href="BTF-Debug.html#BTF-Debug" rel="previous" title="BTF Debug">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Floating-Point"></a>
+<div class="header">
+<p>
+Next: <a href="Mode-Switching.html#Mode-Switching" accesskey="n" rel="next">Mode Switching</a>, Previous: <a href="Debugging-Info.html#Debugging-Info" accesskey="p" rel="previous">Debugging Info</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Cross-Compilation-and-Floating-Point"></a>
+<h3 class="section">18.22 Cross Compilation and Floating Point</h3>
+<a name="index-cross-compilation-and-floating-point"></a>
+<a name="index-floating-point-and-cross-compilation"></a>
+
+<p>While all modern machines use twos-complement representation for integers,
+there are a variety of representations for floating point numbers. This
+means that in a cross-compiler the representation of floating point numbers
+in the compiled program may be different from that used in the machine
+doing the compilation.
+</p>
+<p>Because different representation systems may offer different amounts of
+range and precision, all floating point constants must be represented in
+the target machine&rsquo;s format. Therefore, the cross compiler cannot
+safely use the host machine&rsquo;s floating point arithmetic; it must emulate
+the target&rsquo;s arithmetic. To ensure consistency, GCC always uses
+emulation to work with floating point values, even when the host and
+target floating point formats are identical.
+</p>
+<p>The following macros are provided by <samp>real.h</samp> for the compiler to
+use. All parts of the compiler which generate or optimize
+floating-point calculations must use these macros. They may evaluate
+their operands more than once, so operands must not have side effects.
+</p>
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fTYPE"></a>Macro: <strong>REAL_VALUE_TYPE</strong></dt>
+<dd><p>The C data type to be used to hold a floating point value in the target
+machine&rsquo;s format. Typically this is a <code>struct</code> containing an
+array of <code>HOST_WIDE_INT</code>, but all code should treat it as an opaque
+quantity.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fFIX"></a>Macro: <em>HOST_WIDE_INT</em> <strong>REAL_VALUE_FIX</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Truncates <var>x</var> to a signed integer, rounding toward zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fUNSIGNED_005fFIX"></a>Macro: <em>unsigned HOST_WIDE_INT</em> <strong>REAL_VALUE_UNSIGNED_FIX</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Truncates <var>x</var> to an unsigned integer, rounding toward zero. If
+<var>x</var> is negative, returns zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fATOF"></a>Macro: <em>REAL_VALUE_TYPE</em> <strong>REAL_VALUE_ATOF</strong> <em>(const char *<var>string</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>Converts <var>string</var> into a floating point number in the target machine&rsquo;s
+representation for mode <var>mode</var>. This routine can handle both
+decimal and hexadecimal floating point constants, using the syntax
+defined by the C language for both.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fNEGATIVE"></a>Macro: <em>int</em> <strong>REAL_VALUE_NEGATIVE</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Returns 1 if <var>x</var> is negative (including negative zero), 0 otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fISINF"></a>Macro: <em>int</em> <strong>REAL_VALUE_ISINF</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Determines whether <var>x</var> represents infinity (positive or negative).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fISNAN"></a>Macro: <em>int</em> <strong>REAL_VALUE_ISNAN</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Determines whether <var>x</var> represents a &ldquo;NaN&rdquo; (not-a-number).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fNEGATE"></a>Macro: <em>REAL_VALUE_TYPE</em> <strong>REAL_VALUE_NEGATE</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Returns the negative of the floating point value <var>x</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fVALUE_005fABS"></a>Macro: <em>REAL_VALUE_TYPE</em> <strong>REAL_VALUE_ABS</strong> <em>(REAL_VALUE_TYPE <var>x</var>)</em></dt>
+<dd><p>Returns the absolute value of <var>x</var>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Mode-Switching.html#Mode-Switching" accesskey="n" rel="next">Mode Switching</a>, Previous: <a href="Debugging-Info.html#Debugging-Info" accesskey="p" rel="previous">Debugging Info</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Fragments.html b/share/doc/gccint/Fragments.html
new file mode 100644
index 0000000..3f62011
--- /dev/null
+++ b/share/doc/gccint/Fragments.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Fragments</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Fragments">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Fragments">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Target-Fragment.html#Target-Fragment" rel="next" title="Target Fragment">
+<link href="Host-Misc.html#Host-Misc" rel="previous" title="Host Misc">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Fragments"></a>
+<div class="header">
+<p>
+Next: <a href="Collect2.html#Collect2" accesskey="n" rel="next">Collect2</a>, Previous: <a href="Host-Config.html#Host-Config" accesskey="p" rel="previous">Host Config</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Makefile-Fragments"></a>
+<h2 class="chapter">20 Makefile Fragments</h2>
+<a name="index-makefile-fragment"></a>
+
+<p>When you configure GCC using the <samp>configure</samp> script, it will
+construct the file <samp>Makefile</samp> from the template file
+<samp>Makefile.in</samp>. When it does this, it can incorporate makefile
+fragments from the <samp>config</samp> directory. These are used to set
+Makefile parameters that are not amenable to being calculated by
+autoconf. The list of fragments to incorporate is set by
+<samp>config.gcc</samp> (and occasionally <samp>config.build</samp>
+and <samp>config.host</samp>); See <a href="System-Config.html#System-Config">System Config</a>.
+</p>
+<p>Fragments are named either <samp>t-<var>target</var></samp> or <samp>x-<var>host</var></samp>,
+depending on whether they are relevant to configuring GCC to produce
+code for a particular target, or to configuring GCC to run on a
+particular host. Here <var>target</var> and <var>host</var> are mnemonics
+which usually have some relationship to the canonical system name, but
+no formal connection.
+</p>
+<p>If these files do not exist, it means nothing needs to be added for a
+given target or host. Most targets need a few <samp>t-<var>target</var></samp>
+fragments, but needing <samp>x-<var>host</var></samp> fragments is rare.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Target-Fragment.html#Target-Fragment" accesskey="1">Target Fragment</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing <samp>t-<var>target</var></samp> files.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Host-Fragment.html#Host-Fragment" accesskey="2">Host Fragment</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing <samp>x-<var>host</var></samp> files.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Frame-Layout.html b/share/doc/gccint/Frame-Layout.html
new file mode 100644
index 0000000..29d27ec
--- /dev/null
+++ b/share/doc/gccint/Frame-Layout.html
@@ -0,0 +1,388 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Frame Layout</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Frame Layout">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Frame Layout">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Exception-Handling.html#Exception-Handling" rel="next" title="Exception Handling">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="previous" title="Stack and Calling">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Frame-Layout"></a>
+<div class="header">
+<p>
+Next: <a href="Exception-Handling.html#Exception-Handling" accesskey="n" rel="next">Exception Handling</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Basic-Stack-Layout"></a>
+<h4 class="subsection">18.9.1 Basic Stack Layout</h4>
+<a name="index-stack-frame-layout"></a>
+<a name="index-frame-layout"></a>
+
+<p>Here is the basic stack layout.
+</p>
+<dl>
+<dt><a name="index-STACK_005fGROWS_005fDOWNWARD"></a>Macro: <strong>STACK_GROWS_DOWNWARD</strong></dt>
+<dd><p>Define this macro to be true if pushing a word onto the stack moves the stack
+pointer to a smaller address, and false otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fPUSH_005fCODE"></a>Macro: <strong>STACK_PUSH_CODE</strong></dt>
+<dd><p>This macro defines the operation used when something is pushed
+on the stack. In RTL, a push operation will be
+<code>(set (mem (STACK_PUSH_CODE (reg sp))) &hellip;)</code>
+</p>
+<p>The choices are <code>PRE_DEC</code>, <code>POST_DEC</code>, <code>PRE_INC</code>,
+and <code>POST_INC</code>. Which of these is correct depends on
+the stack direction and on whether the stack pointer points
+to the last item on the stack or whether it points to the
+space for the next item on the stack.
+</p>
+<p>The default is <code>PRE_DEC</code> when <code>STACK_GROWS_DOWNWARD</code> is
+true, which is almost always right, and <code>PRE_INC</code> otherwise,
+which is often wrong.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FRAME_005fGROWS_005fDOWNWARD"></a>Macro: <strong>FRAME_GROWS_DOWNWARD</strong></dt>
+<dd><p>Define this macro to nonzero value if the addresses of local variable slots
+are at negative offsets from the frame pointer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ARGS_005fGROW_005fDOWNWARD"></a>Macro: <strong>ARGS_GROW_DOWNWARD</strong></dt>
+<dd><p>Define this macro if successive arguments to a function occupy decreasing
+addresses on the stack.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTARTING_005fFRAME_005fOFFSET"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_STARTING_FRAME_OFFSET</strong> <em>(void)</em></dt>
+<dd><p>This hook returns the offset from the frame pointer to the first local
+variable slot to be allocated. If <code>FRAME_GROWS_DOWNWARD</code>, it is the
+offset to <em>end</em> of the first slot allocated, otherwise it is the
+offset to <em>beginning</em> of the first slot allocated. The default
+implementation returns 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fALIGNMENT_005fNEEDED"></a>Macro: <strong>STACK_ALIGNMENT_NEEDED</strong></dt>
+<dd><p>Define to zero to disable final alignment of the stack during reload.
+The nonzero default for this macro is suitable for most ports.
+</p>
+<p>On ports where <code>TARGET_STARTING_FRAME_OFFSET</code> is nonzero or where there
+is a register save block following the local block that doesn&rsquo;t require
+alignment to <code>STACK_BOUNDARY</code>, it may be beneficial to disable
+stack alignment and do it in the backend.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fPOINTER_005fOFFSET"></a>Macro: <strong>STACK_POINTER_OFFSET</strong></dt>
+<dd><p>Offset from the stack pointer register to the first location at which
+outgoing arguments are placed. If not specified, the default value of
+zero is used. This is the proper value for most machines.
+</p>
+<p>If <code>ARGS_GROW_DOWNWARD</code>, this is the offset to the location above
+the first location at which outgoing arguments are placed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FIRST_005fPARM_005fOFFSET"></a>Macro: <strong>FIRST_PARM_OFFSET</strong> <em>(<var>fundecl</var>)</em></dt>
+<dd><p>Offset from the argument pointer register to the first argument&rsquo;s
+address. On some machines it may depend on the data type of the
+function.
+</p>
+<p>If <code>ARGS_GROW_DOWNWARD</code>, this is the offset to the location above
+the first argument&rsquo;s address.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fDYNAMIC_005fOFFSET"></a>Macro: <strong>STACK_DYNAMIC_OFFSET</strong> <em>(<var>fundecl</var>)</em></dt>
+<dd><p>Offset from the stack pointer register to an item dynamically allocated
+on the stack, e.g., by <code>alloca</code>.
+</p>
+<p>The default value for this macro is <code>STACK_POINTER_OFFSET</code> plus the
+length of the outgoing arguments. The default is correct for most
+machines. See <samp>function.cc</samp> for details.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INITIAL_005fFRAME_005fADDRESS_005fRTX"></a>Macro: <strong>INITIAL_FRAME_ADDRESS_RTX</strong></dt>
+<dd><p>A C expression whose value is RTL representing the address of the initial
+stack frame. This address is passed to <code>RETURN_ADDR_RTX</code> and
+<code>DYNAMIC_CHAIN_ADDRESS</code>. If you don&rsquo;t define this macro, a reasonable
+default value will be used. Define this macro in order to make frame pointer
+elimination work in the presence of <code>__builtin_frame_address (count)</code> and
+<code>__builtin_return_address (count)</code> for <code>count</code> not equal to zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DYNAMIC_005fCHAIN_005fADDRESS"></a>Macro: <strong>DYNAMIC_CHAIN_ADDRESS</strong> <em>(<var>frameaddr</var>)</em></dt>
+<dd><p>A C expression whose value is RTL representing the address in a stack
+frame where the pointer to the caller&rsquo;s frame is stored. Assume that
+<var>frameaddr</var> is an RTL expression for the address of the stack frame
+itself.
+</p>
+<p>If you don&rsquo;t define this macro, the default is to return the value
+of <var>frameaddr</var>&mdash;that is, the stack frame address is also the
+address of the stack word that points to the previous frame.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SETUP_005fFRAME_005fADDRESSES"></a>Macro: <strong>SETUP_FRAME_ADDRESSES</strong></dt>
+<dd><p>A C expression that produces the machine-specific code to
+setup the stack so that arbitrary frames can be accessed. For example,
+on the SPARC, we must flush all of the register windows to the stack
+before we can access arbitrary stack frames. You will seldom need to
+define this macro. The default is to do nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fBUILTIN_005fSETJMP_005fFRAME_005fVALUE"></a>Target Hook: <em>rtx</em> <strong>TARGET_BUILTIN_SETJMP_FRAME_VALUE</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return an rtx that is used to store
+the address of the current frame into the built in <code>setjmp</code> buffer.
+The default value, <code>virtual_stack_vars_rtx</code>, is correct for most
+machines. One reason you may need to define this target hook is if
+<code>hard_frame_pointer_rtx</code> is the appropriate value on your machine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FRAME_005fADDR_005fRTX"></a>Macro: <strong>FRAME_ADDR_RTX</strong> <em>(<var>frameaddr</var>)</em></dt>
+<dd><p>A C expression whose value is RTL representing the value of the frame
+address for the current frame. <var>frameaddr</var> is the frame pointer
+of the current frame. This is used for __builtin_frame_address.
+You need only define this macro if the frame address is not the same
+as the frame pointer. Most machines do not need to define it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-RETURN_005fADDR_005fRTX"></a>Macro: <strong>RETURN_ADDR_RTX</strong> <em>(<var>count</var>, <var>frameaddr</var>)</em></dt>
+<dd><p>A C expression whose value is RTL representing the value of the return
+address for the frame <var>count</var> steps up from the current frame, after
+the prologue. <var>frameaddr</var> is the frame pointer of the <var>count</var>
+frame, or the frame pointer of the <var>count</var> - 1 frame if
+<code>RETURN_ADDR_IN_PREVIOUS_FRAME</code> is nonzero.
+</p>
+<p>The value of the expression must always be the correct address when
+<var>count</var> is zero, but may be <code>NULL_RTX</code> if there is no way to
+determine the return address of other frames.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-RETURN_005fADDR_005fIN_005fPREVIOUS_005fFRAME"></a>Macro: <strong>RETURN_ADDR_IN_PREVIOUS_FRAME</strong></dt>
+<dd><p>Define this macro to nonzero value if the return address of a particular
+stack frame is accessed from the frame pointer of the previous stack
+frame. The zero default for this macro is suitable for most ports.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCOMING_005fRETURN_005fADDR_005fRTX"></a>Macro: <strong>INCOMING_RETURN_ADDR_RTX</strong></dt>
+<dd><p>A C expression whose value is RTL representing the location of the
+incoming return address at the beginning of any function, before the
+prologue. This RTL is either a <code>REG</code>, indicating that the return
+value is saved in &lsquo;<samp>REG</samp>&rsquo;, or a <code>MEM</code> representing a location in
+the stack.
+</p>
+<p>You only need to define this macro if you want to support call frame
+debugging information like that provided by DWARF 2.
+</p>
+<p>If this RTL is a <code>REG</code>, you should also define
+<code>DWARF_FRAME_RETURN_COLUMN</code> to <code>DWARF_FRAME_REGNUM (REGNO)</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fALT_005fFRAME_005fRETURN_005fCOLUMN"></a>Macro: <strong>DWARF_ALT_FRAME_RETURN_COLUMN</strong></dt>
+<dd><p>A C expression whose value is an integer giving a DWARF 2 column
+number that may be used as an alternative return column. The column
+must not correspond to any gcc hard register (that is, it must not
+be in the range of <code>DWARF_FRAME_REGNUM</code>).
+</p>
+<p>This macro can be useful if <code>DWARF_FRAME_RETURN_COLUMN</code> is set to a
+general register, but an alternative column needs to be used for signal
+frames. Some targets have also used different frame return columns
+over time.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fZERO_005fREG"></a>Macro: <strong>DWARF_ZERO_REG</strong></dt>
+<dd><p>A C expression whose value is an integer giving a DWARF 2 register
+number that is considered to always have the value zero. This should
+only be defined if the target has an architected zero register, and
+someone decided it was a good idea to use that register number to
+terminate the stack backtrace. New ports should avoid this.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fVERSION_005fDEFAULT"></a>Macro: <strong>DWARF_VERSION_DEFAULT</strong></dt>
+<dd><p>A C expression whose value is the default dwarf standard version we&rsquo;ll honor
+and advertise when generating dwarf debug information, in absence of
+an explicit <samp>-gdwarf-<var>version</var></samp> option on the command line.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDWARF_005fHANDLE_005fFRAME_005fUNSPEC"></a>Target Hook: <em>void</em> <strong>TARGET_DWARF_HANDLE_FRAME_UNSPEC</strong> <em>(const char *<var>label</var>, rtx <var>pattern</var>, int <var>index</var>)</em></dt>
+<dd><p>This target hook allows the backend to emit frame-related insns that
+contain UNSPECs or UNSPEC_VOLATILEs. The DWARF 2 call frame debugging
+info engine will invoke it on insns of the form
+</p><div class="smallexample">
+<pre class="smallexample">(set (reg) (unspec [&hellip;] UNSPEC_INDEX))
+</pre></div>
+<p>and
+</p><div class="smallexample">
+<pre class="smallexample">(set (reg) (unspec_volatile [&hellip;] UNSPECV_INDEX)).
+</pre></div>
+<p>to let the backend emit the call frame instructions. <var>label</var> is
+the CFI label attached to the insn, <var>pattern</var> is the pattern of
+the insn and <var>index</var> is <code>UNSPEC_INDEX</code> or <code>UNSPECV_INDEX</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDWARF_005fPOLY_005fINDETERMINATE_005fVALUE"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_DWARF_POLY_INDETERMINATE_VALUE</strong> <em>(unsigned int <var>i</var>, unsigned int *<var>factor</var>, int *<var>offset</var>)</em></dt>
+<dd><p>Express the value of <code>poly_int</code> indeterminate <var>i</var> as a DWARF
+expression, with <var>i</var> counting from 1. Return the number of a DWARF
+register <var>R</var> and set &lsquo;<samp>*<var>factor</var></samp>&rsquo; and &lsquo;<samp>*<var>offset</var></samp>&rsquo; such
+that the value of the indeterminate is:
+</p><div class="smallexample">
+<pre class="smallexample">value_of(<var>R</var>) / <var>factor</var> - <var>offset</var>
+</pre></div>
+
+<p>A target only needs to define this hook if it sets
+&lsquo;<samp>NUM_POLY_INT_COEFFS</samp>&rsquo; to a value greater than 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCOMING_005fFRAME_005fSP_005fOFFSET"></a>Macro: <strong>INCOMING_FRAME_SP_OFFSET</strong></dt>
+<dd><p>A C expression whose value is an integer giving the offset, in bytes,
+from the value of the stack pointer register to the top of the stack
+frame at the beginning of any function, before the prologue. The top of
+the frame is defined to be the value of the stack pointer in the
+previous frame, just before the call instruction.
+</p>
+<p>You only need to define this macro if you want to support call frame
+debugging information like that provided by DWARF 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEFAULT_005fINCOMING_005fFRAME_005fSP_005fOFFSET"></a>Macro: <strong>DEFAULT_INCOMING_FRAME_SP_OFFSET</strong></dt>
+<dd><p>Like <code>INCOMING_FRAME_SP_OFFSET</code>, but must be the same for all
+functions of the same ABI, and when using GAS <code>.cfi_*</code> directives
+must also agree with the default CFI GAS emits. Define this macro
+only if <code>INCOMING_FRAME_SP_OFFSET</code> can have different values
+between different functions of the same ABI or when
+<code>INCOMING_FRAME_SP_OFFSET</code> does not agree with GAS default CFI.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ARG_005fPOINTER_005fCFA_005fOFFSET"></a>Macro: <strong>ARG_POINTER_CFA_OFFSET</strong> <em>(<var>fundecl</var>)</em></dt>
+<dd><p>A C expression whose value is an integer giving the offset, in bytes,
+from the argument pointer to the canonical frame address (cfa). The
+final value should coincide with that calculated by
+<code>INCOMING_FRAME_SP_OFFSET</code>. Which is unfortunately not usable
+during virtual register instantiation.
+</p>
+<p>The default value for this macro is
+<code>FIRST_PARM_OFFSET (fundecl) + crtl-&gt;args.pretend_args_size</code>,
+which is correct for most machines; in general, the arguments are found
+immediately before the stack frame. Note that this is not the case on
+some targets that save registers into the caller&rsquo;s frame, such as SPARC
+and rs6000, and so such targets need to define this macro.
+</p>
+<p>You only need to define this macro if the default is incorrect, and you
+want to support call frame debugging information like that provided by
+DWARF 2.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FRAME_005fPOINTER_005fCFA_005fOFFSET"></a>Macro: <strong>FRAME_POINTER_CFA_OFFSET</strong> <em>(<var>fundecl</var>)</em></dt>
+<dd><p>If defined, a C expression whose value is an integer giving the offset
+in bytes from the frame pointer to the canonical frame address (cfa).
+The final value should coincide with that calculated by
+<code>INCOMING_FRAME_SP_OFFSET</code>.
+</p>
+<p>Normally the CFA is calculated as an offset from the argument pointer,
+via <code>ARG_POINTER_CFA_OFFSET</code>, but if the argument pointer is
+variable due to the ABI, this may not be possible. If this macro is
+defined, it implies that the virtual register instantiation should be
+based on the frame pointer instead of the argument pointer. Only one
+of <code>FRAME_POINTER_CFA_OFFSET</code> and <code>ARG_POINTER_CFA_OFFSET</code>
+should be defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CFA_005fFRAME_005fBASE_005fOFFSET"></a>Macro: <strong>CFA_FRAME_BASE_OFFSET</strong> <em>(<var>fundecl</var>)</em></dt>
+<dd><p>If defined, a C expression whose value is an integer giving the offset
+in bytes from the canonical frame address (cfa) to the frame base used
+in DWARF 2 debug information. The default is zero. A different value
+may reduce the size of debug information on some ports.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Exception-Handling.html#Exception-Handling" accesskey="n" rel="next">Exception Handling</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Frame-Registers.html b/share/doc/gccint/Frame-Registers.html
new file mode 100644
index 0000000..4dda4e9
--- /dev/null
+++ b/share/doc/gccint/Frame-Registers.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Frame Registers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Frame Registers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Frame Registers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Elimination.html#Elimination" rel="next" title="Elimination">
+<link href="Stack-Checking.html#Stack-Checking" rel="previous" title="Stack Checking">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Frame-Registers"></a>
+<div class="header">
+<p>
+Next: <a href="Elimination.html#Elimination" accesskey="n" rel="next">Elimination</a>, Previous: <a href="Stack-Checking.html#Stack-Checking" accesskey="p" rel="previous">Stack Checking</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Registers-That-Address-the-Stack-Frame"></a>
+<h4 class="subsection">18.9.4 Registers That Address the Stack Frame</h4>
+
+<p>This discusses registers that address the stack frame.
+</p>
+<dl>
+<dt><a name="index-STACK_005fPOINTER_005fREGNUM"></a>Macro: <strong>STACK_POINTER_REGNUM</strong></dt>
+<dd><p>The register number of the stack pointer register, which must also be a
+fixed register according to <code>FIXED_REGISTERS</code>. On most machines,
+the hardware determines which register this is.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FRAME_005fPOINTER_005fREGNUM"></a>Macro: <strong>FRAME_POINTER_REGNUM</strong></dt>
+<dd><p>The register number of the frame pointer register, which is used to
+access automatic variables in the stack frame. On some machines, the
+hardware determines which register this is. On other machines, you can
+choose any register you wish for this purpose.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fFRAME_005fPOINTER_005fREGNUM"></a>Macro: <strong>HARD_FRAME_POINTER_REGNUM</strong></dt>
+<dd><p>On some machines the offset between the frame pointer and starting
+offset of the automatic variables is not known until after register
+allocation has been done (for example, because the saved registers are
+between these two locations). On those machines, define
+<code>FRAME_POINTER_REGNUM</code> the number of a special, fixed register to
+be used internally until the offset is known, and define
+<code>HARD_FRAME_POINTER_REGNUM</code> to be the actual hard register number
+used for the frame pointer.
+</p>
+<p>You should define this macro only in the very rare circumstances when it
+is not possible to calculate the offset between the frame pointer and
+the automatic variables until after register allocation has been
+completed. When this macro is defined, you must also indicate in your
+definition of <code>ELIMINABLE_REGS</code> how to eliminate
+<code>FRAME_POINTER_REGNUM</code> into either <code>HARD_FRAME_POINTER_REGNUM</code>
+or <code>STACK_POINTER_REGNUM</code>.
+</p>
+<p>Do not define this macro if it would be the same as
+<code>FRAME_POINTER_REGNUM</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ARG_005fPOINTER_005fREGNUM"></a>Macro: <strong>ARG_POINTER_REGNUM</strong></dt>
+<dd><p>The register number of the arg pointer register, which is used to access
+the function&rsquo;s argument list. On some machines, this is the same as the
+frame pointer register. On some machines, the hardware determines which
+register this is. On other machines, you can choose any register you
+wish for this purpose. If this is not the same register as the frame
+pointer register, then you must mark it as a fixed register according to
+<code>FIXED_REGISTERS</code>, or arrange to be able to eliminate it
+(see <a href="Elimination.html#Elimination">Elimination</a>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fFRAME_005fPOINTER_005fIS_005fFRAME_005fPOINTER"></a>Macro: <strong>HARD_FRAME_POINTER_IS_FRAME_POINTER</strong></dt>
+<dd><p>Define this to a preprocessor constant that is nonzero if
+<code>hard_frame_pointer_rtx</code> and <code>frame_pointer_rtx</code> should be
+the same. The default definition is &lsquo;<samp>(HARD_FRAME_POINTER_REGNUM
+== FRAME_POINTER_REGNUM)</samp>&rsquo;; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fFRAME_005fPOINTER_005fIS_005fARG_005fPOINTER"></a>Macro: <strong>HARD_FRAME_POINTER_IS_ARG_POINTER</strong></dt>
+<dd><p>Define this to a preprocessor constant that is nonzero if
+<code>hard_frame_pointer_rtx</code> and <code>arg_pointer_rtx</code> should be the
+same. The default definition is &lsquo;<samp>(HARD_FRAME_POINTER_REGNUM ==
+ARG_POINTER_REGNUM)</samp>&rsquo;; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-RETURN_005fADDRESS_005fPOINTER_005fREGNUM"></a>Macro: <strong>RETURN_ADDRESS_POINTER_REGNUM</strong></dt>
+<dd><p>The register number of the return address pointer register, which is used to
+access the current function&rsquo;s return address from the stack. On some
+machines, the return address is not at a fixed offset from the frame
+pointer or stack pointer or argument pointer. This register can be defined
+to point to the return address on the stack, and then be converted by
+<code>ELIMINABLE_REGS</code> into either the frame pointer or stack pointer.
+</p>
+<p>Do not define this macro unless there is no other way to get the return
+address from the stack.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STATIC_005fCHAIN_005fREGNUM"></a>Macro: <strong>STATIC_CHAIN_REGNUM</strong></dt>
+<dt><a name="index-STATIC_005fCHAIN_005fINCOMING_005fREGNUM"></a>Macro: <strong>STATIC_CHAIN_INCOMING_REGNUM</strong></dt>
+<dd><p>Register numbers used for passing a function&rsquo;s static chain pointer. If
+register windows are used, the register number as seen by the called
+function is <code>STATIC_CHAIN_INCOMING_REGNUM</code>, while the register
+number as seen by the calling function is <code>STATIC_CHAIN_REGNUM</code>. If
+these registers are the same, <code>STATIC_CHAIN_INCOMING_REGNUM</code> need
+not be defined.
+</p>
+<p>The static chain register need not be a fixed register.
+</p>
+<p>If the static chain is passed in memory, these macros should not be
+defined; instead, the <code>TARGET_STATIC_CHAIN</code> hook should be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTATIC_005fCHAIN"></a>Target Hook: <em>rtx</em> <strong>TARGET_STATIC_CHAIN</strong> <em>(const_tree <var>fndecl_or_type</var>, bool <var>incoming_p</var>)</em></dt>
+<dd><p>This hook replaces the use of <code>STATIC_CHAIN_REGNUM</code> et al for
+targets that may use different static chain locations for different
+nested functions. This may be required if the target has function
+attributes that affect the calling conventions of the function and
+those calling conventions use different static chain locations.
+</p>
+<p>The default version of this hook uses <code>STATIC_CHAIN_REGNUM</code> et al.
+</p>
+<p>If the static chain is passed in memory, this hook should be used to
+provide rtx giving <code>mem</code> expressions that denote where they are stored.
+Often the <code>mem</code> expression as seen by the caller will be at an offset
+from the stack pointer and the <code>mem</code> expression as seen by the callee
+will be at an offset from the frame pointer.
+<a name="index-stack_005fpointer_005frtx"></a>
+<a name="index-frame_005fpointer_005frtx"></a>
+<a name="index-arg_005fpointer_005frtx"></a>
+The variables <code>stack_pointer_rtx</code>, <code>frame_pointer_rtx</code>, and
+<code>arg_pointer_rtx</code> will have been initialized and should be used
+to refer to those items.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fFRAME_005fREGISTERS"></a>Macro: <strong>DWARF_FRAME_REGISTERS</strong></dt>
+<dd><p>This macro specifies the maximum number of hard registers that can be
+saved in a call frame. This is used to size data structures used in
+DWARF2 exception handling.
+</p>
+<p>Prior to GCC 3.0, this macro was needed in order to establish a stable
+exception handling ABI in the face of adding new hard registers for ISA
+extensions. In GCC 3.0 and later, the EH ABI is insulated from changes
+in the number of hard registers. Nevertheless, this macro can still be
+used to reduce the runtime memory requirements of the exception handling
+routines, which can be substantial if the ISA contains a lot of
+registers that are not call-saved.
+</p>
+<p>If this macro is not defined, it defaults to
+<code>FIRST_PSEUDO_REGISTER</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PRE_005fGCC3_005fDWARF_005fFRAME_005fREGISTERS"></a>Macro: <strong>PRE_GCC3_DWARF_FRAME_REGISTERS</strong></dt>
+<dd>
+<p>This macro is similar to <code>DWARF_FRAME_REGISTERS</code>, but is provided
+for backward compatibility in pre GCC 3.0 compiled code.
+</p>
+<p>If this macro is not defined, it defaults to
+<code>DWARF_FRAME_REGISTERS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fREG_005fTO_005fUNWIND_005fCOLUMN"></a>Macro: <strong>DWARF_REG_TO_UNWIND_COLUMN</strong> <em>(<var>regno</var>)</em></dt>
+<dd>
+<p>Define this macro if the target&rsquo;s representation for dwarf registers
+is different than the internal representation for unwind column.
+Given a dwarf register, this macro should return the internal unwind
+column number to use instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fFRAME_005fREGNUM"></a>Macro: <strong>DWARF_FRAME_REGNUM</strong> <em>(<var>regno</var>)</em></dt>
+<dd>
+<p>Define this macro if the target&rsquo;s representation for dwarf registers
+used in .eh_frame or .debug_frame is different from that used in other
+debug info sections. Given a GCC hard register number, this macro
+should return the .eh_frame register number. The default is
+<code>DEBUGGER_REGNO (<var>regno</var>)</code>.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-DWARF2_005fFRAME_005fREG_005fOUT"></a>Macro: <strong>DWARF2_FRAME_REG_OUT</strong> <em>(<var>regno</var>, <var>for_eh</var>)</em></dt>
+<dd>
+<p>Define this macro to map register numbers held in the call frame info
+that GCC has collected using <code>DWARF_FRAME_REGNUM</code> to those that
+should be output in .debug_frame (<code><var>for_eh</var></code> is zero) and
+.eh_frame (<code><var>for_eh</var></code> is nonzero). The default is to
+return <code><var>regno</var></code>.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-REG_005fVALUE_005fIN_005fUNWIND_005fCONTEXT"></a>Macro: <strong>REG_VALUE_IN_UNWIND_CONTEXT</strong></dt>
+<dd>
+<p>Define this macro if the target stores register values as
+<code>_Unwind_Word</code> type in unwind context. It should be defined if
+target register size is larger than the size of <code>void *</code>. The
+default is to store register values as <code>void *</code> type.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-ASSUME_005fEXTENDED_005fUNWIND_005fCONTEXT"></a>Macro: <strong>ASSUME_EXTENDED_UNWIND_CONTEXT</strong></dt>
+<dd>
+<p>Define this macro to be 1 if the target always uses extended unwind
+context with version, args_size and by_value fields. If it is undefined,
+it will be defined to 1 when <code>REG_VALUE_IN_UNWIND_CONTEXT</code> is
+defined and 0 otherwise.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-DWARF_005fLAZY_005fREGISTER_005fVALUE"></a>Macro: <strong>DWARF_LAZY_REGISTER_VALUE</strong> <em>(<var>regno</var>, <var>value</var>)</em></dt>
+<dd><p>Define this macro if the target has pseudo DWARF registers whose
+values need to be computed lazily on demand by the unwinder (such as when
+referenced in a CFA expression). The macro returns true if <var>regno</var>
+is such a register and stores its value in &lsquo;<samp>*<var>value</var></samp>&rsquo; if so.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Elimination.html#Elimination" accesskey="n" rel="next">Elimination</a>, Previous: <a href="Stack-Checking.html#Stack-Checking" accesskey="p" rel="previous">Stack Checking</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Front-End-Config.html b/share/doc/gccint/Front-End-Config.html
new file mode 100644
index 0000000..362b96d
--- /dev/null
+++ b/share/doc/gccint/Front-End-Config.html
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Front End Config</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Front End Config">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Front End Config">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Front-End.html#Front-End" rel="up" title="Front End">
+<link href="Front-End-Makefile.html#Front-End-Makefile" rel="next" title="Front End Makefile">
+<link href="Front-End-Directory.html#Front-End-Directory" rel="previous" title="Front End Directory">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Front-End-Config"></a>
+<div class="header">
+<p>
+Next: <a href="Front-End-Makefile.html#Front-End-Makefile" accesskey="n" rel="next">Front End Makefile</a>, Previous: <a href="Front-End-Directory.html#Front-End-Directory" accesskey="p" rel="previous">Front End Directory</a>, Up: <a href="Front-End.html#Front-End" accesskey="u" rel="up">Front End</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Front-End-config_002dlang_002ein-File"></a>
+<h4 class="subsubsection">6.3.8.2 The Front End <samp>config-lang.in</samp> File</h4>
+
+<p>Each language subdirectory contains a <samp>config-lang.in</samp> file.
+This file is a shell script that may define some variables describing
+the language:
+</p>
+<dl compact="compact">
+<dt><code>language</code></dt>
+<dd><p>This definition must be present, and gives the name of the language
+for some purposes such as arguments to <samp>--enable-languages</samp>.
+</p></dd>
+<dt><code>lang_requires</code></dt>
+<dd><p>If defined, this variable lists (space-separated) language front ends
+other than C that this front end requires to be enabled (with the
+names given being their <code>language</code> settings). For example, the
+Obj-C++ front end depends on the C++ and ObjC front ends, so sets
+&lsquo;<samp>lang_requires=&quot;objc c++&quot;</samp>&rsquo;.
+</p></dd>
+<dt><code>subdir_requires</code></dt>
+<dd><p>If defined, this variable lists (space-separated) front end directories
+other than C that this front end requires to be present. For example,
+the Objective-C++ front end uses source files from the C++ and
+Objective-C front ends, so sets &lsquo;<samp>subdir_requires=&quot;cp objc&quot;</samp>&rsquo;.
+</p></dd>
+<dt><code>target_libs</code></dt>
+<dd><p>If defined, this variable lists (space-separated) targets in the top
+level <samp>Makefile</samp> to build the runtime libraries for this
+language, such as <code>target-libobjc</code>.
+</p></dd>
+<dt><code>lang_dirs</code></dt>
+<dd><p>If defined, this variable lists (space-separated) top level
+directories (parallel to <samp>gcc</samp>), apart from the runtime libraries,
+that should not be configured if this front end is not built.
+</p></dd>
+<dt><code>build_by_default</code></dt>
+<dd><p>If defined to &lsquo;<samp>no</samp>&rsquo;, this language front end is not built unless
+enabled in a <samp>--enable-languages</samp> argument. Otherwise, front
+ends are built by default, subject to any special logic in
+<samp>configure.ac</samp> (as is present to disable the Ada front end if the
+Ada compiler is not already installed).
+</p></dd>
+<dt><code>boot_language</code></dt>
+<dd><p>If defined to &lsquo;<samp>yes</samp>&rsquo;, this front end is built in stage1 of the
+bootstrap. This is only relevant to front ends written in their own
+languages.
+</p></dd>
+<dt><code>compilers</code></dt>
+<dd><p>If defined, a space-separated list of compiler executables that will
+be run by the driver. The names here will each end
+with &lsquo;<samp>\$(exeext)</samp>&rsquo;.
+</p></dd>
+<dt><code>outputs</code></dt>
+<dd><p>If defined, a space-separated list of files that should be generated
+by <samp>configure</samp> substituting values in them. This mechanism can
+be used to create a file <samp><var>language</var>/Makefile</samp> from
+<samp><var>language</var>/Makefile.in</samp>, but this is deprecated, building
+everything from the single <samp>gcc/Makefile</samp> is preferred.
+</p></dd>
+<dt><code>gtfiles</code></dt>
+<dd><p>If defined, a space-separated list of files that should be scanned by
+<samp>gengtype.cc</samp> to generate the garbage collection tables and routines for
+this language. This excludes the files that are common to all front
+ends. See <a href="Type-Information.html#Type-Information">Type Information</a>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Front-End-Makefile.html#Front-End-Makefile" accesskey="n" rel="next">Front End Makefile</a>, Previous: <a href="Front-End-Directory.html#Front-End-Directory" accesskey="p" rel="previous">Front End Directory</a>, Up: <a href="Front-End.html#Front-End" accesskey="u" rel="up">Front End</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Front-End-Directory.html b/share/doc/gccint/Front-End-Directory.html
new file mode 100644
index 0000000..fbfdec5
--- /dev/null
+++ b/share/doc/gccint/Front-End-Directory.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Front End Directory</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Front End Directory">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Front End Directory">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Front-End.html#Front-End" rel="up" title="Front End">
+<link href="Front-End-Config.html#Front-End-Config" rel="next" title="Front End Config">
+<link href="Front-End.html#Front-End" rel="previous" title="Front End">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Front-End-Directory"></a>
+<div class="header">
+<p>
+Next: <a href="Front-End-Config.html#Front-End-Config" accesskey="n" rel="next">Front End Config</a>, Up: <a href="Front-End.html#Front-End" accesskey="u" rel="up">Front End</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Front-End-language-Directory"></a>
+<h4 class="subsubsection">6.3.8.1 The Front End <samp><var>language</var></samp> Directory</h4>
+
+<p>A front end <samp><var>language</var></samp> directory contains the source files
+of that front end (but not of any runtime libraries, which should be
+outside the <samp>gcc</samp> directory). This includes documentation, and
+possibly some subsidiary programs built alongside the front end.
+Certain files are special and other parts of the compiler depend on
+their names:
+</p>
+<dl compact="compact">
+<dt><samp>config-lang.in</samp></dt>
+<dd><p>This file is required in all language subdirectories. See <a href="Front-End-Config.html#Front-End-Config">The Front End <samp>config-lang.in</samp> File</a>, for details of
+its contents
+</p></dd>
+<dt><samp>Make-lang.in</samp></dt>
+<dd><p>This file is required in all language subdirectories. See <a href="Front-End-Makefile.html#Front-End-Makefile">The Front End <samp>Make-lang.in</samp> File</a>, for details of its
+contents.
+</p></dd>
+<dt><samp>lang.opt</samp></dt>
+<dd><p>This file registers the set of switches that the front end accepts on
+the command line, and their <samp>--help</samp> text. See <a href="Options.html#Options">Options</a>.
+</p></dd>
+<dt><samp>lang-specs.h</samp></dt>
+<dd><p>This file provides entries for <code>default_compilers</code> in
+<samp>gcc.cc</samp> which override the default of giving an error that a
+compiler for that language is not installed.
+</p></dd>
+<dt><samp><var>language</var>-tree.def</samp></dt>
+<dd><p>This file, which need not exist, defines any language-specific tree
+codes.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Front-End-Makefile.html b/share/doc/gccint/Front-End-Makefile.html
new file mode 100644
index 0000000..876606a
--- /dev/null
+++ b/share/doc/gccint/Front-End-Makefile.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Front End Makefile</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Front End Makefile">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Front End Makefile">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Front-End.html#Front-End" rel="up" title="Front End">
+<link href="Back-End.html#Back-End" rel="next" title="Back End">
+<link href="Front-End-Config.html#Front-End-Config" rel="previous" title="Front End Config">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Front-End-Makefile"></a>
+<div class="header">
+<p>
+Previous: <a href="Front-End-Config.html#Front-End-Config" accesskey="p" rel="previous">Front End Config</a>, Up: <a href="Front-End.html#Front-End" accesskey="u" rel="up">Front End</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Front-End-Make_002dlang_002ein-File"></a>
+<h4 class="subsubsection">6.3.8.3 The Front End <samp>Make-lang.in</samp> File</h4>
+
+<p>Each language subdirectory contains a <samp>Make-lang.in</samp> file. It contains
+targets <code><var>lang</var>.<var>hook</var></code> (where <code><var>lang</var></code> is the
+setting of <code>language</code> in <samp>config-lang.in</samp>) for the following
+values of <code><var>hook</var></code>, and any other Makefile rules required to
+build those targets (which may if necessary use other Makefiles
+specified in <code>outputs</code> in <samp>config-lang.in</samp>, although this is
+deprecated). It also adds any testsuite targets that can use the
+standard rule in <samp>gcc/Makefile.in</samp> to the variable
+<code>lang_checks</code>.
+</p>
+<dl compact="compact">
+<dt><code>all.cross</code></dt>
+<dt><code>start.encap</code></dt>
+<dt><code>rest.encap</code></dt>
+<dd><p>FIXME: exactly what goes in each of these targets?
+</p></dd>
+<dt><code>tags</code></dt>
+<dd><p>Build an <code>etags</code> <samp>TAGS</samp> file in the language subdirectory
+in the source tree.
+</p></dd>
+<dt><code>info</code></dt>
+<dd><p>Build info documentation for the front end, in the build directory.
+This target is only called by &lsquo;<samp>make bootstrap</samp>&rsquo; if a suitable
+version of <code>makeinfo</code> is available, so does not need to check
+for this, and should fail if an error occurs.
+</p></dd>
+<dt><code>dvi</code></dt>
+<dd><p>Build DVI documentation for the front end, in the build directory.
+This should be done using <code>$(TEXI2DVI)</code>, with appropriate
+<samp>-I</samp> arguments pointing to directories of included files.
+</p></dd>
+<dt><code>pdf</code></dt>
+<dd><p>Build PDF documentation for the front end, in the build directory.
+This should be done using <code>$(TEXI2PDF)</code>, with appropriate
+<samp>-I</samp> arguments pointing to directories of included files.
+</p></dd>
+<dt><code>html</code></dt>
+<dd><p>Build HTML documentation for the front end, in the build directory.
+</p></dd>
+<dt><code>man</code></dt>
+<dd><p>Build generated man pages for the front end from Texinfo manuals
+(see <a href="Man-Page-Generation.html#Man-Page-Generation">Man Page Generation</a>), in the build directory. This target
+is only called if the necessary tools are available, but should ignore
+errors so as not to stop the build if errors occur; man pages are
+optional and the tools involved may be installed in a broken way.
+</p></dd>
+<dt><code>install-common</code></dt>
+<dd><p>Install everything that is part of the front end, apart from the
+compiler executables listed in <code>compilers</code> in
+<samp>config-lang.in</samp>.
+</p></dd>
+<dt><code>install-info</code></dt>
+<dd><p>Install info documentation for the front end, if it is present in the
+source directory. This target should have dependencies on info files
+that should be installed.
+</p></dd>
+<dt><code>install-man</code></dt>
+<dd><p>Install man pages for the front end. This target should ignore
+errors.
+</p></dd>
+<dt><code>install-plugin</code></dt>
+<dd><p>Install headers needed for plugins.
+</p></dd>
+<dt><code>srcextra</code></dt>
+<dd><p>Copies its dependencies into the source directory. This generally should
+be used for generated files such as Bison output files which are not
+version-controlled, but should be included in any release tarballs. This
+target will be executed during a bootstrap if
+&lsquo;<samp>--enable-generated-files-in-srcdir</samp>&rsquo; was specified as a
+<samp>configure</samp> option.
+</p></dd>
+<dt><code>srcinfo</code></dt>
+<dt><code>srcman</code></dt>
+<dd><p>Copies its dependencies into the source directory. These targets will be
+executed during a bootstrap if &lsquo;<samp>--enable-generated-files-in-srcdir</samp>&rsquo;
+was specified as a <samp>configure</samp> option.
+</p></dd>
+<dt><code>uninstall</code></dt>
+<dd><p>Uninstall files installed by installing the compiler. This is
+currently documented not to be supported, so the hook need not do
+anything.
+</p></dd>
+<dt><code>mostlyclean</code></dt>
+<dt><code>clean</code></dt>
+<dt><code>distclean</code></dt>
+<dt><code>maintainer-clean</code></dt>
+<dd><p>The language parts of the standard GNU
+&lsquo;<samp>*clean</samp>&rsquo; targets. See <a href="http://www.gnu.org/prep/standards/html_node/Standard-Targets.html#Standard-Targets">Standard Targets for
+Users</a> in <cite>GNU Coding Standards</cite>, for details of the standard
+targets. For GCC, <code>maintainer-clean</code> should delete
+all generated files in the source directory that are not version-controlled,
+but should not delete anything that is.
+</p></dd>
+</dl>
+
+<p><samp>Make-lang.in</samp> must also define a variable <code><var>lang</var>_OBJS</code>
+to a list of host object files that are used by that language.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Front-End-Config.html#Front-End-Config" accesskey="p" rel="previous">Front End Config</a>, Up: <a href="Front-End.html#Front-End" accesskey="u" rel="up">Front End</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Front-End.html b/share/doc/gccint/Front-End.html
new file mode 100644
index 0000000..675c8c6
--- /dev/null
+++ b/share/doc/gccint/Front-End.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Front End</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Front End">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Front End">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Front-End-Directory.html#Front-End-Directory" rel="next" title="Front End Directory">
+<link href="Miscellaneous-Docs.html#Miscellaneous-Docs" rel="previous" title="Miscellaneous Docs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Front-End"></a>
+<div class="header">
+<p>
+Next: <a href="Back-End.html#Back-End" accesskey="n" rel="next">Back End</a>, Previous: <a href="Documentation.html#Documentation" accesskey="p" rel="previous">Documentation</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Anatomy-of-a-Language-Front-End"></a>
+<h4 class="subsection">6.3.8 Anatomy of a Language Front End</h4>
+
+<p>A front end for a language in GCC has the following parts:
+</p>
+<ul>
+<li> A directory <samp><var>language</var></samp> under <samp>gcc</samp> containing source
+files for that front end. See <a href="Front-End-Directory.html#Front-End-Directory">The Front End
+<samp><var>language</var></samp> Directory</a>, for details.
+</li><li> A mention of the language in the list of supported languages in
+<samp>gcc/doc/install.texi</samp>.
+</li><li> A mention of the name under which the language&rsquo;s runtime library is
+recognized by <samp>--enable-shared=<var>package</var></samp> in the
+documentation of that option in <samp>gcc/doc/install.texi</samp>.
+</li><li> A mention of any special prerequisites for building the front end in
+the documentation of prerequisites in <samp>gcc/doc/install.texi</samp>.
+</li><li> Details of contributors to that front end in
+<samp>gcc/doc/contrib.texi</samp>. If the details are in that front end&rsquo;s
+own manual then there should be a link to that manual&rsquo;s list in
+<samp>contrib.texi</samp>.
+</li><li> Information about support for that language in
+<samp>gcc/doc/frontends.texi</samp>.
+</li><li> Information about standards for that language, and the front end&rsquo;s
+support for them, in <samp>gcc/doc/standards.texi</samp>. This may be a
+link to such information in the front end&rsquo;s own manual.
+</li><li> Details of source file suffixes for that language and <samp>-x
+<var>lang</var></samp> options supported, in <samp>gcc/doc/invoke.texi</samp>.
+</li><li> Entries in <code>default_compilers</code> in <samp>gcc.cc</samp> for source file
+suffixes for that language.
+</li><li> Preferably testsuites, which may be under <samp>gcc/testsuite</samp> or
+runtime library directories. FIXME: document somewhere how to write
+testsuite harnesses.
+</li><li> Probably a runtime library for the language, outside the <samp>gcc</samp>
+directory. FIXME: document this further.
+</li><li> Details of the directories of any runtime libraries in
+<samp>gcc/doc/sourcebuild.texi</samp>.
+</li><li> Check targets in <samp>Makefile.def</samp> for the top-level <samp>Makefile</samp>
+to check just the compiler or the compiler and runtime library for the
+language.
+</li></ul>
+
+<p>If the front end is added to the official GCC source repository, the
+following are also necessary:
+</p>
+<ul>
+<li> At least one Bugzilla component for bugs in that front end and runtime
+libraries. This category needs to be added to the Bugzilla database.
+</li><li> Normally, one or more maintainers of that front end listed in
+<samp>MAINTAINERS</samp>.
+</li><li> Mentions on the GCC web site in <samp>index.html</samp> and
+<samp>frontends.html</samp>, with any relevant links on
+<samp>readings.html</samp>. (Front ends that are not an official part of
+GCC may also be listed on <samp>frontends.html</samp>, with relevant links.)
+</li><li> A news item on <samp>index.html</samp>, and possibly an announcement on the
+<a href="mailto:gcc-announce@gcc.gnu.org">gcc-announce@gcc.gnu.org</a> mailing list.
+</li><li> The front end&rsquo;s manuals should be mentioned in
+<samp>maintainer-scripts/update_web_docs_git</samp> (see <a href="Texinfo-Manuals.html#Texinfo-Manuals">Texinfo Manuals</a>)
+and the online manuals should be linked to from
+<samp>onlinedocs/index.html</samp>.
+</li><li> Any old releases or CVS repositories of the front end, before its
+inclusion in GCC, should be made available on the GCC web site at
+<a href="https://gcc.gnu.org/pub/gcc/old-releases/">https://gcc.gnu.org/pub/gcc/old-releases/</a>.
+</li><li> The release and snapshot script <samp>maintainer-scripts/gcc_release</samp>
+should be updated to generate appropriate tarballs for this front end.
+</li><li> If this front end includes its own version files that include the
+current date, <samp>maintainer-scripts/update_version</samp> should be
+updated accordingly.
+</li></ul>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Front-End-Directory.html#Front-End-Directory" accesskey="1">Front End Directory</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The front end <samp><var>language</var></samp> directory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Front-End-Config.html#Front-End-Config" accesskey="2">Front End Config</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The front end <samp>config-lang.in</samp> file.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Front-End-Makefile.html#Front-End-Makefile" accesskey="3">Front End Makefile</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The front end <samp>Make-lang.in</samp> file.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Back-End.html#Back-End" accesskey="n" rel="next">Back End</a>, Previous: <a href="Documentation.html#Documentation" accesskey="p" rel="previous">Documentation</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Function-Basics.html b/share/doc/gccint/Function-Basics.html
new file mode 100644
index 0000000..d16d306
--- /dev/null
+++ b/share/doc/gccint/Function-Basics.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Function Basics</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Function Basics">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Function Basics">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html#Functions" rel="up" title="Functions">
+<link href="Function-Properties.html#Function-Properties" rel="next" title="Function Properties">
+<link href="Functions.html#Functions" rel="previous" title="Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Function-Basics"></a>
+<div class="header">
+<p>
+Next: <a href="Function-Properties.html#Function-Properties" accesskey="n" rel="next">Function Properties</a>, Up: <a href="Functions.html#Functions" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Function-Basics-1"></a>
+<h4 class="subsection">11.8.1 Function Basics</h4>
+<a name="index-DECL_005fNAME-1"></a>
+<a name="index-DECL_005fASSEMBLER_005fNAME"></a>
+<a name="index-TREE_005fPUBLIC"></a>
+<a name="index-DECL_005fARTIFICIAL-1"></a>
+<a name="index-DECL_005fFUNCTION_005fSPECIFIC_005fTARGET"></a>
+<a name="index-DECL_005fFUNCTION_005fSPECIFIC_005fOPTIMIZATION"></a>
+
+<p>A function has four core parts: the name, the parameters, the result,
+and the body. The following macros and functions access these parts
+of a <code>FUNCTION_DECL</code> as well as other basic features:
+</p><dl compact="compact">
+<dt><code>DECL_NAME</code>
+<a name="index-DECL_005fNAME-2"></a>
+</dt>
+<dd><p>This macro returns the unqualified name of the function, as an
+<code>IDENTIFIER_NODE</code>. For an instantiation of a function template,
+the <code>DECL_NAME</code> is the unqualified name of the template, not
+something like <code>f&lt;int&gt;</code>. The value of <code>DECL_NAME</code> is
+undefined when used on a constructor, destructor, overloaded operator,
+or type-conversion operator, or any function that is implicitly
+generated by the compiler. See below for macros that can be used to
+distinguish these cases.
+</p>
+</dd>
+<dt><code>DECL_ASSEMBLER_NAME</code>
+<a name="index-DECL_005fASSEMBLER_005fNAME-1"></a>
+</dt>
+<dd><p>This macro returns the mangled name of the function, also an
+<code>IDENTIFIER_NODE</code>. This name does not contain leading underscores
+on systems that prefix all identifiers with underscores. The mangled
+name is computed in the same way on all platforms; if special processing
+is required to deal with the object file format used on a particular
+platform, it is the responsibility of the back end to perform those
+modifications. (Of course, the back end should not modify
+<code>DECL_ASSEMBLER_NAME</code> itself.)
+</p>
+<p>Using <code>DECL_ASSEMBLER_NAME</code> will cause additional memory to be
+allocated (for the mangled name of the entity) so it should be used
+only when emitting assembly code. It should not be used within the
+optimizers to determine whether or not two declarations are the same,
+even though some of the existing optimizers do use it in that way.
+These uses will be removed over time.
+</p>
+</dd>
+<dt><code>DECL_ARGUMENTS</code>
+<a name="index-DECL_005fARGUMENTS"></a>
+</dt>
+<dd><p>This macro returns the <code>PARM_DECL</code> for the first argument to the
+function. Subsequent <code>PARM_DECL</code> nodes can be obtained by
+following the <code>TREE_CHAIN</code> links.
+</p>
+</dd>
+<dt><code>DECL_RESULT</code>
+<a name="index-DECL_005fRESULT"></a>
+</dt>
+<dd><p>This macro returns the <code>RESULT_DECL</code> for the function.
+</p>
+</dd>
+<dt><code>DECL_SAVED_TREE</code>
+<a name="index-DECL_005fSAVED_005fTREE"></a>
+</dt>
+<dd><p>This macro returns the complete body of the function.
+</p>
+</dd>
+<dt><code>TREE_TYPE</code>
+<a name="index-TREE_005fTYPE-5"></a>
+</dt>
+<dd><p>This macro returns the <code>FUNCTION_TYPE</code> or <code>METHOD_TYPE</code> for
+the function.
+</p>
+</dd>
+<dt><code>DECL_INITIAL</code>
+<a name="index-DECL_005fINITIAL-1"></a>
+</dt>
+<dd><p>A function that has a definition in the current translation unit will
+have a non-<code>NULL</code> <code>DECL_INITIAL</code>. However, back ends should not make
+use of the particular value given by <code>DECL_INITIAL</code>.
+</p>
+<p>It should contain a tree of <code>BLOCK</code> nodes that mirrors the scopes
+that variables are bound in the function. Each block contains a list
+of decls declared in a basic block, a pointer to a chain of blocks at
+the next lower scope level, then a pointer to the next block at the
+same level and a backpointer to the parent <code>BLOCK</code> or
+<code>FUNCTION_DECL</code>. So given a function as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">void foo()
+{
+ int a;
+ {
+ int b;
+ }
+ int c;
+}
+</pre></div>
+
+<p>you would get the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">tree foo = FUNCTION_DECL;
+tree decl_a = VAR_DECL;
+tree decl_b = VAR_DECL;
+tree decl_c = VAR_DECL;
+tree block_a = BLOCK;
+tree block_b = BLOCK;
+tree block_c = BLOCK;
+BLOCK_VARS(block_a) = decl_a;
+BLOCK_SUBBLOCKS(block_a) = block_b;
+BLOCK_CHAIN(block_a) = block_c;
+BLOCK_SUPERCONTEXT(block_a) = foo;
+BLOCK_VARS(block_b) = decl_b;
+BLOCK_SUPERCONTEXT(block_b) = block_a;
+BLOCK_VARS(block_c) = decl_c;
+BLOCK_SUPERCONTEXT(block_c) = foo;
+DECL_INITIAL(foo) = block_a;
+</pre></div>
+
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Function-Properties.html#Function-Properties" accesskey="n" rel="next">Function Properties</a>, Up: <a href="Functions.html#Functions" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Function-Entry.html b/share/doc/gccint/Function-Entry.html
new file mode 100644
index 0000000..a07765d
--- /dev/null
+++ b/share/doc/gccint/Function-Entry.html
@@ -0,0 +1,326 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Function Entry</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Function Entry">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Function Entry">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Profiling.html#Profiling" rel="next" title="Profiling">
+<link href="Caller-Saves.html#Caller-Saves" rel="previous" title="Caller Saves">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Function-Entry"></a>
+<div class="header">
+<p>
+Next: <a href="Profiling.html#Profiling" accesskey="n" rel="next">Profiling</a>, Previous: <a href="Caller-Saves.html#Caller-Saves" accesskey="p" rel="previous">Caller Saves</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Function-Entry-and-Exit"></a>
+<h4 class="subsection">18.9.11 Function Entry and Exit</h4>
+<a name="index-function-entry-and-exit"></a>
+<a name="index-prologue"></a>
+<a name="index-epilogue"></a>
+
+<p>This section describes the macros that output function entry
+(<em>prologue</em>) and exit (<em>epilogue</em>) code.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fASM_005fPRINT_005fPATCHABLE_005fFUNCTION_005fENTRY"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY</strong> <em>(FILE *<var>file</var>, unsigned HOST_WIDE_INT <var>patch_area_size</var>, bool <var>record_p</var>)</em></dt>
+<dd><p>Generate a patchable area at the function start, consisting of
+<var>patch_area_size</var> NOP instructions. If the target supports named
+sections and if <var>record_p</var> is true, insert a pointer to the current
+location in the table of patchable functions. The default implementation
+of the hook places the table of pointers in the special section named
+<code>__patchable_function_entries</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fPROLOGUE"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FUNCTION_PROLOGUE</strong> <em>(FILE *<var>file</var>)</em></dt>
+<dd><p>If defined, a function that outputs the assembler code for entry to a
+function. The prologue is responsible for setting up the stack frame,
+initializing the frame pointer register, saving registers that must be
+saved, and allocating <var>size</var> additional bytes of storage for the
+local variables. <var>file</var> is a stdio stream to which the assembler
+code should be output.
+</p>
+<p>The label for the beginning of the function need not be output by this
+macro. That has already been done when the macro is run.
+</p>
+<a name="index-regs_005fever_005flive"></a>
+<p>To determine which registers to save, the macro can refer to the array
+<code>regs_ever_live</code>: element <var>r</var> is nonzero if hard register
+<var>r</var> is used anywhere within the function. This implies the function
+prologue should save register <var>r</var>, provided it is not one of the
+call-used registers. (<code>TARGET_ASM_FUNCTION_EPILOGUE</code> must likewise use
+<code>regs_ever_live</code>.)
+</p>
+<p>On machines that have &ldquo;register windows&rdquo;, the function entry code does
+not save on the stack the registers that are in the windows, even if
+they are supposed to be preserved by function calls; instead it takes
+appropriate steps to &ldquo;push&rdquo; the register stack, if any non-call-used
+registers are used in the function.
+</p>
+<a name="index-frame_005fpointer_005fneeded"></a>
+<p>On machines where functions may or may not have frame-pointers, the
+function entry code must vary accordingly; it must set up the frame
+pointer if one is wanted, and not otherwise. To determine whether a
+frame pointer is in wanted, the macro can refer to the variable
+<code>frame_pointer_needed</code>. The variable&rsquo;s value will be 1 at run
+time in a function that needs a frame pointer. See <a href="Elimination.html#Elimination">Elimination</a>.
+</p>
+<p>The function entry code is responsible for allocating any stack space
+required for the function. This stack space consists of the regions
+listed below. In most cases, these regions are allocated in the
+order listed, with the last listed region closest to the top of the
+stack (the lowest address if <code>STACK_GROWS_DOWNWARD</code> is defined, and
+the highest address if it is not defined). You can use a different order
+for a machine if doing so is more convenient or required for
+compatibility reasons. Except in cases where required by standard
+or by a debugger, there is no reason why the stack layout used by GCC
+need agree with that used by other compilers for a machine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fEND_005fPROLOGUE"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FUNCTION_END_PROLOGUE</strong> <em>(FILE *<var>file</var>)</em></dt>
+<dd><p>If defined, a function that outputs assembler code at the end of a
+prologue. This should be used when the function prologue is being
+emitted as RTL, and you have some extra assembler that needs to be
+emitted. See <a href="Standard-Names.html#prologue-instruction-pattern">prologue instruction pattern</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fBEGIN_005fEPILOGUE"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FUNCTION_BEGIN_EPILOGUE</strong> <em>(FILE *<var>file</var>)</em></dt>
+<dd><p>If defined, a function that outputs assembler code at the start of an
+epilogue. This should be used when the function epilogue is being
+emitted as RTL, and you have some extra assembler that needs to be
+emitted. See <a href="Standard-Names.html#epilogue-instruction-pattern">epilogue instruction pattern</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fEPILOGUE"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FUNCTION_EPILOGUE</strong> <em>(FILE *<var>file</var>)</em></dt>
+<dd><p>If defined, a function that outputs the assembler code for exit from a
+function. The epilogue is responsible for restoring the saved
+registers and stack pointer to their values when the function was
+called, and returning control to the caller. This macro takes the
+same argument as the macro <code>TARGET_ASM_FUNCTION_PROLOGUE</code>, and the
+registers to restore are determined from <code>regs_ever_live</code> and
+<code>CALL_USED_REGISTERS</code> in the same way.
+</p>
+<p>On some machines, there is a single instruction that does all the work
+of returning from the function. On these machines, give that
+instruction the name &lsquo;<samp>return</samp>&rsquo; and do not define the macro
+<code>TARGET_ASM_FUNCTION_EPILOGUE</code> at all.
+</p>
+<p>Do not define a pattern named &lsquo;<samp>return</samp>&rsquo; if you want the
+<code>TARGET_ASM_FUNCTION_EPILOGUE</code> to be used. If you want the target
+switches to control whether return instructions or epilogues are used,
+define a &lsquo;<samp>return</samp>&rsquo; pattern with a validity condition that tests the
+target switches appropriately. If the &lsquo;<samp>return</samp>&rsquo; pattern&rsquo;s validity
+condition is false, epilogues will be used.
+</p>
+<p>On machines where functions may or may not have frame-pointers, the
+function exit code must vary accordingly. Sometimes the code for these
+two cases is completely different. To determine whether a frame pointer
+is wanted, the macro can refer to the variable
+<code>frame_pointer_needed</code>. The variable&rsquo;s value will be 1 when compiling
+a function that needs a frame pointer.
+</p>
+<p>Normally, <code>TARGET_ASM_FUNCTION_PROLOGUE</code> and
+<code>TARGET_ASM_FUNCTION_EPILOGUE</code> must treat leaf functions specially.
+The C variable <code>current_function_is_leaf</code> is nonzero for such a
+function. See <a href="Leaf-Functions.html#Leaf-Functions">Leaf Functions</a>.
+</p>
+<p>On some machines, some functions pop their arguments on exit while
+others leave that for the caller to do. For example, the 68020 when
+given <samp>-mrtd</samp> pops arguments in functions that take a fixed
+number of arguments.
+</p>
+<a name="index-pops_005fargs"></a>
+<a name="index-crtl_002d_003eargs_002epops_005fargs"></a>
+<p>Your definition of the macro <code>RETURN_POPS_ARGS</code> decides which
+functions pop their own arguments. <code>TARGET_ASM_FUNCTION_EPILOGUE</code>
+needs to know what was decided. The number of bytes of the current
+function&rsquo;s arguments that this function should pop is available in
+<code>crtl-&gt;args.pops_args</code>. See <a href="Scalar-Return.html#Scalar-Return">Scalar Return</a>.
+</p></dd></dl>
+
+<ul>
+<li> <a name="index-pretend_005fargs_005fsize"></a>
+<a name="index-crtl_002d_003eargs_002epretend_005fargs_005fsize"></a>
+A region of <code>crtl-&gt;args.pretend_args_size</code> bytes of
+uninitialized space just underneath the first argument arriving on the
+stack. (This may not be at the very start of the allocated stack region
+if the calling sequence has pushed anything else since pushing the stack
+arguments. But usually, on such machines, nothing else has been pushed
+yet, because the function prologue itself does all the pushing.) This
+region is used on machines where an argument may be passed partly in
+registers and partly in memory, and, in some cases to support the
+features in <code>&lt;stdarg.h&gt;</code>.
+
+</li><li> An area of memory used to save certain registers used by the function.
+The size of this area, which may also include space for such things as
+the return address and pointers to previous stack frames, is
+machine-specific and usually depends on which registers have been used
+in the function. Machines with register windows often do not require
+a save area.
+
+</li><li> A region of at least <var>size</var> bytes, possibly rounded up to an allocation
+boundary, to contain the local variables of the function. On some machines,
+this region and the save area may occur in the opposite order, with the
+save area closer to the top of the stack.
+
+</li><li> <a name="index-ACCUMULATE_005fOUTGOING_005fARGS-and-stack-frames"></a>
+Optionally, when <code>ACCUMULATE_OUTGOING_ARGS</code> is defined, a region of
+<code>crtl-&gt;outgoing_args_size</code> bytes to be used for outgoing
+argument lists of the function. See <a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a>.
+</li></ul>
+
+<dl>
+<dt><a name="index-EXIT_005fIGNORE_005fSTACK"></a>Macro: <strong>EXIT_IGNORE_STACK</strong></dt>
+<dd><p>Define this macro as a C expression that is nonzero if the return
+instruction or the function epilogue ignores the value of the stack
+pointer; in other words, if it is safe to delete an instruction to
+adjust the stack pointer before a return from the function. The
+default is 0.
+</p>
+<p>Note that this macro&rsquo;s value is relevant only for functions for which
+frame pointers are maintained. It is never safe to delete a final
+stack adjustment in a function that has no frame pointer, and the
+compiler knows this regardless of <code>EXIT_IGNORE_STACK</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EPILOGUE_005fUSES"></a>Macro: <strong>EPILOGUE_USES</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>Define this macro as a C expression that is nonzero for registers that are
+used by the epilogue or the &lsquo;<samp>return</samp>&rsquo; pattern. The stack and frame
+pointer registers are already assumed to be used as needed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EH_005fUSES"></a>Macro: <strong>EH_USES</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>Define this macro as a C expression that is nonzero for registers that are
+used by the exception handling mechanism, and so should be considered live
+on entry to an exception edge.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fOUTPUT_005fMI_005fTHUNK"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_OUTPUT_MI_THUNK</strong> <em>(FILE *<var>file</var>, tree <var>thunk_fndecl</var>, HOST_WIDE_INT <var>delta</var>, HOST_WIDE_INT <var>vcall_offset</var>, tree <var>function</var>)</em></dt>
+<dd><p>A function that outputs the assembler code for a thunk
+function, used to implement C++ virtual function calls with multiple
+inheritance. The thunk acts as a wrapper around a virtual function,
+adjusting the implicit object parameter before handing control off to
+the real function.
+</p>
+<p>First, emit code to add the integer <var>delta</var> to the location that
+contains the incoming first argument. Assume that this argument
+contains a pointer, and is the one used to pass the <code>this</code> pointer
+in C++. This is the incoming argument <em>before</em> the function prologue,
+e.g. &lsquo;<samp>%o0</samp>&rsquo; on a sparc. The addition must preserve the values of
+all other incoming arguments.
+</p>
+<p>Then, if <var>vcall_offset</var> is nonzero, an additional adjustment should be
+made after adding <code>delta</code>. In particular, if <var>p</var> is the
+adjusted pointer, the following adjustment should be made:
+</p>
+<div class="smallexample">
+<pre class="smallexample">p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
+</pre></div>
+
+<p>After the additions, emit code to jump to <var>function</var>, which is a
+<code>FUNCTION_DECL</code>. This is a direct pure jump, not a call, and does
+not touch the return address. Hence returning from <var>FUNCTION</var> will
+return to whoever called the current &lsquo;<samp>thunk</samp>&rsquo;.
+</p>
+<p>The effect must be as if <var>function</var> had been called directly with
+the adjusted first argument. This macro is responsible for emitting all
+of the code for a thunk function; <code>TARGET_ASM_FUNCTION_PROLOGUE</code>
+and <code>TARGET_ASM_FUNCTION_EPILOGUE</code> are not invoked.
+</p>
+<p>The <var>thunk_fndecl</var> is redundant. (<var>delta</var> and <var>function</var>
+have already been extracted from it.) It might possibly be useful on
+some targets, but probably not.
+</p>
+<p>If you do not define this macro, the target-independent code in the C++
+front end will generate a less efficient heavyweight thunk that calls
+<var>function</var> instead of jumping to it. The generic approach does
+not support varargs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fCAN_005fOUTPUT_005fMI_005fTHUNK"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_CAN_OUTPUT_MI_THUNK</strong> <em>(const_tree <var>thunk_fndecl</var>, HOST_WIDE_INT <var>delta</var>, HOST_WIDE_INT <var>vcall_offset</var>, const_tree <var>function</var>)</em></dt>
+<dd><p>A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able
+to output the assembler code for the thunk function specified by the
+arguments it is passed, and false otherwise. In the latter case, the
+generic approach will be used by the C++ front end, with the limitations
+previously exposed.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Profiling.html#Profiling" accesskey="n" rel="next">Profiling</a>, Previous: <a href="Caller-Saves.html#Caller-Saves" accesskey="p" rel="previous">Caller Saves</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Function-Properties.html b/share/doc/gccint/Function-Properties.html
new file mode 100644
index 0000000..d2cb9f9
--- /dev/null
+++ b/share/doc/gccint/Function-Properties.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Function Properties</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Function Properties">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Function Properties">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Functions.html#Functions" rel="up" title="Functions">
+<link href="Language_002ddependent-trees.html#Language_002ddependent-trees" rel="next" title="Language-dependent trees">
+<link href="Function-Basics.html#Function-Basics" rel="previous" title="Function Basics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Function-Properties"></a>
+<div class="header">
+<p>
+Previous: <a href="Function-Basics.html#Function-Basics" accesskey="p" rel="previous">Function Basics</a>, Up: <a href="Functions.html#Functions" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Function-Properties-1"></a>
+<h4 class="subsection">11.8.2 Function Properties</h4>
+<a name="index-function-properties"></a>
+<a name="index-statements"></a>
+
+<p>To determine the scope of a function, you can use the
+<code>DECL_CONTEXT</code> macro. This macro will return the class
+(either a <code>RECORD_TYPE</code> or a <code>UNION_TYPE</code>) or namespace (a
+<code>NAMESPACE_DECL</code>) of which the function is a member. For a virtual
+function, this macro returns the class in which the function was
+actually defined, not the base class in which the virtual declaration
+occurred.
+</p>
+<p>In C, the <code>DECL_CONTEXT</code> for a function maybe another function.
+This representation indicates that the GNU nested function extension
+is in use. For details on the semantics of nested functions, see the
+GCC Manual. The nested function can refer to local variables in its
+containing function. Such references are not explicitly marked in the
+tree structure; back ends must look at the <code>DECL_CONTEXT</code> for the
+referenced <code>VAR_DECL</code>. If the <code>DECL_CONTEXT</code> for the
+referenced <code>VAR_DECL</code> is not the same as the function currently
+being processed, and neither <code>DECL_EXTERNAL</code> nor
+<code>TREE_STATIC</code> hold, then the reference is to a local variable in
+a containing function, and the back end must take appropriate action.
+</p>
+<dl compact="compact">
+<dt><code>DECL_EXTERNAL</code>
+<a name="index-DECL_005fEXTERNAL-1"></a>
+</dt>
+<dd><p>This predicate holds if the function is undefined.
+</p>
+</dd>
+<dt><code>TREE_PUBLIC</code>
+<a name="index-TREE_005fPUBLIC-1"></a>
+</dt>
+<dd><p>This predicate holds if the function has external linkage.
+</p>
+</dd>
+<dt><code>TREE_STATIC</code>
+<a name="index-TREE_005fSTATIC"></a>
+</dt>
+<dd><p>This predicate holds if the function has been defined.
+</p>
+</dd>
+<dt><code>TREE_THIS_VOLATILE</code>
+<a name="index-TREE_005fTHIS_005fVOLATILE"></a>
+</dt>
+<dd><p>This predicate holds if the function does not return normally.
+</p>
+</dd>
+<dt><code>TREE_READONLY</code>
+<a name="index-TREE_005fREADONLY"></a>
+</dt>
+<dd><p>This predicate holds if the function can only read its arguments.
+</p>
+</dd>
+<dt><code>DECL_PURE_P</code>
+<a name="index-DECL_005fPURE_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function can only read its arguments, but
+may also read global memory.
+</p>
+</dd>
+<dt><code>DECL_VIRTUAL_P</code>
+<a name="index-DECL_005fVIRTUAL_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is virtual.
+</p>
+</dd>
+<dt><code>DECL_ARTIFICIAL</code>
+<a name="index-DECL_005fARTIFICIAL-2"></a>
+</dt>
+<dd><p>This macro holds if the function was implicitly generated by the
+compiler, rather than explicitly declared. In addition to implicitly
+generated class member functions, this macro holds for the special
+functions created to implement static initialization and destruction, to
+compute run-time type information, and so forth.
+</p>
+</dd>
+<dt><code>DECL_FUNCTION_SPECIFIC_TARGET</code>
+<a name="index-DECL_005fFUNCTION_005fSPECIFIC_005fTARGET-1"></a>
+</dt>
+<dd><p>This macro returns a tree node that holds the target options that are
+to be used to compile this particular function or <code>NULL_TREE</code> if
+the function is to be compiled with the target options specified on
+the command line.
+</p>
+</dd>
+<dt><code>DECL_FUNCTION_SPECIFIC_OPTIMIZATION</code>
+<a name="index-DECL_005fFUNCTION_005fSPECIFIC_005fOPTIMIZATION-1"></a>
+</dt>
+<dd><p>This macro returns a tree node that holds the optimization options
+that are to be used to compile this particular function or
+<code>NULL_TREE</code> if the function is to be compiled with the
+optimization options specified on the command line.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Function-Basics.html#Function-Basics" accesskey="p" rel="previous">Function Basics</a>, Up: <a href="Functions.html#Functions" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Functions-for-C_002b_002b.html b/share/doc/gccint/Functions-for-C_002b_002b.html
new file mode 100644
index 0000000..a962c81
--- /dev/null
+++ b/share/doc/gccint/Functions-for-C_002b_002b.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Functions for C++</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Functions for C++">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Functions for C++">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" rel="next" title="Statements for C and C++">
+<link href="Classes.html#Classes" rel="previous" title="Classes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Functions-for-C_002b_002b"></a>
+<div class="header">
+<p>
+Next: <a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" accesskey="n" rel="next">Statements for C and C++</a>, Previous: <a href="Classes.html#Classes" accesskey="p" rel="previous">Classes</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Functions-for-C_002b_002b-1"></a>
+<h4 class="subsection">11.10.4 Functions for C++</h4>
+<a name="index-function-1"></a>
+<a name="index-FUNCTION_005fDECL-1"></a>
+<a name="index-OVERLOAD"></a>
+<a name="index-OVL_005fCURRENT"></a>
+<a name="index-OVL_005fNEXT"></a>
+
+<p>A function is represented by a <code>FUNCTION_DECL</code> node. A set of
+overloaded functions is sometimes represented by an <code>OVERLOAD</code> node.
+</p>
+<p>An <code>OVERLOAD</code> node is not a declaration, so none of the
+&lsquo;<samp>DECL_</samp>&rsquo; macros should be used on an <code>OVERLOAD</code>. An
+<code>OVERLOAD</code> node is similar to a <code>TREE_LIST</code>. Use
+<code>OVL_CURRENT</code> to get the function associated with an
+<code>OVERLOAD</code> node; use <code>OVL_NEXT</code> to get the next
+<code>OVERLOAD</code> node in the list of overloaded functions. The macros
+<code>OVL_CURRENT</code> and <code>OVL_NEXT</code> are actually polymorphic; you can
+use them to work with <code>FUNCTION_DECL</code> nodes as well as with
+overloads. In the case of a <code>FUNCTION_DECL</code>, <code>OVL_CURRENT</code>
+will always return the function itself, and <code>OVL_NEXT</code> will always
+be <code>NULL_TREE</code>.
+</p>
+<p>To determine the scope of a function, you can use the
+<code>DECL_CONTEXT</code> macro. This macro will return the class
+(either a <code>RECORD_TYPE</code> or a <code>UNION_TYPE</code>) or namespace (a
+<code>NAMESPACE_DECL</code>) of which the function is a member. For a virtual
+function, this macro returns the class in which the function was
+actually defined, not the base class in which the virtual declaration
+occurred.
+</p>
+<p>If a friend function is defined in a class scope, the
+<code>DECL_FRIEND_CONTEXT</code> macro can be used to determine the class in
+which it was defined. For example, in
+</p><div class="smallexample">
+<pre class="smallexample">class C { friend void f() {} };
+</pre></div>
+<p>the <code>DECL_CONTEXT</code> for <code>f</code> will be the
+<code>global_namespace</code>, but the <code>DECL_FRIEND_CONTEXT</code> will be the
+<code>RECORD_TYPE</code> for <code>C</code>.
+</p>
+
+<p>The following macros and functions can be used on a <code>FUNCTION_DECL</code>:
+</p><dl compact="compact">
+<dt><code>DECL_MAIN_P</code>
+<a name="index-DECL_005fMAIN_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a function that is the program entry point
+<code>::code</code>.
+</p>
+</dd>
+<dt><code>DECL_LOCAL_FUNCTION_P</code>
+<a name="index-DECL_005fLOCAL_005fFUNCTION_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function was declared at block scope, even
+though it has a global scope.
+</p>
+</dd>
+<dt><code>DECL_ANTICIPATED</code>
+<a name="index-DECL_005fANTICIPATED"></a>
+</dt>
+<dd><p>This predicate holds if the function is a built-in function but its
+prototype is not yet explicitly declared.
+</p>
+</dd>
+<dt><code>DECL_EXTERN_C_FUNCTION_P</code>
+<a name="index-DECL_005fEXTERN_005fC_005fFUNCTION_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is declared as an
+&lsquo;<code>extern &quot;C&quot;</code>&rsquo; function.
+</p>
+</dd>
+<dt><code>DECL_LINKONCE_P</code>
+<a name="index-DECL_005fLINKONCE_005fP"></a>
+</dt>
+<dd><p>This macro holds if multiple copies of this function may be emitted in
+various translation units. It is the responsibility of the linker to
+merge the various copies. Template instantiations are the most common
+example of functions for which <code>DECL_LINKONCE_P</code> holds; G++
+instantiates needed templates in all translation units which require them,
+and then relies on the linker to remove duplicate instantiations.
+</p>
+<p>FIXME: This macro is not yet implemented.
+</p>
+</dd>
+<dt><code>DECL_FUNCTION_MEMBER_P</code>
+<a name="index-DECL_005fFUNCTION_005fMEMBER_005fP"></a>
+</dt>
+<dd><p>This macro holds if the function is a member of a class, rather than a
+member of a namespace.
+</p>
+</dd>
+<dt><code>DECL_STATIC_FUNCTION_P</code>
+<a name="index-DECL_005fSTATIC_005fFUNCTION_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function a static member function.
+</p>
+</dd>
+<dt><code>DECL_NONSTATIC_MEMBER_FUNCTION_P</code>
+<a name="index-DECL_005fNONSTATIC_005fMEMBER_005fFUNCTION_005fP"></a>
+</dt>
+<dd><p>This macro holds for a non-static member function.
+</p>
+</dd>
+<dt><code>DECL_CONST_MEMFUNC_P</code>
+<a name="index-DECL_005fCONST_005fMEMFUNC_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a <code>const</code>-member function.
+</p>
+</dd>
+<dt><code>DECL_VOLATILE_MEMFUNC_P</code>
+<a name="index-DECL_005fVOLATILE_005fMEMFUNC_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a <code>volatile</code>-member function.
+</p>
+</dd>
+<dt><code>DECL_CONSTRUCTOR_P</code>
+<a name="index-DECL_005fCONSTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This macro holds if the function is a constructor.
+</p>
+</dd>
+<dt><code>DECL_NONCONVERTING_P</code>
+<a name="index-DECL_005fNONCONVERTING_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the constructor is a non-converting constructor.
+</p>
+</dd>
+<dt><code>DECL_COMPLETE_CONSTRUCTOR_P</code>
+<a name="index-DECL_005fCOMPLETE_005fCONSTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a function which is a constructor for an object
+of a complete type.
+</p>
+</dd>
+<dt><code>DECL_BASE_CONSTRUCTOR_P</code>
+<a name="index-DECL_005fBASE_005fCONSTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a function which is a constructor for a base
+class sub-object.
+</p>
+</dd>
+<dt><code>DECL_COPY_CONSTRUCTOR_P</code>
+<a name="index-DECL_005fCOPY_005fCONSTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a function which is a copy-constructor.
+</p>
+</dd>
+<dt><code>DECL_DESTRUCTOR_P</code>
+<a name="index-DECL_005fDESTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This macro holds if the function is a destructor.
+</p>
+</dd>
+<dt><code>DECL_COMPLETE_DESTRUCTOR_P</code>
+<a name="index-DECL_005fCOMPLETE_005fDESTRUCTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is the destructor for an object a
+complete type.
+</p>
+</dd>
+<dt><code>DECL_OVERLOADED_OPERATOR_P</code>
+<a name="index-DECL_005fOVERLOADED_005fOPERATOR_005fP"></a>
+</dt>
+<dd><p>This macro holds if the function is an overloaded operator.
+</p>
+</dd>
+<dt><code>DECL_CONV_FN_P</code>
+<a name="index-DECL_005fCONV_005fFN_005fP"></a>
+</dt>
+<dd><p>This macro holds if the function is a type-conversion operator.
+</p>
+</dd>
+<dt><code>DECL_GLOBAL_CTOR_P</code>
+<a name="index-DECL_005fGLOBAL_005fCTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is a file-scope initialization
+function.
+</p>
+</dd>
+<dt><code>DECL_GLOBAL_DTOR_P</code>
+<a name="index-DECL_005fGLOBAL_005fDTOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is a file-scope finalization
+function.
+</p>
+</dd>
+<dt><code>DECL_THUNK_P</code>
+<a name="index-DECL_005fTHUNK_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is a thunk.
+</p>
+<p>These functions represent stub code that adjusts the <code>this</code> pointer
+and then jumps to another function. When the jumped-to function
+returns, control is transferred directly to the caller, without
+returning to the thunk. The first parameter to the thunk is always the
+<code>this</code> pointer; the thunk should add <code>THUNK_DELTA</code> to this
+value. (The <code>THUNK_DELTA</code> is an <code>int</code>, not an
+<code>INTEGER_CST</code>.)
+</p>
+<p>Then, if <code>THUNK_VCALL_OFFSET</code> (an <code>INTEGER_CST</code>) is nonzero
+the adjusted <code>this</code> pointer must be adjusted again. The complete
+calculation is given by the following pseudo-code:
+</p>
+<div class="smallexample">
+<pre class="smallexample">this += THUNK_DELTA
+if (THUNK_VCALL_OFFSET)
+ this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
+</pre></div>
+
+<p>Finally, the thunk should jump to the location given
+by <code>DECL_INITIAL</code>; this will always be an expression for the
+address of a function.
+</p>
+</dd>
+<dt><code>DECL_NON_THUNK_FUNCTION_P</code>
+<a name="index-DECL_005fNON_005fTHUNK_005fFUNCTION_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function is <em>not</em> a thunk function.
+</p>
+</dd>
+<dt><code>GLOBAL_INIT_PRIORITY</code>
+<a name="index-GLOBAL_005fINIT_005fPRIORITY"></a>
+</dt>
+<dd><p>If either <code>DECL_GLOBAL_CTOR_P</code> or <code>DECL_GLOBAL_DTOR_P</code> holds,
+then this gives the initialization priority for the function. The
+linker will arrange that all functions for which
+<code>DECL_GLOBAL_CTOR_P</code> holds are run in increasing order of priority
+before <code>main</code> is called. When the program exits, all functions for
+which <code>DECL_GLOBAL_DTOR_P</code> holds are run in the reverse order.
+</p>
+</dd>
+<dt><code>TYPE_RAISES_EXCEPTIONS</code>
+<a name="index-TYPE_005fRAISES_005fEXCEPTIONS"></a>
+</dt>
+<dd><p>This macro returns the list of exceptions that a (member-)function can
+raise. The returned list, if non <code>NULL</code>, is comprised of nodes
+whose <code>TREE_VALUE</code> represents a type.
+</p>
+</dd>
+<dt><code>TYPE_NOTHROW_P</code>
+<a name="index-TYPE_005fNOTHROW_005fP"></a>
+</dt>
+<dd><p>This predicate holds when the exception-specification of its arguments
+is of the form &lsquo;<code>()</code>&rsquo;.
+</p>
+</dd>
+<dt><code>DECL_ARRAY_DELETE_OPERATOR_P</code>
+<a name="index-DECL_005fARRAY_005fDELETE_005fOPERATOR_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the function an overloaded
+<code>operator delete[]</code>.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b" accesskey="n" rel="next">Statements for C and C++</a>, Previous: <a href="Classes.html#Classes" accesskey="p" rel="previous">Classes</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Functions.html b/share/doc/gccint/Functions.html
new file mode 100644
index 0000000..c6f6958
--- /dev/null
+++ b/share/doc/gccint/Functions.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Functions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Functions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Functions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Function-Basics.html#Function-Basics" rel="next" title="Function Basics">
+<link href="OpenACC.html#OpenACC" rel="previous" title="OpenACC">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Functions"></a>
+<div class="header">
+<p>
+Next: <a href="Language_002ddependent-trees.html#Language_002ddependent-trees" accesskey="n" rel="next">Language-dependent trees</a>, Previous: <a href="Statements.html#Statements" accesskey="p" rel="previous">Statements</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Functions-1"></a>
+<h3 class="section">11.8 Functions</h3>
+<a name="index-function"></a>
+<a name="index-FUNCTION_005fDECL"></a>
+
+<p>A function is represented by a <code>FUNCTION_DECL</code> node. It stores
+the basic pieces of the function such as body, parameters, and return
+type as well as information on the surrounding context, visibility,
+and linkage.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Function-Basics.html#Function-Basics" accesskey="1">Function Basics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Function names, body, and parameters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Properties.html#Function-Properties" accesskey="2">Function Properties</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Context, linkage, etc.
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Funding.html b/share/doc/gccint/Funding.html
new file mode 100644
index 0000000..f1fbab2
--- /dev/null
+++ b/share/doc/gccint/Funding.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Funding</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Funding">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Funding">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="GNU-Project.html#GNU-Project" rel="next" title="GNU Project">
+<link href="Guidelines-for-Options.html#Guidelines-for-Options" rel="previous" title="Guidelines for Options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Funding"></a>
+<div class="header">
+<p>
+Next: <a href="GNU-Project.html#GNU-Project" accesskey="n" rel="next">GNU Project</a>, Previous: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="p" rel="previous">User Experience Guidelines</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Funding-Free-Software"></a>
+<h2 class="unnumbered">Funding Free Software</h2>
+
+<p>If you want to have more free software a few years from now, it makes
+sense for you to help encourage people to contribute funds for its
+development. The most effective approach known is to encourage
+commercial redistributors to donate.
+</p>
+<p>Users of free software systems can boost the pace of development by
+encouraging for-a-fee distributors to donate part of their selling price
+to free software developers&mdash;the Free Software Foundation, and others.
+</p>
+<p>The way to convince distributors to do this is to demand it and expect
+it from them. So when you compare distributors, judge them partly by
+how much they give to free software development. Show distributors
+they must compete to be the one who gives the most.
+</p>
+<p>To make this approach work, you must insist on numbers that you can
+compare, such as, &ldquo;We will donate ten dollars to the Frobnitz project
+for each disk sold.&rdquo; Don&rsquo;t be satisfied with a vague promise, such as
+&ldquo;A portion of the profits are donated,&rdquo; since it doesn&rsquo;t give a basis
+for comparison.
+</p>
+<p>Even a precise fraction &ldquo;of the profits from this disk&rdquo; is not very
+meaningful, since creative accounting and unrelated business decisions
+can greatly alter what fraction of the sales price counts as profit.
+If the price you pay is $50, ten percent of the profit is probably
+less than a dollar; it might be a few cents, or nothing at all.
+</p>
+<p>Some redistributors do development work themselves. This is useful too;
+but to keep everyone honest, you need to inquire how much they do, and
+what kind. Some kinds of development make much more long-term
+difference than others. For example, maintaining a separate version of
+a program contributes very little; maintaining the standard version of a
+program for the whole community contributes much. Easy new ports
+contribute little, since someone else would surely do them; difficult
+ports such as adding a new CPU to the GNU Compiler Collection contribute more;
+major new features or packages contribute the most.
+</p>
+<p>By establishing the idea that supporting further development is &ldquo;the
+proper thing to do&rdquo; when distributing free software for a fee, we can
+assure a steady flow of resources into making more free software.
+</p>
+<div class="display">
+<pre class="display">Copyright &copy; 1994 Free Software Foundation, Inc.
+Verbatim copying and redistribution of this section is permitted
+without royalty; alteration is not permitted.
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GNU-Project.html#GNU-Project" accesskey="n" rel="next">GNU Project</a>, Previous: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="p" rel="previous">User Experience Guidelines</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GENERIC.html b/share/doc/gccint/GENERIC.html
new file mode 100644
index 0000000..bf2f5c5
--- /dev/null
+++ b/share/doc/gccint/GENERIC.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GENERIC</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GENERIC">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GENERIC">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Deficiencies.html#Deficiencies" rel="next" title="Deficiencies">
+<link href="Guidelines-for-using-poly_005fint.html#Guidelines-for-using-poly_005fint" rel="previous" title="Guidelines for using poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GENERIC"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE.html#GIMPLE" accesskey="n" rel="next">GIMPLE</a>, Previous: <a href="poly_005fint.html#poly_005fint" accesskey="p" rel="previous">poly_int</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GENERIC-1"></a>
+<h2 class="chapter">11 GENERIC</h2>
+<a name="index-GENERIC-1"></a>
+
+<p>The purpose of GENERIC is simply to provide a
+language-independent way of representing an entire function in
+trees. To this end, it was necessary to add a few new tree codes
+to the back end, but almost everything was already there. If you
+can express it with the codes in <code>gcc/tree.def</code>, it&rsquo;s
+GENERIC.
+</p>
+<p>Early on, there was a great deal of debate about how to think
+about statements in a tree IL. In GENERIC, a statement is
+defined as any expression whose value, if any, is ignored. A
+statement will always have <code>TREE_SIDE_EFFECTS</code> set (or it
+will be discarded), but a non-statement expression may also have
+side effects. A <code>CALL_EXPR</code>, for instance.
+</p>
+<p>It would be possible for some local optimizations to work on the
+GENERIC form of a function; indeed, the adapted tree inliner
+works fine on GENERIC, but the current compiler performs inlining
+after lowering to GIMPLE (a restricted form described in the next
+section). Indeed, currently the frontends perform this lowering
+before handing off to <code>tree_rest_of_compilation</code>, but this
+seems inelegant.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Deficiencies.html#Deficiencies" accesskey="1">Deficiencies</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Topics not yet covered in this document.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tree-overview.html#Tree-overview" accesskey="2">Tree overview</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">All about <code>tree</code>s.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Types.html#Types" accesskey="3">Types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fundamental and aggregate types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Declarations.html#Declarations" accesskey="4">Declarations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Type declarations and variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Attributes.html#Attributes" accesskey="5">Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaration and type attributes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Expression-trees.html#Expression-trees" accesskey="6">Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operating on data.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statements.html#Statements" accesskey="7">Statements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Control flow and related trees.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Functions.html#Functions" accesskey="8">Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Function bodies, linkage, and other aspects.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Language_002ddependent-trees.html#Language_002ddependent-trees" accesskey="9">Language-dependent trees</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Topics and trees specific to language front ends.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees">C and C++ Trees</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Trees specific to C and C++.
+</td></tr>
+</table>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE.html#GIMPLE" accesskey="n" rel="next">GIMPLE</a>, Previous: <a href="poly_005fint.html#poly_005fint" accesskey="p" rel="previous">poly_int</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GGC-Roots.html b/share/doc/gccint/GGC-Roots.html
new file mode 100644
index 0000000..ae00cf8
--- /dev/null
+++ b/share/doc/gccint/GGC-Roots.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GGC Roots</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GGC Roots">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GGC Roots">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="Files.html#Files" rel="next" title="Files">
+<link href="User-GC.html#User-GC" rel="previous" title="User GC">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GGC-Roots"></a>
+<div class="header">
+<p>
+Next: <a href="Files.html#Files" accesskey="n" rel="next">Files</a>, Previous: <a href="User-GC.html#User-GC" accesskey="p" rel="previous">User GC</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Marking-Roots-for-the-Garbage-Collector"></a>
+<h3 class="section">23.4 Marking Roots for the Garbage Collector</h3>
+<a name="index-roots_002c-marking"></a>
+<a name="index-marking-roots"></a>
+
+<p>In addition to keeping track of types, the type machinery also locates
+the global variables (<em>roots</em>) that the garbage collector starts
+at. Roots must be declared using one of the following syntaxes:
+</p>
+<ul>
+<li> <code>extern GTY(([<var>options</var>])) <var>type</var> <var>name</var>;</code>
+</li><li> <code>static GTY(([<var>options</var>])) <var>type</var> <var>name</var>;</code>
+</li></ul>
+<p>The syntax
+</p><ul>
+<li> <code>GTY(([<var>options</var>])) <var>type</var> <var>name</var>;</code>
+</li></ul>
+<p>is <em>not</em> accepted. There should be an <code>extern</code> declaration
+of such a variable in a header somewhere&mdash;mark that, not the
+definition. Or, if the variable is only used in one file, make it
+<code>static</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE-API.html b/share/doc/gccint/GIMPLE-API.html
new file mode 100644
index 0000000..4cecb7b
--- /dev/null
+++ b/share/doc/gccint/GIMPLE-API.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE API</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE API">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE API">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Match-and-Simplify.html#Match-and-Simplify" rel="up" title="Match and Simplify">
+<link href="The-Language.html#The-Language" rel="next" title="The Language">
+<link href="Match-and-Simplify.html#Match-and-Simplify" rel="previous" title="Match and Simplify">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE-API"></a>
+<div class="header">
+<p>
+Next: <a href="The-Language.html#The-Language" accesskey="n" rel="next">The Language</a>, Up: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="u" rel="up">Match and Simplify</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE-API-1"></a>
+<h3 class="section">26.1 GIMPLE API</h3>
+<a name="index-GIMPLE-API"></a>
+
+<dl>
+<dt><a name="index-gimple_005fsimplify"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum tree_code, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dt><a name="index-gimple_005fsimplify-1"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum tree_code, tree, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dt><a name="index-gimple_005fsimplify-2"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum tree_code, tree, tree, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dt><a name="index-gimple_005fsimplify-3"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum built_in_function, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dt><a name="index-gimple_005fsimplify-4"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum built_in_function, tree, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dt><a name="index-gimple_005fsimplify-5"></a>GIMPLE function: <em>tree</em> <strong>gimple_simplify</strong> <em>(enum built_in_function, tree, tree, tree, tree, gimple_seq *, tree (*)(tree))</em></dt>
+<dd><p>The main GIMPLE API entry to the expression simplifications mimicking
+that of the GENERIC fold_{unary,binary,ternary} functions.
+</p></dd></dl>
+
+<p>thus providing n-ary overloads for operation or function. The
+additional arguments are a gimple_seq where built statements are
+inserted on (if <code>NULL</code> then simplifications requiring new statements
+are not performed) and a valueization hook that can be used to
+tie simplifications to a SSA lattice.
+</p>
+<p>In addition to those APIs <code>fold_stmt</code> is overloaded with
+a valueization hook:
+</p>
+<dl>
+<dt><a name="index-_0028gimple_005fstmt_005fiterator"></a>bool: <em>fold_stmt</em> <strong>(gimple_stmt_iterator</strong> <em>*, tree (*)(tree));</em></dt>
+</dl>
+
+
+<p>On top of these a <code>fold_buildN</code>-like API for GIMPLE is introduced:
+</p>
+<dl>
+<dt><a name="index-gimple_005fbuild"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum tree_code, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fbuild-1"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum tree_code, tree, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fbuild-2"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum tree_code, tree, tree, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fbuild-3"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum built_in_function, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fbuild-4"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum built_in_function, tree, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fbuild-5"></a>GIMPLE function: <em>tree</em> <strong>gimple_build</strong> <em>(gimple_seq *, location_t, enum built_in_function, tree, tree, tree, tree, tree (*valueize) (tree) = NULL);</em></dt>
+<dt><a name="index-gimple_005fconvert"></a>GIMPLE function: <em>tree</em> <strong>gimple_convert</strong> <em>(gimple_seq *, location_t, tree, tree);</em></dt>
+</dl>
+
+<p>which is supposed to replace <code>force_gimple_operand (fold_buildN (...), ...)</code>
+and calls to <code>fold_convert</code>. Overloads without the <code>location_t</code>
+argument exist. Built statements are inserted on the provided sequence
+and simplification is performed using the optional valueization hook.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="The-Language.html#The-Language" accesskey="n" rel="next">The Language</a>, Up: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="u" rel="up">Match and Simplify</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE-Exception-Handling.html b/share/doc/gccint/GIMPLE-Exception-Handling.html
new file mode 100644
index 0000000..d8fe1a3
--- /dev/null
+++ b/share/doc/gccint/GIMPLE-Exception-Handling.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE Exception Handling</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE Exception Handling">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE Exception Handling">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Temporaries.html#Temporaries" rel="next" title="Temporaries">
+<link href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" rel="previous" title="GIMPLE instruction set">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE-Exception-Handling"></a>
+<div class="header">
+<p>
+Next: <a href="Temporaries.html#Temporaries" accesskey="n" rel="next">Temporaries</a>, Previous: <a href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" accesskey="p" rel="previous">GIMPLE instruction set</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Exception-Handling-1"></a>
+<h3 class="section">12.4 Exception Handling</h3>
+<a name="index-GIMPLE-Exception-Handling"></a>
+
+<p>Other exception handling constructs are represented using
+<code>GIMPLE_TRY_CATCH</code>. <code>GIMPLE_TRY_CATCH</code> has two operands. The
+first operand is a sequence of statements to execute. If executing
+these statements does not throw an exception, then the second operand
+is ignored. Otherwise, if an exception is thrown, then the second
+operand of the <code>GIMPLE_TRY_CATCH</code> is checked. The second
+operand may have the following forms:
+</p>
+<ol>
+<li> A sequence of statements to execute. When an exception occurs,
+these statements are executed, and then the exception is rethrown.
+
+</li><li> A sequence of <code>GIMPLE_CATCH</code> statements. Each
+<code>GIMPLE_CATCH</code> has a list of applicable exception types and
+handler code. If the thrown exception matches one of the caught
+types, the associated handler code is executed. If the handler
+code falls off the bottom, execution continues after the original
+<code>GIMPLE_TRY_CATCH</code>.
+
+</li><li> A <code>GIMPLE_EH_FILTER</code> statement. This has a list of
+permitted exception types, and code to handle a match failure. If the
+thrown exception does not match one of the allowed types, the
+associated match failure code is executed. If the thrown exception
+does match, it continues unwinding the stack looking for the next
+handler.
+
+</li></ol>
+
+<p>Currently throwing an exception is not directly represented in
+GIMPLE, since it is implemented by calling a function. At some
+point in the future we will want to add some way to express that
+the call will throw an exception of a known type.
+</p>
+<p>Just before running the optimizers, the compiler lowers the
+high-level EH constructs above into a set of &lsquo;<samp>goto</samp>&rsquo;s, magic
+labels, and EH regions. Continuing to unwind at the end of a
+cleanup is represented with a <code>GIMPLE_RESX</code>.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Temporaries.html#Temporaries" accesskey="n" rel="next">Temporaries</a>, Previous: <a href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" accesskey="p" rel="previous">GIMPLE instruction set</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE-Tests.html b/share/doc/gccint/GIMPLE-Tests.html
new file mode 100644
index 0000000..c739223
--- /dev/null
+++ b/share/doc/gccint/GIMPLE-Tests.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE Tests</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE Tests">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE Tests">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="RTL-Tests.html#RTL-Tests" rel="next" title="RTL Tests">
+<link href="Torture-Tests.html#Torture-Tests" rel="previous" title="Torture Tests">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE-Tests"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-Tests.html#RTL-Tests" accesskey="n" rel="next">RTL Tests</a>, Previous: <a href="Torture-Tests.html#Torture-Tests" accesskey="p" rel="previous">Torture Tests</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-GIMPLE-passes"></a>
+<h3 class="section">7.10 Support for testing GIMPLE passes</h3>
+
+<p>As of gcc 7, C functions can be tagged with <code>__GIMPLE</code> to indicate
+that the function body will be GIMPLE, rather than C. The compiler requires
+the option <samp>-fgimple</samp> to enable this functionality. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-do compile } */
+/* { dg-options &quot;-O -fgimple&quot; } */
+
+void __GIMPLE (startwith (&quot;dse2&quot;)) foo ()
+{
+ int a;
+
+bb_2:
+ if (a &gt; 4)
+ goto bb_3;
+ else
+ goto bb_4;
+
+bb_3:
+ a_2 = 10;
+ goto bb_5;
+
+bb_4:
+ a_3 = 20;
+
+bb_5:
+ a_1 = __PHI (bb_3: a_2, bb_4: a_3);
+ a_4 = a_1 + 4;
+
+ return;
+}
+</pre></div>
+
+<p>The <code>startwith</code> argument indicates at which pass to begin.
+</p>
+<p>Use the dump modifier <code>-gimple</code> (e.g. <samp>-fdump-tree-all-gimple</samp>)
+to make tree dumps more closely follow the format accepted by the GIMPLE
+parser.
+</p>
+<p>Example DejaGnu tests of GIMPLE can be seen in the source tree at
+<samp>gcc/testsuite/gcc.dg/gimplefe-*.c</samp>.
+</p>
+<p>The <code>__GIMPLE</code> parser is integrated with the C tokenizer and
+preprocessor, so it should be possible to use macros to build out
+test coverage.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE-instruction-set.html b/share/doc/gccint/GIMPLE-instruction-set.html
new file mode 100644
index 0000000..9ff82a1
--- /dev/null
+++ b/share/doc/gccint/GIMPLE-instruction-set.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE instruction set</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE instruction set">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE instruction set">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling" rel="next" title="GIMPLE Exception Handling">
+<link href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" rel="previous" title="Class hierarchy of GIMPLE statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE-instruction-set"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling" accesskey="n" rel="next">GIMPLE Exception Handling</a>, Previous: <a href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" accesskey="p" rel="previous">Class hierarchy of GIMPLE statements</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE-instruction-set-1"></a>
+<h3 class="section">12.3 GIMPLE instruction set</h3>
+<a name="index-GIMPLE-instruction-set"></a>
+
+<p>The following table briefly describes the GIMPLE instruction set.
+</p>
+<table>
+<tr><td>Instruction</td><td>High GIMPLE</td><td>Low GIMPLE</td></tr>
+<tr><td><code>GIMPLE_ASM</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_ASSIGN</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_BIND</code></td><td>x</td><td></td></tr>
+<tr><td><code>GIMPLE_CALL</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_CATCH</code></td><td>x</td><td></td></tr>
+<tr><td><code>GIMPLE_COND</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_DEBUG</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_EH_FILTER</code></td><td>x</td><td></td></tr>
+<tr><td><code>GIMPLE_GOTO</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_LABEL</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_NOP</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_ATOMIC_LOAD</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_ATOMIC_STORE</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_CONTINUE</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_CRITICAL</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_FOR</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_MASTER</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_ORDERED</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_PARALLEL</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_RETURN</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_SECTION</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_SECTIONS</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_SECTIONS_SWITCH</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_OMP_SINGLE</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_PHI</code></td><td></td><td>x</td></tr>
+<tr><td><code>GIMPLE_RESX</code></td><td></td><td>x</td></tr>
+<tr><td><code>GIMPLE_RETURN</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_SWITCH</code></td><td>x</td><td>x</td></tr>
+<tr><td><code>GIMPLE_TRY</code></td><td>x</td><td></td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE-sequences.html b/share/doc/gccint/GIMPLE-sequences.html
new file mode 100644
index 0000000..b2fac59
--- /dev/null
+++ b/share/doc/gccint/GIMPLE-sequences.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE sequences</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE sequences">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE sequences">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Sequence-iterators.html#Sequence-iterators" rel="next" title="Sequence iterators">
+<link href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR" rel="previous" title="GIMPLE_WITH_CLEANUP_EXPR">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE-sequences"></a>
+<div class="header">
+<p>
+Next: <a href="Sequence-iterators.html#Sequence-iterators" accesskey="n" rel="next">Sequence iterators</a>, Previous: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="p" rel="previous">Tuple specific accessors</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE-sequences-1"></a>
+<h3 class="section">12.9 GIMPLE sequences</h3>
+<a name="index-GIMPLE-sequences"></a>
+
+<p>GIMPLE sequences are the tuple equivalent of <code>STATEMENT_LIST</code>&rsquo;s
+used in <code>GENERIC</code>. They are used to chain statements together, and
+when used in conjunction with sequence iterators, provide a
+framework for iterating through statements.
+</p>
+<p>GIMPLE sequences are of type struct <code>gimple_sequence</code>, but are more
+commonly passed by reference to functions dealing with sequences.
+The type for a sequence pointer is <code>gimple_seq</code> which is the same
+as struct <code>gimple_sequence</code> *. When declaring a local sequence,
+you can define a local variable of type struct <code>gimple_sequence</code>.
+When declaring a sequence allocated on the garbage collected
+heap, use the function <code>gimple_seq_alloc</code> documented below.
+</p>
+<p>There are convenience functions for iterating through sequences
+in the section entitled Sequence Iterators.
+</p>
+<p>Below is a list of functions to manipulate and query sequences.
+</p>
+<dl>
+<dt><a name="index-gimple_005fseq_005fadd_005fstmt"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_add_stmt</strong> <em>(gimple_seq *seq, gimple g)</em></dt>
+<dd><p>Link a gimple statement to the end of the sequence *<code>SEQ</code> if <code>G</code> is
+not <code>NULL</code>. If *<code>SEQ</code> is <code>NULL</code>, allocate a sequence before linking.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fadd_005fseq"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_add_seq</strong> <em>(gimple_seq *dest, gimple_seq src)</em></dt>
+<dd><p>Append sequence <code>SRC</code> to the end of sequence *<code>DEST</code> if <code>SRC</code> is not
+<code>NULL</code>. If *<code>DEST</code> is <code>NULL</code>, allocate a new sequence before
+appending.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fdeep_005fcopy"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_seq_deep_copy</strong> <em>(gimple_seq src)</em></dt>
+<dd><p>Perform a deep copy of sequence <code>SRC</code> and return the result.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005freverse"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_seq_reverse</strong> <em>(gimple_seq seq)</em></dt>
+<dd><p>Reverse the order of the statements in the sequence <code>SEQ</code>. Return
+<code>SEQ</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005ffirst"></a>GIMPLE function: <em>gimple</em> <strong>gimple_seq_first</strong> <em>(gimple_seq s)</em></dt>
+<dd><p>Return the first statement in sequence <code>S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005flast"></a>GIMPLE function: <em>gimple</em> <strong>gimple_seq_last</strong> <em>(gimple_seq s)</em></dt>
+<dd><p>Return the last statement in sequence <code>S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fset_005flast"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_set_last</strong> <em>(gimple_seq s, gimple last)</em></dt>
+<dd><p>Set the last statement in sequence <code>S</code> to the statement in <code>LAST</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fset_005ffirst"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_set_first</strong> <em>(gimple_seq s, gimple first)</em></dt>
+<dd><p>Set the first statement in sequence <code>S</code> to the statement in <code>FIRST</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005finit"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_init</strong> <em>(gimple_seq s)</em></dt>
+<dd><p>Initialize sequence <code>S</code> to an empty sequence.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005falloc"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_seq_alloc</strong> <em>(void)</em></dt>
+<dd><p>Allocate a new sequence in the garbage collected store and return
+it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fcopy"></a>GIMPLE function: <em>void</em> <strong>gimple_seq_copy</strong> <em>(gimple_seq dest, gimple_seq src)</em></dt>
+<dd><p>Copy the sequence <code>SRC</code> into the sequence <code>DEST</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fempty_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_seq_empty_p</strong> <em>(gimple_seq s)</em></dt>
+<dd><p>Return true if the sequence <code>S</code> is empty.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-bb_005fseq"></a>GIMPLE function: <em>gimple_seq</em> <strong>bb_seq</strong> <em>(basic_block bb)</em></dt>
+<dd><p>Returns the sequence of statements in <code>BB</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-set_005fbb_005fseq"></a>GIMPLE function: <em>void</em> <strong>set_bb_seq</strong> <em>(basic_block bb, gimple_seq seq)</em></dt>
+<dd><p>Sets the sequence of statements in <code>BB</code> to <code>SEQ</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fseq_005fsingleton_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_seq_singleton_p</strong> <em>(gimple_seq seq)</em></dt>
+<dd><p>Determine whether <code>SEQ</code> contains exactly one statement.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sequence-iterators.html#Sequence-iterators" accesskey="n" rel="next">Sequence iterators</a>, Previous: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="p" rel="previous">Tuple specific accessors</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE.html b/share/doc/gccint/GIMPLE.html
new file mode 100644
index 0000000..0b11b8a
--- /dev/null
+++ b/share/doc/gccint/GIMPLE.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Tuple-representation.html#Tuple-representation" rel="next" title="Tuple representation">
+<link href="C_002b_002b-Expressions.html#C_002b_002b-Expressions" rel="previous" title="C++ Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE"></a>
+<div class="header">
+<p>
+Next: <a href="Tree-SSA.html#Tree-SSA" accesskey="n" rel="next">Tree SSA</a>, Previous: <a href="GENERIC.html#GENERIC" accesskey="p" rel="previous">GENERIC</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE-1"></a>
+<h2 class="chapter">12 GIMPLE</h2>
+<a name="index-GIMPLE-2"></a>
+
+<p>GIMPLE is a three-address representation derived from GENERIC by
+breaking down GENERIC expressions into tuples of no more than 3
+operands (with some exceptions like function calls). GIMPLE was
+heavily influenced by the SIMPLE IL used by the McCAT compiler
+project at McGill University, though we have made some different
+choices. For one thing, SIMPLE doesn&rsquo;t support <code>goto</code>.
+</p>
+<p>Temporaries are introduced to hold intermediate values needed to
+compute complex expressions. Additionally, all the control
+structures used in GENERIC are lowered into conditional jumps,
+lexical scopes are removed and exception regions are converted
+into an on the side exception region tree.
+</p>
+<p>The compiler pass which converts GENERIC into GIMPLE is referred to as
+the &lsquo;<samp>gimplifier</samp>&rsquo;. The gimplifier works recursively, generating
+GIMPLE tuples out of the original GENERIC expressions.
+</p>
+<p>One of the early implementation strategies used for the GIMPLE
+representation was to use the same internal data structures used
+by front ends to represent parse trees. This simplified
+implementation because we could leverage existing functionality
+and interfaces. However, GIMPLE is a much more restrictive
+representation than abstract syntax trees (AST), therefore it
+does not require the full structural complexity provided by the
+main tree data structure.
+</p>
+<p>The GENERIC representation of a function is stored in the
+<code>DECL_SAVED_TREE</code> field of the associated <code>FUNCTION_DECL</code>
+tree node. It is converted to GIMPLE by a call to
+<code>gimplify_function_tree</code>.
+</p>
+<p>If a front end wants to include language-specific tree codes in the tree
+representation which it provides to the back end, it must provide a
+definition of <code>LANG_HOOKS_GIMPLIFY_EXPR</code> which knows how to
+convert the front end trees to GIMPLE. Usually such a hook will involve
+much of the same code for expanding front end trees to RTL. This function
+can return fully lowered GIMPLE, or it can return GENERIC trees and let the
+main gimplifier lower them the rest of the way; this is often simpler.
+GIMPLE that is not fully lowered is known as &ldquo;High GIMPLE&rdquo; and
+consists of the IL before the pass <code>pass_lower_cf</code>. High GIMPLE
+contains some container statements like lexical scopes
+(represented by <code>GIMPLE_BIND</code>) and nested expressions (e.g.,
+<code>GIMPLE_TRY</code>), while &ldquo;Low GIMPLE&rdquo; exposes all of the
+implicit jumps for control and exception expressions directly in
+the IL and EH region trees.
+</p>
+<p>The C and C++ front ends currently convert directly from front end
+trees to GIMPLE, and hand that off to the back end rather than first
+converting to GENERIC. Their gimplifier hooks know about all the
+<code>_STMT</code> nodes and how to convert them to GENERIC forms. There
+was some work done on a genericization pass which would run first, but
+the existence of <code>STMT_EXPR</code> meant that in order to convert all
+of the C statements into GENERIC equivalents would involve walking the
+entire tree anyway, so it was simpler to lower all the way. This
+might change in the future if someone writes an optimization pass
+which would work better with higher-level trees, but currently the
+optimizers all expect GIMPLE.
+</p>
+<p>You can request to dump a C-like representation of the GIMPLE form
+with the flag <samp>-fdump-tree-gimple</samp>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Tuple-representation.html#Tuple-representation" accesskey="1">Tuple representation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" accesskey="2">Class hierarchy of GIMPLE statements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE-instruction-set.html#GIMPLE-instruction-set" accesskey="3">GIMPLE instruction set</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling" accesskey="4">GIMPLE Exception Handling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Temporaries.html#Temporaries" accesskey="5">Temporaries</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Operands.html#Operands" accesskey="6">Operands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements" accesskey="7">Manipulating GIMPLE statements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="8">Tuple specific accessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE-sequences.html#GIMPLE-sequences" accesskey="9">GIMPLE sequences</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sequence-iterators.html#Sequence-iterators">Sequence iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code">Adding a new GIMPLE statement code</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">Statement and operand traversals</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tree-SSA.html#Tree-SSA" accesskey="n" rel="next">Tree SSA</a>, Previous: <a href="GENERIC.html#GENERIC" accesskey="p" rel="previous">GENERIC</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fASM.html b/share/doc/gccint/GIMPLE_005fASM.html
new file mode 100644
index 0000000..e79bf2e
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fASM.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_ASM</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_ASM">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_ASM">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" rel="next" title="GIMPLE_ASSIGN">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="previous" title="Tuple specific accessors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fASM"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" accesskey="n" rel="next"><code>GIMPLE_ASSIGN</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fASM-1"></a>
+<h4 class="subsection">12.8.1 <code>GIMPLE_ASM</code></h4>
+<a name="index-GIMPLE_005fASM"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fasm_005fvec"></a>GIMPLE function: <em>gasm</em> <strong>*gimple_build_asm_vec</strong> <em>( const char *string, vec&lt;tree, va_gc&gt; *inputs, vec&lt;tree, va_gc&gt; *outputs, vec&lt;tree, va_gc&gt; *clobbers, vec&lt;tree, va_gc&gt; *labels)</em></dt>
+<dd><p>Build a <code>GIMPLE_ASM</code> statement. This statement is used for
+building in-line assembly constructs. <code>STRING</code> is the assembly
+code. <code>INPUTS</code>, <code>OUTPUTS</code>, <code>CLOBBERS</code> and <code>LABELS</code>
+are the inputs, outputs, clobbered registers and labels.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fninputs"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_asm_ninputs</strong> <em>(const gasm *g)</em></dt>
+<dd><p>Return the number of input operands for <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fnoutputs"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_asm_noutputs</strong> <em>(const gasm *g)</em></dt>
+<dd><p>Return the number of output operands for <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fnclobbers"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_asm_nclobbers</strong> <em>(const gasm *g)</em></dt>
+<dd><p>Return the number of clobber operands for <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005finput_005fop"></a>GIMPLE function: <em>tree</em> <strong>gimple_asm_input_op</strong> <em>(const gasm *g, unsigned index)</em></dt>
+<dd><p>Return input operand <code>INDEX</code> of <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fset_005finput_005fop"></a>GIMPLE function: <em>void</em> <strong>gimple_asm_set_input_op</strong> <em>(gasm *g, unsigned index, tree in_op)</em></dt>
+<dd><p>Set <code>IN_OP</code> to be input operand <code>INDEX</code> in <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005foutput_005fop"></a>GIMPLE function: <em>tree</em> <strong>gimple_asm_output_op</strong> <em>(const gasm *g, unsigned index)</em></dt>
+<dd><p>Return output operand <code>INDEX</code> of <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fset_005foutput_005fop"></a>GIMPLE function: <em>void</em> <strong>gimple_asm_set_output_op</strong> <em>(gasm *g, unsigned index, tree out_op)</em></dt>
+<dd><p>Set <code>OUT_OP</code> to be output operand <code>INDEX</code> in <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fclobber_005fop"></a>GIMPLE function: <em>tree</em> <strong>gimple_asm_clobber_op</strong> <em>(const gasm *g, unsigned index)</em></dt>
+<dd><p>Return clobber operand <code>INDEX</code> of <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fset_005fclobber_005fop"></a>GIMPLE function: <em>void</em> <strong>gimple_asm_set_clobber_op</strong> <em>(gasm *g, unsigned index, tree clobber_op)</em></dt>
+<dd><p>Set <code>CLOBBER_OP</code> to be clobber operand <code>INDEX</code> in <code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fstring"></a>GIMPLE function: <em>const char *</em> <strong>gimple_asm_string</strong> <em>(const gasm *g)</em></dt>
+<dd><p>Return the string representing the assembly instruction in
+<code>GIMPLE_ASM</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fvolatile_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_asm_volatile_p</strong> <em>(const gasm *g)</em></dt>
+<dd><p>Return true if <code>G</code> is an asm statement marked volatile.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fasm_005fset_005fvolatile"></a>GIMPLE function: <em>void</em> <strong>gimple_asm_set_volatile</strong> <em>(gasm *g, bool volatile_p)</em></dt>
+<dd><p>Mark asm statement <code>G</code> as volatile or non-volatile based on
+<code>VOLATILE_P</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" accesskey="n" rel="next"><code>GIMPLE_ASSIGN</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fASSIGN.html b/share/doc/gccint/GIMPLE_005fASSIGN.html
new file mode 100644
index 0000000..f0afec6
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fASSIGN.html
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_ASSIGN</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_ASSIGN">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_ASSIGN">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" rel="next" title="GIMPLE_BIND">
+<link href="GIMPLE_005fASM.html#GIMPLE_005fASM" rel="previous" title="GIMPLE_ASM">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fASSIGN"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" accesskey="n" rel="next"><code>GIMPLE_BIND</code></a>, Previous: <a href="GIMPLE_005fASM.html#GIMPLE_005fASM" accesskey="p" rel="previous"><code>GIMPLE_ASM</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fASSIGN-1"></a>
+<h4 class="subsection">12.8.2 <code>GIMPLE_ASSIGN</code></h4>
+<a name="index-GIMPLE_005fASSIGN"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fassign"></a>GIMPLE function: <em>gassign</em> <strong>*gimple_build_assign</strong> <em>(tree lhs, tree rhs)</em></dt>
+<dd><p>Build a <code>GIMPLE_ASSIGN</code> statement. The left-hand side is an lvalue
+passed in lhs. The right-hand side can be either a unary or
+binary tree expression. The expression tree rhs will be
+flattened and its operands assigned to the corresponding operand
+slots in the new statement. This function is useful when you
+already have a tree expression that you want to convert into a
+tuple. However, try to avoid building expression trees for the
+sole purpose of calling this function. If you already have the
+operands in separate trees, it is better to use
+<code>gimple_build_assign</code> with <code>enum tree_code</code> argument and separate
+arguments for each operand.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fassign-1"></a>GIMPLE function: <em>gassign</em> <strong>*gimple_build_assign</strong> <em>(tree lhs, enum tree_code subcode, tree op1, tree op2, tree op3)</em></dt>
+<dd><p>This function is similar to two operand <code>gimple_build_assign</code>,
+but is used to build a <code>GIMPLE_ASSIGN</code> statement when the operands of the
+right-hand side of the assignment are already split into
+different operands.
+</p>
+<p>The left-hand side is an lvalue passed in lhs. Subcode is the
+<code>tree_code</code> for the right-hand side of the assignment. Op1, op2 and op3
+are the operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fassign-2"></a>GIMPLE function: <em>gassign</em> <strong>*gimple_build_assign</strong> <em>(tree lhs, enum tree_code subcode, tree op1, tree op2)</em></dt>
+<dd><p>Like the above 5 operand <code>gimple_build_assign</code>, but with the last
+argument <code>NULL</code> - this overload should not be used for
+<code>GIMPLE_TERNARY_RHS</code> assignments.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fassign-3"></a>GIMPLE function: <em>gassign</em> <strong>*gimple_build_assign</strong> <em>(tree lhs, enum tree_code subcode, tree op1)</em></dt>
+<dd><p>Like the above 4 operand <code>gimple_build_assign</code>, but with the last
+argument <code>NULL</code> - this overload should be used only for
+<code>GIMPLE_UNARY_RHS</code> and <code>GIMPLE_SINGLE_RHS</code> assignments.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimplify_005fassign"></a>GIMPLE function: <em>gimple</em> <strong>gimplify_assign</strong> <em>(tree dst, tree src, gimple_seq *seq_p)</em></dt>
+<dd><p>Build a new <code>GIMPLE_ASSIGN</code> tuple and append it to the end of
+<code>*SEQ_P</code>.
+</p></dd></dl>
+
+<p><code>DST</code>/<code>SRC</code> are the destination and source respectively. You can
+pass ungimplified trees in <code>DST</code> or <code>SRC</code>, in which
+case they will be converted to a gimple operand if necessary.
+</p>
+<p>This function returns the newly created <code>GIMPLE_ASSIGN</code> tuple.
+</p>
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs_005fcode"></a>GIMPLE function: <em>enum tree_code</em> <strong>gimple_assign_rhs_code</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the code of the expression computed on the <code>RHS</code> of
+assignment statement <code>G</code>.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs_005fclass"></a>GIMPLE function: <em>enum gimple_rhs_class</em> <strong>gimple_assign_rhs_class</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the gimple rhs class of the code for the expression
+computed on the rhs of assignment statement <code>G</code>. This will never
+return <code>GIMPLE_INVALID_RHS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005flhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_assign_lhs</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>LHS</code> of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005flhs_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_assign_lhs_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the <code>LHS</code> of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs1"></a>GIMPLE function: <em>tree</em> <strong>gimple_assign_rhs1</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the first operand on the <code>RHS</code> of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs1_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_assign_rhs1_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the address of the first operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs2"></a>GIMPLE function: <em>tree</em> <strong>gimple_assign_rhs2</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the second operand on the <code>RHS</code> of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs2_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_assign_rhs2_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the address of the second operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs3"></a>GIMPLE function: <em>tree</em> <strong>gimple_assign_rhs3</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the third operand on the <code>RHS</code> of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005frhs3_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_assign_rhs3_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the address of the third operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fset_005flhs"></a>GIMPLE function: <em>void</em> <strong>gimple_assign_set_lhs</strong> <em>(gimple g, tree lhs)</em></dt>
+<dd><p>Set <code>LHS</code> to be the <code>LHS</code> operand of assignment statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fset_005frhs1"></a>GIMPLE function: <em>void</em> <strong>gimple_assign_set_rhs1</strong> <em>(gimple g, tree rhs)</em></dt>
+<dd><p>Set <code>RHS</code> to be the first operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fset_005frhs2"></a>GIMPLE function: <em>void</em> <strong>gimple_assign_set_rhs2</strong> <em>(gimple g, tree rhs)</em></dt>
+<dd><p>Set <code>RHS</code> to be the second operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fset_005frhs3"></a>GIMPLE function: <em>void</em> <strong>gimple_assign_set_rhs3</strong> <em>(gimple g, tree rhs)</em></dt>
+<dd><p>Set <code>RHS</code> to be the third operand on the <code>RHS</code> of assignment
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fcast_005fp-1"></a>GIMPLE function: <em>bool</em> <strong>gimple_assign_cast_p</strong> <em>(const_gimple s)</em></dt>
+<dd><p>Return true if <code>S</code> is a type-cast assignment.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" accesskey="n" rel="next"><code>GIMPLE_BIND</code></a>, Previous: <a href="GIMPLE_005fASM.html#GIMPLE_005fASM" accesskey="p" rel="previous"><code>GIMPLE_ASM</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fBIND.html b/share/doc/gccint/GIMPLE_005fBIND.html
new file mode 100644
index 0000000..0b74ecd
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fBIND.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_BIND</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_BIND">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_BIND">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fCALL.html#GIMPLE_005fCALL" rel="next" title="GIMPLE_CALL">
+<link href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" rel="previous" title="GIMPLE_ASSIGN">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fBIND"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL" accesskey="n" rel="next"><code>GIMPLE_CALL</code></a>, Previous: <a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" accesskey="p" rel="previous"><code>GIMPLE_ASSIGN</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fBIND-1"></a>
+<h4 class="subsection">12.8.3 <code>GIMPLE_BIND</code></h4>
+<a name="index-GIMPLE_005fBIND"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fbind"></a>GIMPLE function: <em>gbind</em> <strong>*gimple_build_bind</strong> <em>(tree vars, gimple_seq body)</em></dt>
+<dd><p>Build a <code>GIMPLE_BIND</code> statement with a list of variables in <code>VARS</code>
+and a body of statements in sequence <code>BODY</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fvars"></a>GIMPLE function: <em>tree</em> <strong>gimple_bind_vars</strong> <em>(const gbind *g)</em></dt>
+<dd><p>Return the variables declared in the <code>GIMPLE_BIND</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fset_005fvars"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_set_vars</strong> <em>(gbind *g, tree vars)</em></dt>
+<dd><p>Set <code>VARS</code> to be the set of variables declared in the <code>GIMPLE_BIND</code>
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fappend_005fvars"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_append_vars</strong> <em>(gbind *g, tree vars)</em></dt>
+<dd><p>Append <code>VARS</code> to the set of variables declared in the <code>GIMPLE_BIND</code>
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fbody"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_bind_body</strong> <em>(gbind *g)</em></dt>
+<dd><p>Return the GIMPLE sequence contained in the <code>GIMPLE_BIND</code> statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fset_005fbody"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_set_body</strong> <em>(gbind *g, gimple_seq seq)</em></dt>
+<dd><p>Set <code>SEQ</code> to be sequence contained in the <code>GIMPLE_BIND</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fadd_005fstmt"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_add_stmt</strong> <em>(gbind *gs, gimple stmt)</em></dt>
+<dd><p>Append a statement to the end of a <code>GIMPLE_BIND</code>&rsquo;s body.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fadd_005fseq"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_add_seq</strong> <em>(gbind *gs, gimple_seq seq)</em></dt>
+<dd><p>Append a sequence of statements to the end of a <code>GIMPLE_BIND</code>&rsquo;s
+body.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fblock"></a>GIMPLE function: <em>tree</em> <strong>gimple_bind_block</strong> <em>(const gbind *g)</em></dt>
+<dd><p>Return the <code>TREE_BLOCK</code> node associated with <code>GIMPLE_BIND</code> statement
+<code>G</code>. This is analogous to the <code>BIND_EXPR_BLOCK</code> field in trees.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbind_005fset_005fblock"></a>GIMPLE function: <em>void</em> <strong>gimple_bind_set_block</strong> <em>(gbind *g, tree block)</em></dt>
+<dd><p>Set <code>BLOCK</code> to be the <code>TREE_BLOCK</code> node associated with <code>GIMPLE_BIND</code>
+statement <code>G</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fCALL.html b/share/doc/gccint/GIMPLE_005fCALL.html
new file mode 100644
index 0000000..9c6f841
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fCALL.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_CALL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_CALL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_CALL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" rel="next" title="GIMPLE_CATCH">
+<link href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" rel="previous" title="GIMPLE_BIND">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fCALL"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" accesskey="n" rel="next"><code>GIMPLE_CATCH</code></a>, Previous: <a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" accesskey="p" rel="previous"><code>GIMPLE_BIND</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fCALL-1"></a>
+<h4 class="subsection">12.8.4 <code>GIMPLE_CALL</code></h4>
+<a name="index-GIMPLE_005fCALL"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcall"></a>GIMPLE function: <em>gcall</em> <strong>*gimple_build_call</strong> <em>(tree fn, unsigned nargs, ...)</em></dt>
+<dd><p>Build a <code>GIMPLE_CALL</code> statement to function <code>FN</code>. The argument <code>FN</code>
+must be either a <code>FUNCTION_DECL</code> or a gimple call address as
+determined by <code>is_gimple_call_addr</code>. <code>NARGS</code> are the number of
+arguments. The rest of the arguments follow the argument <code>NARGS</code>,
+and must be trees that are valid as rvalues in gimple (i.e., each
+operand is validated with <code>is_gimple_operand</code>).
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcall_005ffrom_005ftree"></a>GIMPLE function: <em>gcall</em> <strong>*gimple_build_call_from_tree</strong> <em>(tree call_expr, tree fnptrtype)</em></dt>
+<dd><p>Build a <code>GIMPLE_CALL</code> from a <code>CALL_EXPR</code> node. The arguments
+and the function are taken from the expression directly. The type of the
+<code>GIMPLE_CALL</code> is set from the second parameter passed by a caller.
+This routine assumes that <code>call_expr</code> is already in GIMPLE form.
+That is, its operands are GIMPLE values and the function call needs no further
+simplification. All the call flags in <code>call_expr</code> are copied over
+to the new <code>GIMPLE_CALL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcall_005fvec"></a>GIMPLE function: <em>gcall</em> <strong>*gimple_build_call_vec</strong> <em>(tree fn, <code>vec&lt;tree&gt;</code> args)</em></dt>
+<dd><p>Identical to <code>gimple_build_call</code> but the arguments are stored in a
+<code>vec&lt;tree&gt;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005flhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_lhs</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>LHS</code> of call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005flhs_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_call_lhs_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the <code>LHS</code> of call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005flhs"></a>GIMPLE function: <em>void</em> <strong>gimple_call_set_lhs</strong> <em>(gimple g, tree lhs)</em></dt>
+<dd><p>Set <code>LHS</code> to be the <code>LHS</code> operand of call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005ffn"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_fn</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the tree node representing the function called by call
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005ffn"></a>GIMPLE function: <em>void</em> <strong>gimple_call_set_fn</strong> <em>(gcall *g, tree fn)</em></dt>
+<dd><p>Set <code>FN</code> to be the function called by call statement <code>G</code>. This has
+to be a gimple value specifying the address of the called
+function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005ffndecl"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_fndecl</strong> <em>(gimple g)</em></dt>
+<dd><p>If a given <code>GIMPLE_CALL</code>&rsquo;s callee is a <code>FUNCTION_DECL</code>, return it.
+Otherwise return <code>NULL</code>. This function is analogous to
+<code>get_callee_fndecl</code> in <code>GENERIC</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005ffndecl"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_set_fndecl</strong> <em>(gimple g, tree fndecl)</em></dt>
+<dd><p>Set the called function to <code>FNDECL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005freturn_005ftype"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_return_type</strong> <em>(const gcall *g)</em></dt>
+<dd><p>Return the type returned by call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fchain"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_chain</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the static chain for call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005fchain"></a>GIMPLE function: <em>void</em> <strong>gimple_call_set_chain</strong> <em>(gcall *g, tree chain)</em></dt>
+<dd><p>Set <code>CHAIN</code> to be the static chain for call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fnum_005fargs"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_call_num_args</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the number of arguments used by call statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005farg"></a>GIMPLE function: <em>tree</em> <strong>gimple_call_arg</strong> <em>(gimple g, unsigned index)</em></dt>
+<dd><p>Return the argument at position <code>INDEX</code> for call statement <code>G</code>. The
+first argument is 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005farg_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_call_arg_ptr</strong> <em>(gimple g, unsigned index)</em></dt>
+<dd><p>Return a pointer to the argument at position <code>INDEX</code> for call
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005farg"></a>GIMPLE function: <em>void</em> <strong>gimple_call_set_arg</strong> <em>(gimple g, unsigned index, tree arg)</em></dt>
+<dd><p>Set <code>ARG</code> to be the argument at position <code>INDEX</code> for call statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fset_005ftail"></a>GIMPLE function: <em>void</em> <strong>gimple_call_set_tail</strong> <em>(gcall *s)</em></dt>
+<dd><p>Mark call statement <code>S</code> as being a tail call (i.e., a call just
+before the exit of a function). These calls are candidate for
+tail call optimization.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005ftail_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_call_tail_p</strong> <em>(gcall *s)</em></dt>
+<dd><p>Return true if <code>GIMPLE_CALL</code> <code>S</code> is marked as a tail call.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fnoreturn_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_call_noreturn_p</strong> <em>(gimple s)</em></dt>
+<dd><p>Return true if <code>S</code> is a noreturn call.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcall_005fcopy_005fskip_005fargs"></a>GIMPLE function: <em>gimple</em> <strong>gimple_call_copy_skip_args</strong> <em>(gcall *stmt, bitmap args_to_skip)</em></dt>
+<dd><p>Build a <code>GIMPLE_CALL</code> identical to <code>STMT</code> but skipping the arguments
+in the positions marked by the set <code>ARGS_TO_SKIP</code>.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" accesskey="n" rel="next"><code>GIMPLE_CATCH</code></a>, Previous: <a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" accesskey="p" rel="previous"><code>GIMPLE_BIND</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fCATCH.html b/share/doc/gccint/GIMPLE_005fCATCH.html
new file mode 100644
index 0000000..03ae3cc
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fCATCH.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_CATCH</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_CATCH">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_CATCH">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" rel="next" title="GIMPLE_COND">
+<link href="GIMPLE_005fCALL.html#GIMPLE_005fCALL" rel="previous" title="GIMPLE_CALL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fCATCH"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" accesskey="n" rel="next"><code>GIMPLE_COND</code></a>, Previous: <a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL" accesskey="p" rel="previous"><code>GIMPLE_CALL</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fCATCH-1"></a>
+<h4 class="subsection">12.8.5 <code>GIMPLE_CATCH</code></h4>
+<a name="index-GIMPLE_005fCATCH"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcatch"></a>GIMPLE function: <em>gcatch</em> <strong>*gimple_build_catch</strong> <em>(tree types, gimple_seq handler)</em></dt>
+<dd><p>Build a <code>GIMPLE_CATCH</code> statement. <code>TYPES</code> are the tree types this
+catch handles. <code>HANDLER</code> is a sequence of statements with the code
+for the handler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcatch_005ftypes"></a>GIMPLE function: <em>tree</em> <strong>gimple_catch_types</strong> <em>(const gcatch *g)</em></dt>
+<dd><p>Return the types handled by <code>GIMPLE_CATCH</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcatch_005ftypes_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_catch_types_ptr</strong> <em>(gcatch *g)</em></dt>
+<dd><p>Return a pointer to the types handled by <code>GIMPLE_CATCH</code> statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcatch_005fhandler"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_catch_handler</strong> <em>(gcatch *g)</em></dt>
+<dd><p>Return the GIMPLE sequence representing the body of the handler
+of <code>GIMPLE_CATCH</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcatch_005fset_005ftypes"></a>GIMPLE function: <em>void</em> <strong>gimple_catch_set_types</strong> <em>(gcatch *g, tree t)</em></dt>
+<dd><p>Set <code>T</code> to be the set of types handled by <code>GIMPLE_CATCH</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcatch_005fset_005fhandler"></a>GIMPLE function: <em>void</em> <strong>gimple_catch_set_handler</strong> <em>(gcatch *g, gimple_seq handler)</em></dt>
+<dd><p>Set <code>HANDLER</code> to be the body of <code>GIMPLE_CATCH</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fCOND.html b/share/doc/gccint/GIMPLE_005fCOND.html
new file mode 100644
index 0000000..ecf8540
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fCOND.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_COND</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_COND">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_COND">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" rel="next" title="GIMPLE_DEBUG">
+<link href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" rel="previous" title="GIMPLE_CATCH">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fCOND"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" accesskey="n" rel="next"><code>GIMPLE_DEBUG</code></a>, Previous: <a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" accesskey="p" rel="previous"><code>GIMPLE_CATCH</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fCOND-1"></a>
+<h4 class="subsection">12.8.6 <code>GIMPLE_COND</code></h4>
+<a name="index-GIMPLE_005fCOND"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcond"></a>GIMPLE function: <em>gcond</em> <strong>*gimple_build_cond</strong> <em>( enum tree_code pred_code, tree lhs, tree rhs, tree t_label, tree f_label)</em></dt>
+<dd><p>Build a <code>GIMPLE_COND</code> statement. <code>A</code> <code>GIMPLE_COND</code> statement compares
+<code>LHS</code> and <code>RHS</code> and if the condition in <code>PRED_CODE</code> is true, jump to
+the label in <code>t_label</code>, otherwise jump to the label in <code>f_label</code>.
+<code>PRED_CODE</code> are relational operator tree codes like <code>EQ_EXPR</code>,
+<code>LT_EXPR</code>, <code>LE_EXPR</code>, <code>NE_EXPR</code>, etc.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fcond_005ffrom_005ftree"></a>GIMPLE function: <em>gcond</em> <strong>*gimple_build_cond_from_tree</strong> <em>(tree cond, tree t_label, tree f_label)</em></dt>
+<dd><p>Build a <code>GIMPLE_COND</code> statement from the conditional expression
+tree <code>COND</code>. <code>T_LABEL</code> and <code>F_LABEL</code> are as in <code>gimple_build_cond</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fcode"></a>GIMPLE function: <em>enum tree_code</em> <strong>gimple_cond_code</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the code of the predicate computed by conditional
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fset_005fcode"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_set_code</strong> <em>(gcond *g, enum tree_code code)</em></dt>
+<dd><p>Set <code>CODE</code> to be the predicate code for the conditional statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005flhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_cond_lhs</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>LHS</code> of the predicate computed by conditional statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fset_005flhs"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_set_lhs</strong> <em>(gcond *g, tree lhs)</em></dt>
+<dd><p>Set <code>LHS</code> to be the <code>LHS</code> operand of the predicate computed by
+conditional statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005frhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_cond_rhs</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>RHS</code> operand of the predicate computed by conditional
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fset_005frhs"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_set_rhs</strong> <em>(gcond *g, tree rhs)</em></dt>
+<dd><p>Set <code>RHS</code> to be the <code>RHS</code> operand of the predicate computed by
+conditional statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005ftrue_005flabel"></a>GIMPLE function: <em>tree</em> <strong>gimple_cond_true_label</strong> <em>(const gcond *g)</em></dt>
+<dd><p>Return the label used by conditional statement <code>G</code> when its
+predicate evaluates to true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fset_005ftrue_005flabel"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_set_true_label</strong> <em>(gcond *g, tree label)</em></dt>
+<dd><p>Set <code>LABEL</code> to be the label used by conditional statement <code>G</code> when
+its predicate evaluates to true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fset_005ffalse_005flabel"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_set_false_label</strong> <em>(gcond *g, tree label)</em></dt>
+<dd><p>Set <code>LABEL</code> to be the label used by conditional statement <code>G</code> when
+its predicate evaluates to false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005ffalse_005flabel"></a>GIMPLE function: <em>tree</em> <strong>gimple_cond_false_label</strong> <em>(const gcond *g)</em></dt>
+<dd><p>Return the label used by conditional statement <code>G</code> when its
+predicate evaluates to false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fmake_005ffalse"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_make_false</strong> <em>(gcond *g)</em></dt>
+<dd><p>Set the conditional <code>COND_STMT</code> to be of the form &rsquo;if (1 == 0)&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcond_005fmake_005ftrue"></a>GIMPLE function: <em>void</em> <strong>gimple_cond_make_true</strong> <em>(gcond *g)</em></dt>
+<dd><p>Set the conditional <code>COND_STMT</code> to be of the form &rsquo;if (1 == 1)&rsquo;.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" accesskey="n" rel="next"><code>GIMPLE_DEBUG</code></a>, Previous: <a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" accesskey="p" rel="previous"><code>GIMPLE_CATCH</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fDEBUG.html b/share/doc/gccint/GIMPLE_005fDEBUG.html
new file mode 100644
index 0000000..d0cda26
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fDEBUG.html
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_DEBUG</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_DEBUG">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_DEBUG">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" rel="next" title="GIMPLE_EH_FILTER">
+<link href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" rel="previous" title="GIMPLE_COND">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fDEBUG"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" accesskey="n" rel="next"><code>GIMPLE_EH_FILTER</code></a>, Previous: <a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" accesskey="p" rel="previous"><code>GIMPLE_COND</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fDEBUG-1"></a>
+<h4 class="subsection">12.8.7 <code>GIMPLE_DEBUG</code></h4>
+<a name="index-GIMPLE_005fDEBUG"></a>
+<a name="index-GIMPLE_005fDEBUG_005fBIND"></a>
+<a name="index-GIMPLE_005fDEBUG_005fBEGIN_005fSTMT"></a>
+<a name="index-GIMPLE_005fDEBUG_005fINLINE_005fENTRY"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fdebug_005fbind"></a>GIMPLE function: <em>gdebug</em> <strong>*gimple_build_debug_bind</strong> <em>(tree var, tree value, gimple stmt)</em></dt>
+<dd><p>Build a <code>GIMPLE_DEBUG</code> statement with <code>GIMPLE_DEBUG_BIND</code>
+<code>subcode</code>. The effect of this statement is to tell debug
+information generation machinery that the value of user variable
+<code>var</code> is given by <code>value</code> at that point, and to remain with
+that value until <code>var</code> runs out of scope, a
+dynamically-subsequent debug bind statement overrides the binding, or
+conflicting values reach a control flow merge point. Even if
+components of the <code>value</code> expression change afterwards, the
+variable is supposed to retain the same value, though not necessarily
+the same location.
+</p>
+<p>It is expected that <code>var</code> be most often a tree for automatic user
+variables (<code>VAR_DECL</code> or <code>PARM_DECL</code>) that satisfy the
+requirements for gimple registers, but it may also be a tree for a
+scalarized component of a user variable (<code>ARRAY_REF</code>,
+<code>COMPONENT_REF</code>), or a debug temporary (<code>DEBUG_EXPR_DECL</code>).
+</p>
+<p>As for <code>value</code>, it can be an arbitrary tree expression, but it is
+recommended that it be in a suitable form for a gimple assignment
+<code>RHS</code>. It is not expected that user variables that could appear
+as <code>var</code> ever appear in <code>value</code>, because in the latter we&rsquo;d
+have their <code>SSA_NAME</code>s instead, but even if they were not in SSA
+form, user variables appearing in <code>value</code> are to be regarded as
+part of the executable code space, whereas those in <code>var</code> are to
+be regarded as part of the source code space. There is no way to
+refer to the value bound to a user variable within a <code>value</code>
+expression.
+</p>
+<p>If <code>value</code> is <code>GIMPLE_DEBUG_BIND_NOVALUE</code>, debug information
+generation machinery is informed that the variable <code>var</code> is
+unbound, i.e., that its value is indeterminate, which sometimes means
+it is really unavailable, and other times that the compiler could not
+keep track of it.
+</p>
+<p>Block and location information for the newly-created stmt are
+taken from <code>stmt</code>, if given.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fget_005fvar"></a>GIMPLE function: <em>tree</em> <strong>gimple_debug_bind_get_var</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return the user variable <var>var</var> that is bound at <code>stmt</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fget_005fvalue"></a>GIMPLE function: <em>tree</em> <strong>gimple_debug_bind_get_value</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return the value expression that is bound to a user variable at
+<code>stmt</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fget_005fvalue_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_debug_bind_get_value_ptr</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return a pointer to the value expression that is bound to a user
+variable at <code>stmt</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fset_005fvar"></a>GIMPLE function: <em>void</em> <strong>gimple_debug_bind_set_var</strong> <em>(gimple stmt, tree var)</em></dt>
+<dd><p>Modify the user variable bound at <code>stmt</code> to <var>var</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fset_005fvalue"></a>GIMPLE function: <em>void</em> <strong>gimple_debug_bind_set_value</strong> <em>(gimple stmt, tree var)</em></dt>
+<dd><p>Modify the value bound to the user variable bound at <code>stmt</code> to
+<var>value</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005freset_005fvalue"></a>GIMPLE function: <em>void</em> <strong>gimple_debug_bind_reset_value</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Modify the value bound to the user variable bound at <code>stmt</code> so
+that the variable becomes unbound.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fhas_005fvalue_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_debug_bind_has_value_p</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return <code>TRUE</code> if <code>stmt</code> binds a user variable to a value,
+and <code>FALSE</code> if it unbinds the variable.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fdebug_005fbegin_005fstmt"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_debug_begin_stmt</strong> <em>(tree block, location_t location)</em></dt>
+<dd><p>Build a <code>GIMPLE_DEBUG</code> statement with
+<code>GIMPLE_DEBUG_BEGIN_STMT</code> <code>subcode</code>. The effect of this
+statement is to tell debug information generation machinery that the
+user statement at the given <code>location</code> and <code>block</code> starts at
+the point at which the statement is inserted. The intent is that side
+effects (e.g. variable bindings) of all prior user statements are
+observable, and that none of the side effects of subsequent user
+statements are.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fdebug_005finline_005fentry"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_debug_inline_entry</strong> <em>(tree block, location_t location)</em></dt>
+<dd><p>Build a <code>GIMPLE_DEBUG</code> statement with
+<code>GIMPLE_DEBUG_INLINE_ENTRY</code> <code>subcode</code>. The effect of this
+statement is to tell debug information generation machinery that a
+function call at <code>location</code> underwent inline substitution, that
+<code>block</code> is the enclosing lexical block created for the
+substitution, and that at the point of the program in which the stmt is
+inserted, all parameters for the inlined function are bound to the
+respective arguments, and none of the side effects of its stmts are
+observable.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" accesskey="n" rel="next"><code>GIMPLE_EH_FILTER</code></a>, Previous: <a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" accesskey="p" rel="previous"><code>GIMPLE_COND</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fEH_005fFILTER.html b/share/doc/gccint/GIMPLE_005fEH_005fFILTER.html
new file mode 100644
index 0000000..351f8df
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fEH_005fFILTER.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_EH_FILTER</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_EH_FILTER">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_EH_FILTER">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL" rel="next" title="GIMPLE_LABEL">
+<link href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" rel="previous" title="GIMPLE_DEBUG">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fEH_005fFILTER"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL" accesskey="n" rel="next"><code>GIMPLE_LABEL</code></a>, Previous: <a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" accesskey="p" rel="previous"><code>GIMPLE_DEBUG</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fEH_005fFILTER-1"></a>
+<h4 class="subsection">12.8.8 <code>GIMPLE_EH_FILTER</code></h4>
+<a name="index-GIMPLE_005fEH_005fFILTER"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005feh_005ffilter"></a>GIMPLE function: <em>geh_filter</em> <strong>*gimple_build_eh_filter</strong> <em>(tree types, gimple_seq failure)</em></dt>
+<dd><p>Build a <code>GIMPLE_EH_FILTER</code> statement. <code>TYPES</code> are the filter&rsquo;s
+types. <code>FAILURE</code> is a sequence with the filter&rsquo;s failure action.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005ffilter_005ftypes"></a>GIMPLE function: <em>tree</em> <strong>gimple_eh_filter_types</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the types handled by <code>GIMPLE_EH_FILTER</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005ffilter_005ftypes_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_eh_filter_types_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the types handled by <code>GIMPLE_EH_FILTER</code>
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005ffilter_005ffailure"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_eh_filter_failure</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the sequence of statement to execute when <code>GIMPLE_EH_FILTER</code>
+statement fails.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005ffilter_005fset_005ftypes"></a>GIMPLE function: <em>void</em> <strong>gimple_eh_filter_set_types</strong> <em>(geh_filter *g, tree types)</em></dt>
+<dd><p>Set <code>TYPES</code> to be the set of types handled by <code>GIMPLE_EH_FILTER</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005ffilter_005fset_005ffailure"></a>GIMPLE function: <em>void</em> <strong>gimple_eh_filter_set_failure</strong> <em>(geh_filter *g, gimple_seq failure)</em></dt>
+<dd><p>Set <code>FAILURE</code> to be the sequence of statements to execute on
+failure for <code>GIMPLE_EH_FILTER</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005fmust_005fnot_005fthrow_005ffndecl"></a>GIMPLE function: <em>tree</em> <strong>gimple_eh_must_not_throw_fndecl</strong> <em>( geh_mnt *eh_mnt_stmt)</em></dt>
+<dd><p>Get the function decl to be called by the MUST_NOT_THROW region.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005feh_005fmust_005fnot_005fthrow_005fset_005ffndecl"></a>GIMPLE function: <em>void</em> <strong>gimple_eh_must_not_throw_set_fndecl</strong> <em>( geh_mnt *eh_mnt_stmt, tree decl)</em></dt>
+<dd><p>Set the function decl to be called by GS to DECL.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fGOTO.html b/share/doc/gccint/GIMPLE_005fGOTO.html
new file mode 100644
index 0000000..7970447
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fGOTO.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_GOTO</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_GOTO">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_GOTO">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fNOP.html#GIMPLE_005fNOP" rel="next" title="GIMPLE_NOP">
+<link href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL" rel="previous" title="GIMPLE_LABEL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fGOTO"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP" accesskey="n" rel="next"><code>GIMPLE_NOP</code></a>, Previous: <a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL" accesskey="p" rel="previous"><code>GIMPLE_LABEL</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fGOTO-1"></a>
+<h4 class="subsection">12.8.10 <code>GIMPLE_GOTO</code></h4>
+<a name="index-GIMPLE_005fGOTO"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fgoto"></a>GIMPLE function: <em>ggoto</em> <strong>*gimple_build_goto</strong> <em>(tree dest)</em></dt>
+<dd><p>Build a <code>GIMPLE_GOTO</code> statement to label <code>DEST</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fgoto_005fdest"></a>GIMPLE function: <em>tree</em> <strong>gimple_goto_dest</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the destination of the unconditional jump <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fgoto_005fset_005fdest"></a>GIMPLE function: <em>void</em> <strong>gimple_goto_set_dest</strong> <em>(ggoto *g, tree dest)</em></dt>
+<dd><p>Set <code>DEST</code> to be the destination of the unconditional jump <code>G</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fLABEL.html b/share/doc/gccint/GIMPLE_005fLABEL.html
new file mode 100644
index 0000000..3f9db14
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fLABEL.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_LABEL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_LABEL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_LABEL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO" rel="next" title="GIMPLE_GOTO">
+<link href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" rel="previous" title="GIMPLE_EH_FILTER">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fLABEL"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO" accesskey="n" rel="next"><code>GIMPLE_GOTO</code></a>, Previous: <a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" accesskey="p" rel="previous"><code>GIMPLE_EH_FILTER</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fLABEL-1"></a>
+<h4 class="subsection">12.8.9 <code>GIMPLE_LABEL</code></h4>
+<a name="index-GIMPLE_005fLABEL"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005flabel"></a>GIMPLE function: <em>glabel</em> <strong>*gimple_build_label</strong> <em>(tree label)</em></dt>
+<dd><p>Build a <code>GIMPLE_LABEL</code> statement with corresponding to the tree
+label, <code>LABEL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005flabel_005flabel"></a>GIMPLE function: <em>tree</em> <strong>gimple_label_label</strong> <em>(const glabel *g)</em></dt>
+<dd><p>Return the <code>LABEL_DECL</code> node used by <code>GIMPLE_LABEL</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005flabel_005fset_005flabel"></a>GIMPLE function: <em>void</em> <strong>gimple_label_set_label</strong> <em>(glabel *g, tree label)</em></dt>
+<dd><p>Set <code>LABEL</code> to be the <code>LABEL_DECL</code> node used by <code>GIMPLE_LABEL</code>
+statement <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fNOP.html b/share/doc/gccint/GIMPLE_005fNOP.html
new file mode 100644
index 0000000..0f14ead
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fNOP.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_NOP</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_NOP">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_NOP">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD" rel="next" title="GIMPLE_OMP_ATOMIC_LOAD">
+<link href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO" rel="previous" title="GIMPLE_GOTO">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fNOP"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD" accesskey="n" rel="next"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a>, Previous: <a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO" accesskey="p" rel="previous"><code>GIMPLE_GOTO</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fNOP-1"></a>
+<h4 class="subsection">12.8.11 <code>GIMPLE_NOP</code></h4>
+<a name="index-GIMPLE_005fNOP"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fnop"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_nop</strong> <em>(void)</em></dt>
+<dd><p>Build a <code>GIMPLE_NOP</code> statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fnop_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_nop_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Returns <code>TRUE</code> if statement <code>G</code> is a <code>GIMPLE_NOP</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fLOAD.html b/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fLOAD.html
new file mode 100644
index 0000000..b0e7a1d
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fLOAD.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_LOAD</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_LOAD">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_LOAD">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE" rel="next" title="GIMPLE_OMP_ATOMIC_STORE">
+<link href="GIMPLE_005fNOP.html#GIMPLE_005fNOP" rel="previous" title="GIMPLE_NOP">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fATOMIC_005fLOAD"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE" accesskey="n" rel="next"><code>GIMPLE_OMP_ATOMIC_STORE</code></a>, Previous: <a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP" accesskey="p" rel="previous"><code>GIMPLE_NOP</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fATOMIC_005fLOAD-1"></a>
+<h4 class="subsection">12.8.12 <code>GIMPLE_OMP_ATOMIC_LOAD</code></h4>
+<a name="index-GIMPLE_005fOMP_005fATOMIC_005fLOAD"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fatomic_005fload"></a>GIMPLE function: <em>gomp_atomic_load</em> <strong>*gimple_build_omp_atomic_load</strong> <em>( tree lhs, tree rhs)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_ATOMIC_LOAD</code> statement. <code>LHS</code> is the left-hand
+side of the assignment. <code>RHS</code> is the right-hand side of the
+assignment.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fload_005fset_005flhs"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_atomic_load_set_lhs</strong> <em>( gomp_atomic_load *g, tree lhs)</em></dt>
+<dd><p>Set the <code>LHS</code> of an atomic load.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fload_005flhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_atomic_load_lhs</strong> <em>( const gomp_atomic_load *g)</em></dt>
+<dd><p>Get the <code>LHS</code> of an atomic load.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fload_005fset_005frhs"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_atomic_load_set_rhs</strong> <em>( gomp_atomic_load *g, tree rhs)</em></dt>
+<dd><p>Set the <code>RHS</code> of an atomic set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fload_005frhs"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_atomic_load_rhs</strong> <em>( const gomp_atomic_load *g)</em></dt>
+<dd><p>Get the <code>RHS</code> of an atomic set.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fSTORE.html b/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fSTORE.html
new file mode 100644
index 0000000..8a1e9f4
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fATOMIC_005fSTORE.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_STORE</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_STORE">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ATOMIC_STORE">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE" rel="next" title="GIMPLE_OMP_CONTINUE">
+<link href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD" rel="previous" title="GIMPLE_OMP_ATOMIC_LOAD">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fATOMIC_005fSTORE"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE" accesskey="n" rel="next"><code>GIMPLE_OMP_CONTINUE</code></a>, Previous: <a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD" accesskey="p" rel="previous"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fATOMIC_005fSTORE-1"></a>
+<h4 class="subsection">12.8.13 <code>GIMPLE_OMP_ATOMIC_STORE</code></h4>
+<a name="index-GIMPLE_005fOMP_005fATOMIC_005fSTORE"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fatomic_005fstore"></a>GIMPLE function: <em>gomp_atomic_store</em> <strong>*gimple_build_omp_atomic_store</strong> <em>( tree val)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_ATOMIC_STORE</code> statement. <code>VAL</code> is the value to be
+stored.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fstore_005fset_005fval"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_atomic_store_set_val</strong> <em>( gomp_atomic_store *g, tree val)</em></dt>
+<dd><p>Set the value being stored in an atomic store.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fatomic_005fstore_005fval"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_atomic_store_val</strong> <em>( const gomp_atomic_store *g)</em></dt>
+<dd><p>Return the value being stored in an atomic store.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fCONTINUE.html b/share/doc/gccint/GIMPLE_005fOMP_005fCONTINUE.html
new file mode 100644
index 0000000..1ea38f8
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fCONTINUE.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CONTINUE</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CONTINUE">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CONTINUE">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL" rel="next" title="GIMPLE_OMP_CRITICAL">
+<link href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE" rel="previous" title="GIMPLE_OMP_ATOMIC_STORE">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fCONTINUE"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL" accesskey="n" rel="next"><code>GIMPLE_OMP_CRITICAL</code></a>, Previous: <a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE" accesskey="p" rel="previous"><code>GIMPLE_OMP_ATOMIC_STORE</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fCONTINUE-1"></a>
+<h4 class="subsection">12.8.14 <code>GIMPLE_OMP_CONTINUE</code></h4>
+<a name="index-GIMPLE_005fOMP_005fCONTINUE"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fcontinue"></a>GIMPLE function: <em>gomp_continue</em> <strong>*gimple_build_omp_continue</strong> <em>( tree control_def, tree control_use)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_CONTINUE</code> statement. <code>CONTROL_DEF</code> is the
+definition of the control variable. <code>CONTROL_USE</code> is the use of
+the control variable.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fcontrol_005fdef"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_control_def</strong> <em>( const gomp_continue *s)</em></dt>
+<dd><p>Return the definition of the control variable on a
+<code>GIMPLE_OMP_CONTINUE</code> in <code>S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fcontrol_005fdef_005fptr"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_control_def_ptr</strong> <em>( gomp_continue *s)</em></dt>
+<dd><p>Same as above, but return the pointer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fset_005fcontrol_005fdef"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_set_control_def</strong> <em>( gomp_continue *s)</em></dt>
+<dd><p>Set the control variable definition for a <code>GIMPLE_OMP_CONTINUE</code>
+statement in <code>S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fcontrol_005fuse"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_control_use</strong> <em>( const gomp_continue *s)</em></dt>
+<dd><p>Return the use of the control variable on a <code>GIMPLE_OMP_CONTINUE</code>
+in <code>S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fcontrol_005fuse_005fptr"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_control_use_ptr</strong> <em>( gomp_continue *s)</em></dt>
+<dd><p>Same as above, but return the pointer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcontinue_005fset_005fcontrol_005fuse"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_continue_set_control_use</strong> <em>( gomp_continue *s)</em></dt>
+<dd><p>Set the control variable use for a <code>GIMPLE_OMP_CONTINUE</code> statement
+in <code>S</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fCRITICAL.html b/share/doc/gccint/GIMPLE_005fOMP_005fCRITICAL.html
new file mode 100644
index 0000000..a0b9417
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fCRITICAL.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CRITICAL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CRITICAL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_CRITICAL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR" rel="next" title="GIMPLE_OMP_FOR">
+<link href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE" rel="previous" title="GIMPLE_OMP_CONTINUE">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fCRITICAL"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR" accesskey="n" rel="next"><code>GIMPLE_OMP_FOR</code></a>, Previous: <a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE" accesskey="p" rel="previous"><code>GIMPLE_OMP_CONTINUE</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fCRITICAL-1"></a>
+<h4 class="subsection">12.8.15 <code>GIMPLE_OMP_CRITICAL</code></h4>
+<a name="index-GIMPLE_005fOMP_005fCRITICAL"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fcritical"></a>GIMPLE function: <em>gomp_critical</em> <strong>*gimple_build_omp_critical</strong> <em>( gimple_seq body, tree name)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_CRITICAL</code> statement. <code>BODY</code> is the sequence of
+statements for which only one thread can execute. <code>NAME</code> is an
+optional identifier for this critical block.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcritical_005fname"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_critical_name</strong> <em>( const gomp_critical *g)</em></dt>
+<dd><p>Return the name associated with <code>OMP_CRITICAL</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcritical_005fname_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_critical_name_ptr</strong> <em>( gomp_critical *g)</em></dt>
+<dd><p>Return a pointer to the name associated with <code>OMP</code> critical
+statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fcritical_005fset_005fname"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_critical_set_name</strong> <em>( gomp_critical *g, tree name)</em></dt>
+<dd><p>Set <code>NAME</code> to be the name associated with <code>OMP</code> critical statement <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fFOR.html b/share/doc/gccint/GIMPLE_005fOMP_005fFOR.html
new file mode 100644
index 0000000..2a048ae
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fFOR.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_FOR</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_FOR">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_FOR">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER" rel="next" title="GIMPLE_OMP_MASTER">
+<link href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL" rel="previous" title="GIMPLE_OMP_CRITICAL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fFOR"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER" accesskey="n" rel="next"><code>GIMPLE_OMP_MASTER</code></a>, Previous: <a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL" accesskey="p" rel="previous"><code>GIMPLE_OMP_CRITICAL</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fFOR-1"></a>
+<h4 class="subsection">12.8.16 <code>GIMPLE_OMP_FOR</code></h4>
+<a name="index-GIMPLE_005fOMP_005fFOR"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005ffor"></a>GIMPLE function: <em>gomp_for</em> <strong>*gimple_build_omp_for</strong> <em>(gimple_seq body, tree clauses, tree index, tree initial, tree final, tree incr, gimple_seq pre_body, enum tree_code omp_for_cond)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_FOR</code> statement. <code>BODY</code> is sequence of statements
+inside the for loop. <code>CLAUSES</code>, are any of the loop
+construct&rsquo;s clauses. <code>PRE_BODY</code> is the
+sequence of statements that are loop invariant. <code>INDEX</code> is the
+index variable. <code>INITIAL</code> is the initial value of <code>INDEX</code>. <code>FINAL</code> is
+final value of <code>INDEX</code>. OMP_FOR_COND is the predicate used to
+compare <code>INDEX</code> and <code>FINAL</code>. <code>INCR</code> is the increment expression.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fclauses"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_for_clauses</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the clauses associated with <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fclauses_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_for_clauses_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005fclauses"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_clauses</strong> <em>(gimple g, tree clauses)</em></dt>
+<dd><p>Set <code>CLAUSES</code> to be the list of clauses associated with <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005findex"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_for_index</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the index variable for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005findex_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_for_index_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the index variable for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005findex"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_index</strong> <em>(gimple g, tree index)</em></dt>
+<dd><p>Set <code>INDEX</code> to be the index variable for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005finitial"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_for_initial</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the initial value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005finitial_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_for_initial_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the initial value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005finitial"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_initial</strong> <em>(gimple g, tree initial)</em></dt>
+<dd><p>Set <code>INITIAL</code> to be the initial value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005ffinal"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_for_final</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the final value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005ffinal_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_for_final_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>turn a pointer to the final value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005ffinal"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_final</strong> <em>(gimple g, tree final)</em></dt>
+<dd><p>Set <code>FINAL</code> to be the final value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fincr"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_for_incr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the increment value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fincr_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_for_incr_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the increment value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005fincr"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_incr</strong> <em>(gimple g, tree incr)</em></dt>
+<dd><p>Set <code>INCR</code> to be the increment value for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fpre_005fbody"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_omp_for_pre_body</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the sequence of statements to execute before the <code>OMP_FOR</code>
+statement <code>G</code> starts.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005fpre_005fbody"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_pre_body</strong> <em>(gimple g, gimple_seq pre_body)</em></dt>
+<dd><p>Set <code>PRE_BODY</code> to be the sequence of statements to execute before
+the <code>OMP_FOR</code> statement <code>G</code> starts.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fset_005fcond"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_for_set_cond</strong> <em>(gimple g, enum tree_code cond)</em></dt>
+<dd><p>Set <code>COND</code> to be the condition code for <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005ffor_005fcond"></a>GIMPLE function: <em>enum tree_code</em> <strong>gimple_omp_for_cond</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the condition code associated with <code>OMP_FOR</code> <code>G</code>.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER" accesskey="n" rel="next"><code>GIMPLE_OMP_MASTER</code></a>, Previous: <a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL" accesskey="p" rel="previous"><code>GIMPLE_OMP_CRITICAL</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fMASTER.html b/share/doc/gccint/GIMPLE_005fOMP_005fMASTER.html
new file mode 100644
index 0000000..3db8947
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fMASTER.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_MASTER</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_MASTER">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_MASTER">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED" rel="next" title="GIMPLE_OMP_ORDERED">
+<link href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR" rel="previous" title="GIMPLE_OMP_FOR">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fMASTER"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED" accesskey="n" rel="next"><code>GIMPLE_OMP_ORDERED</code></a>, Previous: <a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR" accesskey="p" rel="previous"><code>GIMPLE_OMP_FOR</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fMASTER-1"></a>
+<h4 class="subsection">12.8.17 <code>GIMPLE_OMP_MASTER</code></h4>
+<a name="index-GIMPLE_005fOMP_005fMASTER"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fomp_005fmaster"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_omp_master</strong> <em>(gimple_seq body)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_MASTER</code> statement. <code>BODY</code> is the sequence of
+statements to be executed by just the master.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fORDERED.html b/share/doc/gccint/GIMPLE_005fOMP_005fORDERED.html
new file mode 100644
index 0000000..3215457
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fORDERED.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ORDERED</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ORDERED">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_ORDERED">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL" rel="next" title="GIMPLE_OMP_PARALLEL">
+<link href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER" rel="previous" title="GIMPLE_OMP_MASTER">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fORDERED"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL" accesskey="n" rel="next"><code>GIMPLE_OMP_PARALLEL</code></a>, Previous: <a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER" accesskey="p" rel="previous"><code>GIMPLE_OMP_MASTER</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fORDERED-1"></a>
+<h4 class="subsection">12.8.18 <code>GIMPLE_OMP_ORDERED</code></h4>
+<a name="index-GIMPLE_005fOMP_005fORDERED"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fomp_005fordered"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_omp_ordered</strong> <em>(gimple_seq body)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_ORDERED</code> statement.
+</p>
+<p><code>BODY</code> is the sequence of statements inside a loop that will
+executed in sequence.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fPARALLEL.html b/share/doc/gccint/GIMPLE_005fOMP_005fPARALLEL.html
new file mode 100644
index 0000000..a0f9e17
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fPARALLEL.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_PARALLEL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_PARALLEL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_PARALLEL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN" rel="next" title="GIMPLE_OMP_RETURN">
+<link href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED" rel="previous" title="GIMPLE_OMP_ORDERED">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fPARALLEL"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN" accesskey="n" rel="next"><code>GIMPLE_OMP_RETURN</code></a>, Previous: <a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED" accesskey="p" rel="previous"><code>GIMPLE_OMP_ORDERED</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fPARALLEL-1"></a>
+<h4 class="subsection">12.8.19 <code>GIMPLE_OMP_PARALLEL</code></h4>
+<a name="index-GIMPLE_005fOMP_005fPARALLEL"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fparallel"></a>GIMPLE function: <em>gomp_parallel</em> <strong>*gimple_build_omp_parallel</strong> <em>(gimple_seq body, tree clauses, tree child_fn, tree data_arg)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_PARALLEL</code> statement.
+</p>
+<p><code>BODY</code> is sequence of statements which are executed in parallel.
+<code>CLAUSES</code>, are the <code>OMP</code> parallel construct&rsquo;s clauses. <code>CHILD_FN</code> is
+the function created for the parallel threads to execute.
+<code>DATA_ARG</code> are the shared data argument(s).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fcombined_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_omp_parallel_combined_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if <code>OMP</code> parallel statement <code>G</code> has the
+<code>GF_OMP_PARALLEL_COMBINED</code> flag set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fset_005fcombined_005fp"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_parallel_set_combined_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Set the <code>GF_OMP_PARALLEL_COMBINED</code> field in <code>OMP</code> parallel statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fbody"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_omp_body</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the body for the <code>OMP</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fset_005fbody"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_set_body</strong> <em>(gimple g, gimple_seq body)</em></dt>
+<dd><p>Set <code>BODY</code> to be the body for the <code>OMP</code> statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fclauses"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_parallel_clauses</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the clauses associated with <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fclauses_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_parallel_clauses_ptr</strong> <em>( gomp_parallel *g)</em></dt>
+<dd><p>Return a pointer to the clauses associated with <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fset_005fclauses"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_parallel_set_clauses</strong> <em>( gomp_parallel *g, tree clauses)</em></dt>
+<dd><p>Set <code>CLAUSES</code> to be the list of clauses associated with
+<code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fchild_005ffn"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_parallel_child_fn</strong> <em>( const gomp_parallel *g)</em></dt>
+<dd><p>Return the child function used to hold the body of <code>OMP_PARALLEL</code>
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fchild_005ffn_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_parallel_child_fn_ptr</strong> <em>( gomp_parallel *g)</em></dt>
+<dd><p>Return a pointer to the child function used to hold the body of
+<code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fset_005fchild_005ffn"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_parallel_set_child_fn</strong> <em>( gomp_parallel *g, tree child_fn)</em></dt>
+<dd><p>Set <code>CHILD_FN</code> to be the child function for <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fdata_005farg"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_parallel_data_arg</strong> <em>( const gomp_parallel *g)</em></dt>
+<dd><p>Return the artificial argument used to send variables and values
+from the parent to the children threads in <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fdata_005farg_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_parallel_data_arg_ptr</strong> <em>( gomp_parallel *g)</em></dt>
+<dd><p>Return a pointer to the data argument for <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fparallel_005fset_005fdata_005farg"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_parallel_set_data_arg</strong> <em>( gomp_parallel *g, tree data_arg)</em></dt>
+<dd><p>Set <code>DATA_ARG</code> to be the data argument for <code>OMP_PARALLEL</code> <code>G</code>.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN" accesskey="n" rel="next"><code>GIMPLE_OMP_RETURN</code></a>, Previous: <a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED" accesskey="p" rel="previous"><code>GIMPLE_OMP_ORDERED</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fRETURN.html b/share/doc/gccint/GIMPLE_005fOMP_005fRETURN.html
new file mode 100644
index 0000000..0d3ad6f
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fRETURN.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_RETURN</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_RETURN">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_RETURN">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION" rel="next" title="GIMPLE_OMP_SECTION">
+<link href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL" rel="previous" title="GIMPLE_OMP_PARALLEL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fRETURN"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION" accesskey="n" rel="next"><code>GIMPLE_OMP_SECTION</code></a>, Previous: <a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL" accesskey="p" rel="previous"><code>GIMPLE_OMP_PARALLEL</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fRETURN-1"></a>
+<h4 class="subsection">12.8.20 <code>GIMPLE_OMP_RETURN</code></h4>
+<a name="index-GIMPLE_005fOMP_005fRETURN"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fomp_005freturn"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_omp_return</strong> <em>(bool wait_p)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_RETURN</code> statement. <code>WAIT_P</code> is true if this is a
+non-waiting return.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005freturn_005fset_005fnowait"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_return_set_nowait</strong> <em>(gimple s)</em></dt>
+<dd><p>Set the nowait flag on <code>GIMPLE_OMP_RETURN</code> statement <code>S</code>.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-gimple_005fomp_005freturn_005fnowait_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_omp_return_nowait_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if <code>OMP</code> return statement <code>G</code> has the
+<code>GF_OMP_RETURN_NOWAIT</code> flag set.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fSECTION.html b/share/doc/gccint/GIMPLE_005fOMP_005fSECTION.html
new file mode 100644
index 0000000..8e501f0
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fSECTION.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTION</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTION">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTION">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS" rel="next" title="GIMPLE_OMP_SECTIONS">
+<link href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN" rel="previous" title="GIMPLE_OMP_RETURN">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fSECTION"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS" accesskey="n" rel="next"><code>GIMPLE_OMP_SECTIONS</code></a>, Previous: <a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN" accesskey="p" rel="previous"><code>GIMPLE_OMP_RETURN</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fSECTION-1"></a>
+<h4 class="subsection">12.8.21 <code>GIMPLE_OMP_SECTION</code></h4>
+<a name="index-GIMPLE_005fOMP_005fSECTION"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fomp_005fsection"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_omp_section</strong> <em>(gimple_seq body)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_SECTION</code> statement for a sections statement.
+</p>
+<p><code>BODY</code> is the sequence of statements in the section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsection_005flast_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_omp_section_last_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if <code>OMP</code> section statement <code>G</code> has the
+<code>GF_OMP_SECTION_LAST</code> flag set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsection_005fset_005flast"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_section_set_last</strong> <em>(gimple g)</em></dt>
+<dd><p>Set the <code>GF_OMP_SECTION_LAST</code> flag on <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fSECTIONS.html b/share/doc/gccint/GIMPLE_005fOMP_005fSECTIONS.html
new file mode 100644
index 0000000..cdc9618
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fSECTIONS.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTIONS</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTIONS">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SECTIONS">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE" rel="next" title="GIMPLE_OMP_SINGLE">
+<link href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION" rel="previous" title="GIMPLE_OMP_SECTION">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fSECTIONS"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE" accesskey="n" rel="next"><code>GIMPLE_OMP_SINGLE</code></a>, Previous: <a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION" accesskey="p" rel="previous"><code>GIMPLE_OMP_SECTION</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fSECTIONS-1"></a>
+<h4 class="subsection">12.8.22 <code>GIMPLE_OMP_SECTIONS</code></h4>
+<a name="index-GIMPLE_005fOMP_005fSECTIONS"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fsections"></a>GIMPLE function: <em>gomp_sections</em> <strong>*gimple_build_omp_sections</strong> <em>( gimple_seq body, tree clauses)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_SECTIONS</code> statement. <code>BODY</code> is a sequence of
+section statements. <code>CLAUSES</code> are any of the <code>OMP</code> sections
+construct&rsquo;s clauses: private, firstprivate, lastprivate,
+reduction, and nowait.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fomp_005fsections_005fswitch"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_omp_sections_switch</strong> <em>(void)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_SECTIONS_SWITCH</code> statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fcontrol"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_sections_control</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the control variable associated with the
+<code>GIMPLE_OMP_SECTIONS</code> in <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fcontrol_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_sections_control_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the clauses associated with the
+<code>GIMPLE_OMP_SECTIONS</code> in <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fset_005fcontrol"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_sections_set_control</strong> <em>(gimple g, tree control)</em></dt>
+<dd><p>Set <code>CONTROL</code> to be the set of clauses associated with the
+<code>GIMPLE_OMP_SECTIONS</code> in <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fclauses"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_sections_clauses</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the clauses associated with <code>OMP_SECTIONS</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fclauses_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_sections_clauses_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the clauses associated with <code>OMP_SECTIONS</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsections_005fset_005fclauses"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_sections_set_clauses</strong> <em>(gimple g, tree clauses)</em></dt>
+<dd><p>Set <code>CLAUSES</code> to be the set of clauses associated with <code>OMP_SECTIONS</code>
+<code>G</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fOMP_005fSINGLE.html b/share/doc/gccint/GIMPLE_005fOMP_005fSINGLE.html
new file mode 100644
index 0000000..895dd15
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fOMP_005fSINGLE.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SINGLE</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SINGLE">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_OMP_SINGLE">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fPHI.html#GIMPLE_005fPHI" rel="next" title="GIMPLE_PHI">
+<link href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS" rel="previous" title="GIMPLE_OMP_SECTIONS">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fOMP_005fSINGLE"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI" accesskey="n" rel="next"><code>GIMPLE_PHI</code></a>, Previous: <a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS" accesskey="p" rel="previous"><code>GIMPLE_OMP_SECTIONS</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fOMP_005fSINGLE-1"></a>
+<h4 class="subsection">12.8.23 <code>GIMPLE_OMP_SINGLE</code></h4>
+<a name="index-GIMPLE_005fOMP_005fSINGLE"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fomp_005fsingle"></a>GIMPLE function: <em>gomp_single</em> <strong>*gimple_build_omp_single</strong> <em>( gimple_seq body, tree clauses)</em></dt>
+<dd><p>Build a <code>GIMPLE_OMP_SINGLE</code> statement. <code>BODY</code> is the sequence of
+statements that will be executed once. <code>CLAUSES</code> are any of the
+<code>OMP</code> single construct&rsquo;s clauses: private, firstprivate,
+copyprivate, nowait.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsingle_005fclauses"></a>GIMPLE function: <em>tree</em> <strong>gimple_omp_single_clauses</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the clauses associated with <code>OMP_SINGLE</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsingle_005fclauses_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_omp_single_clauses_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the clauses associated with <code>OMP_SINGLE</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fomp_005fsingle_005fset_005fclauses"></a>GIMPLE function: <em>void</em> <strong>gimple_omp_single_set_clauses</strong> <em>( gomp_single *g, tree clauses)</em></dt>
+<dd><p>Set <code>CLAUSES</code> to be the clauses associated with <code>OMP_SINGLE</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fPHI.html b/share/doc/gccint/GIMPLE_005fPHI.html
new file mode 100644
index 0000000..ae39eb7
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fPHI.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_PHI</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_PHI">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_PHI">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fRESX.html#GIMPLE_005fRESX" rel="next" title="GIMPLE_RESX">
+<link href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE" rel="previous" title="GIMPLE_OMP_SINGLE">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fPHI"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX" accesskey="n" rel="next"><code>GIMPLE_RESX</code></a>, Previous: <a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE" accesskey="p" rel="previous"><code>GIMPLE_OMP_SINGLE</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fPHI-1"></a>
+<h4 class="subsection">12.8.24 <code>GIMPLE_PHI</code></h4>
+<a name="index-GIMPLE_005fPHI"></a>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fcapacity"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_phi_capacity</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the maximum number of arguments supported by <code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fnum_005fargs"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_phi_num_args</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the number of arguments in <code>GIMPLE_PHI</code> <code>G</code>. This must always
+be exactly the number of incoming edges for the basic block
+holding <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fresult"></a>GIMPLE function: <em>tree</em> <strong>gimple_phi_result</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>SSA</code> name created by <code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fresult_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_phi_result_ptr</strong> <em>(gimple g)</em></dt>
+<dd><p>Return a pointer to the <code>SSA</code> name created by <code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fset_005fresult"></a>GIMPLE function: <em>void</em> <strong>gimple_phi_set_result</strong> <em>(gphi *g, tree result)</em></dt>
+<dd><p>Set <code>RESULT</code> to be the <code>SSA</code> name created by <code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005farg"></a>GIMPLE function: <em>struct phi_arg_d *</em> <strong>gimple_phi_arg</strong> <em>(gimple g, index)</em></dt>
+<dd><p>Return the <code>PHI</code> argument corresponding to incoming edge <code>INDEX</code> for
+<code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fset_005farg"></a>GIMPLE function: <em>void</em> <strong>gimple_phi_set_arg</strong> <em>(gphi *g, index, struct phi_arg_d * phiarg)</em></dt>
+<dd><p>Set <code>PHIARG</code> to be the argument corresponding to incoming edge
+<code>INDEX</code> for <code>GIMPLE_PHI</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fRESX.html b/share/doc/gccint/GIMPLE_005fRESX.html
new file mode 100644
index 0000000..64aa3b6
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fRESX.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_RESX</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_RESX">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_RESX">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN" rel="next" title="GIMPLE_RETURN">
+<link href="GIMPLE_005fPHI.html#GIMPLE_005fPHI" rel="previous" title="GIMPLE_PHI">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fRESX"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN" accesskey="n" rel="next"><code>GIMPLE_RETURN</code></a>, Previous: <a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI" accesskey="p" rel="previous"><code>GIMPLE_PHI</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fRESX-1"></a>
+<h4 class="subsection">12.8.25 <code>GIMPLE_RESX</code></h4>
+<a name="index-GIMPLE_005fRESX"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fresx"></a>GIMPLE function: <em>gresx</em> <strong>*gimple_build_resx</strong> <em>(int region)</em></dt>
+<dd><p>Build a <code>GIMPLE_RESX</code> statement which is a statement. This
+statement is a placeholder for _Unwind_Resume before we know if a
+function call or a branch is needed. <code>REGION</code> is the exception
+region from which control is flowing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fresx_005fregion"></a>GIMPLE function: <em>int</em> <strong>gimple_resx_region</strong> <em>(const gresx *g)</em></dt>
+<dd><p>Return the region number for <code>GIMPLE_RESX</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fresx_005fset_005fregion"></a>GIMPLE function: <em>void</em> <strong>gimple_resx_set_region</strong> <em>(gresx *g, int region)</em></dt>
+<dd><p>Set <code>REGION</code> to be the region number for <code>GIMPLE_RESX</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fRETURN.html b/share/doc/gccint/GIMPLE_005fRETURN.html
new file mode 100644
index 0000000..0e47012
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fRETURN.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_RETURN</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_RETURN">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_RETURN">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH" rel="next" title="GIMPLE_SWITCH">
+<link href="GIMPLE_005fRESX.html#GIMPLE_005fRESX" rel="previous" title="GIMPLE_RESX">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fRETURN"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH" accesskey="n" rel="next"><code>GIMPLE_SWITCH</code></a>, Previous: <a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX" accesskey="p" rel="previous"><code>GIMPLE_RESX</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fRETURN-1"></a>
+<h4 class="subsection">12.8.26 <code>GIMPLE_RETURN</code></h4>
+<a name="index-GIMPLE_005fRETURN"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005freturn"></a>GIMPLE function: <em>greturn</em> <strong>*gimple_build_return</strong> <em>(tree retval)</em></dt>
+<dd><p>Build a <code>GIMPLE_RETURN</code> statement whose return value is retval.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005freturn_005fretval"></a>GIMPLE function: <em>tree</em> <strong>gimple_return_retval</strong> <em>(const greturn *g)</em></dt>
+<dd><p>Return the return value for <code>GIMPLE_RETURN</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005freturn_005fset_005fretval"></a>GIMPLE function: <em>void</em> <strong>gimple_return_set_retval</strong> <em>(greturn *g, tree retval)</em></dt>
+<dd><p>Set <code>RETVAL</code> to be the return value for <code>GIMPLE_RETURN</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fSWITCH.html b/share/doc/gccint/GIMPLE_005fSWITCH.html
new file mode 100644
index 0000000..5f6a7da
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fSWITCH.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_SWITCH</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_SWITCH">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_SWITCH">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fTRY.html#GIMPLE_005fTRY" rel="next" title="GIMPLE_TRY">
+<link href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN" rel="previous" title="GIMPLE_RETURN">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fSWITCH"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY" accesskey="n" rel="next"><code>GIMPLE_TRY</code></a>, Previous: <a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN" accesskey="p" rel="previous"><code>GIMPLE_RETURN</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fSWITCH-1"></a>
+<h4 class="subsection">12.8.27 <code>GIMPLE_SWITCH</code></h4>
+<a name="index-GIMPLE_005fSWITCH"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005fswitch"></a>GIMPLE function: <em>gswitch</em> <strong>*gimple_build_switch</strong> <em>(tree index, tree default_label, <code>vec</code>&lt;tree&gt; *args)</em></dt>
+<dd><p>Build a <code>GIMPLE_SWITCH</code> statement. <code>INDEX</code> is the index variable
+to switch on, and <code>DEFAULT_LABEL</code> represents the default label.
+<code>ARGS</code> is a vector of <code>CASE_LABEL_EXPR</code> trees that contain the
+non-default case labels. Each label is a tree of code <code>CASE_LABEL_EXPR</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fnum_005flabels"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_switch_num_labels</strong> <em>( const gswitch *g)</em></dt>
+<dd><p>Return the number of labels associated with the switch statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fset_005fnum_005flabels"></a>GIMPLE function: <em>void</em> <strong>gimple_switch_set_num_labels</strong> <em>(gswitch *g, unsigned nlabels)</em></dt>
+<dd><p>Set <code>NLABELS</code> to be the number of labels for the switch statement
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005findex"></a>GIMPLE function: <em>tree</em> <strong>gimple_switch_index</strong> <em>(const gswitch *g)</em></dt>
+<dd><p>Return the index variable used by the switch statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fset_005findex"></a>GIMPLE function: <em>void</em> <strong>gimple_switch_set_index</strong> <em>(gswitch *g, tree index)</em></dt>
+<dd><p>Set <code>INDEX</code> to be the index variable for switch statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005flabel"></a>GIMPLE function: <em>tree</em> <strong>gimple_switch_label</strong> <em>(const gswitch *g, unsigned index)</em></dt>
+<dd><p>Return the label numbered <code>INDEX</code>. The default label is 0, followed
+by any labels in a switch statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fset_005flabel"></a>GIMPLE function: <em>void</em> <strong>gimple_switch_set_label</strong> <em>(gswitch *g, unsigned index, tree label)</em></dt>
+<dd><p>Set the label number <code>INDEX</code> to <code>LABEL</code>. 0 is always the default
+label.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fdefault_005flabel"></a>GIMPLE function: <em>tree</em> <strong>gimple_switch_default_label</strong> <em>( const gswitch *g)</em></dt>
+<dd><p>Return the default label for a switch statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fswitch_005fset_005fdefault_005flabel"></a>GIMPLE function: <em>void</em> <strong>gimple_switch_set_default_label</strong> <em>(gswitch *g, tree label)</em></dt>
+<dd><p>Set the default label for a switch statement.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fTRY.html b/share/doc/gccint/GIMPLE_005fTRY.html
new file mode 100644
index 0000000..9bd3e0f
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fTRY.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_TRY</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_TRY">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_TRY">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR" rel="next" title="GIMPLE_WITH_CLEANUP_EXPR">
+<link href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH" rel="previous" title="GIMPLE_SWITCH">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fTRY"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR" accesskey="n" rel="next"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a>, Previous: <a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH" accesskey="p" rel="previous"><code>GIMPLE_SWITCH</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fTRY-1"></a>
+<h4 class="subsection">12.8.28 <code>GIMPLE_TRY</code></h4>
+<a name="index-GIMPLE_005fTRY"></a>
+
+<dl>
+<dt><a name="index-_002agimple_005fbuild_005ftry"></a>GIMPLE function: <em>gtry</em> <strong>*gimple_build_try</strong> <em>(gimple_seq eval, gimple_seq cleanup, unsigned int kind)</em></dt>
+<dd><p>Build a <code>GIMPLE_TRY</code> statement. <code>EVAL</code> is a sequence with the
+expression to evaluate. <code>CLEANUP</code> is a sequence of statements to
+run at clean-up time. <code>KIND</code> is the enumeration value
+<code>GIMPLE_TRY_CATCH</code> if this statement denotes a try/catch construct
+or <code>GIMPLE_TRY_FINALLY</code> if this statement denotes a try/finally
+construct.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fkind"></a>GIMPLE function: <em>enum gimple_try_flags</em> <strong>gimple_try_kind</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the kind of try block represented by <code>GIMPLE_TRY</code> <code>G</code>. This is
+either <code>GIMPLE_TRY_CATCH</code> or <code>GIMPLE_TRY_FINALLY</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fcatch_005fis_005fcleanup"></a>GIMPLE function: <em>bool</em> <strong>gimple_try_catch_is_cleanup</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>GIMPLE_TRY_CATCH_IS_CLEANUP</code> flag.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005feval"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_try_eval</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the sequence of statements used as the body for <code>GIMPLE_TRY</code>
+<code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fcleanup"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_try_cleanup</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the sequence of statements used as the cleanup body for
+<code>GIMPLE_TRY</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fset_005fcatch_005fis_005fcleanup"></a>GIMPLE function: <em>void</em> <strong>gimple_try_set_catch_is_cleanup</strong> <em>(gimple g, bool catch_is_cleanup)</em></dt>
+<dd><p>Set the <code>GIMPLE_TRY_CATCH_IS_CLEANUP</code> flag.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fset_005feval"></a>GIMPLE function: <em>void</em> <strong>gimple_try_set_eval</strong> <em>(gtry *g, gimple_seq eval)</em></dt>
+<dd><p>Set <code>EVAL</code> to be the sequence of statements to use as the body for
+<code>GIMPLE_TRY</code> <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005ftry_005fset_005fcleanup"></a>GIMPLE function: <em>void</em> <strong>gimple_try_set_cleanup</strong> <em>(gtry *g, gimple_seq cleanup)</em></dt>
+<dd><p>Set <code>CLEANUP</code> to be the sequence of statements to use as the
+cleanup body for <code>GIMPLE_TRY</code> <code>G</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html b/share/doc/gccint/GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html
new file mode 100644
index 0000000..8dbe075
--- /dev/null
+++ b/share/doc/gccint/GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GIMPLE_WITH_CLEANUP_EXPR</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GIMPLE_WITH_CLEANUP_EXPR">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GIMPLE_WITH_CLEANUP_EXPR">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="up" title="Tuple specific accessors">
+<link href="GIMPLE-sequences.html#GIMPLE-sequences" rel="next" title="GIMPLE sequences">
+<link href="GIMPLE_005fTRY.html#GIMPLE_005fTRY" rel="previous" title="GIMPLE_TRY">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GIMPLE_005fWITH_005fCLEANUP_005fEXPR"></a>
+<div class="header">
+<p>
+Previous: <a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY" accesskey="p" rel="previous"><code>GIMPLE_TRY</code></a>, Up: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="u" rel="up">Tuple specific accessors</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GIMPLE_005fWITH_005fCLEANUP_005fEXPR-1"></a>
+<h4 class="subsection">12.8.29 <code>GIMPLE_WITH_CLEANUP_EXPR</code></h4>
+<a name="index-GIMPLE_005fWITH_005fCLEANUP_005fEXPR"></a>
+
+<dl>
+<dt><a name="index-gimple_005fbuild_005fwce"></a>GIMPLE function: <em>gimple</em> <strong>gimple_build_wce</strong> <em>(gimple_seq cleanup)</em></dt>
+<dd><p>Build a <code>GIMPLE_WITH_CLEANUP_EXPR</code> statement. <code>CLEANUP</code> is the
+clean-up expression.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fwce_005fcleanup"></a>GIMPLE function: <em>gimple_seq</em> <strong>gimple_wce_cleanup</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the cleanup sequence for cleanup statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fwce_005fset_005fcleanup"></a>GIMPLE function: <em>void</em> <strong>gimple_wce_set_cleanup</strong> <em>(gimple g, gimple_seq cleanup)</em></dt>
+<dd><p>Set <code>CLEANUP</code> to be the cleanup sequence for <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fwce_005fcleanup_005feh_005fonly"></a>GIMPLE function: <em>bool</em> <strong>gimple_wce_cleanup_eh_only</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the <code>CLEANUP_EH_ONLY</code> flag for a <code>WCE</code> tuple.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fwce_005fset_005fcleanup_005feh_005fonly"></a>GIMPLE function: <em>void</em> <strong>gimple_wce_set_cleanup_eh_only</strong> <em>(gimple g, bool eh_only_p)</em></dt>
+<dd><p>Set the <code>CLEANUP_EH_ONLY</code> flag for a <code>WCE</code> tuple.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GNU-Free-Documentation-License.html b/share/doc/gccint/GNU-Free-Documentation-License.html
new file mode 100644
index 0000000..30cc304
--- /dev/null
+++ b/share/doc/gccint/GNU-Free-Documentation-License.html
@@ -0,0 +1,560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GNU Free Documentation License</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GNU Free Documentation License">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GNU Free Documentation License">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Contributors.html#Contributors" rel="next" title="Contributors">
+<link href="Copying.html#Copying" rel="previous" title="Copying">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GNU-Free-Documentation-License"></a>
+<div class="header">
+<p>
+Next: <a href="Contributors.html#Contributors" accesskey="n" rel="next">Contributors</a>, Previous: <a href="Copying.html#Copying" accesskey="p" rel="previous">Copying</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GNU-Free-Documentation-License-1"></a>
+<h2 class="unnumbered">GNU Free Documentation License</h2>
+
+<a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
+<div align="center">Version 1.3, 3 November 2008
+</div>
+<div class="display">
+<pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a href="https://www.fsf.org">https://www.fsf.org</a>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></div>
+
+<ol>
+<li> PREAMBLE
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <em>free</em> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</p>
+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</p>
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</p>
+</li><li> APPLICABILITY AND DEFINITIONS
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</p>
+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</p>
+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document&rsquo;s overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</p>
+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</p>
+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</p>
+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+</p>
+<p>Examples of suitable formats for Transparent copies include plain
+<small>ASCII</small> without markup, Texinfo input format, LaTeX input
+format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
+<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> designed for human modification. Examples
+of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
+<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <acronym>SGML</acronym> or
+<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
+not generally available, and the machine-generated <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> produced by some word processors for
+output purposes only.
+</p>
+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work&rsquo;s title,
+preceding the beginning of the body of the text.
+</p>
+<p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+</p>
+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+</p>
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</p>
+</li><li> VERBATIM COPYING
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</p>
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</p>
+</li><li> COPYING IN QUANTITY
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document&rsquo;s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</p>
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p>
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</p>
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</p>
+</li><li> MODIFICATIONS
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</p>
+<ol>
+<li> Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+</li><li> List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+</li><li> State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+</li><li> Preserve all the copyright notices of the Document.
+
+</li><li> Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+</li><li> Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+</li><li> Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document&rsquo;s license notice.
+
+</li><li> Include an unaltered copy of this License.
+
+</li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+</li><li> Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the &ldquo;History&rdquo; section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+</li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+</li><li> Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+</li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
+may not be included in the Modified Version.
+
+</li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+</li><li> Preserve any Warranty Disclaimers.
+</li></ol>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version&rsquo;s license notice.
+These titles must be distinct from any other section titles.
+</p>
+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</p>
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</p>
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</p>
+</li><li> COMBINING DOCUMENTS
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</p>
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</p>
+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+</p>
+</li><li> COLLECTIONS OF DOCUMENTS
+
+<p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</p>
+<p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+</li><li> AGGREGATION WITH INDEPENDENT WORKS
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation&rsquo;s users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</p>
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+</li><li> TRANSLATION
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</p>
+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</p>
+</li><li> TERMINATION
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</p>
+</li><li> FUTURE REVISIONS OF THIS LICENSE
+
+<p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<a href="https://www.gnu.org/copyleft/">https://www.gnu.org/copyleft/</a>.
+</p>
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy&rsquo;s public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</p>
+</li><li> RELICENSING
+
+<p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</p>
+<p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</p>
+<p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</p>
+<p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</p>
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</p>
+</li></ol>
+
+<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
+<h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</pre></div>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with...Texts.&rdquo; line with this:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
+ the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+ being <var>list</var>.
+</pre></div>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</p>
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Contributors.html#Contributors" accesskey="n" rel="next">Contributors</a>, Previous: <a href="Copying.html#Copying" accesskey="p" rel="previous">Copying</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GNU-Project.html b/share/doc/gccint/GNU-Project.html
new file mode 100644
index 0000000..7d2dde9
--- /dev/null
+++ b/share/doc/gccint/GNU-Project.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GNU Project</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GNU Project">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GNU Project">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Copying.html#Copying" rel="next" title="Copying">
+<link href="Funding.html#Funding" rel="previous" title="Funding">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GNU-Project"></a>
+<div class="header">
+<p>
+Next: <a href="Copying.html#Copying" accesskey="n" rel="next">Copying</a>, Previous: <a href="Funding.html#Funding" accesskey="p" rel="previous">Funding</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-GNU-Project-and-GNU_002fLinux"></a>
+<h2 class="unnumbered">The GNU Project and GNU/Linux</h2>
+
+<p>The GNU Project was launched in 1984 to develop a complete Unix-like
+operating system which is free software: the GNU system. (GNU is a
+recursive acronym for &ldquo;GNU&rsquo;s Not Unix&rdquo;; it is pronounced
+&ldquo;guh-NEW&rdquo;.) Variants of the GNU operating system, which use the
+kernel Linux, are now widely used; though these systems are often
+referred to as &ldquo;Linux&rdquo;, they are more accurately called GNU/Linux
+systems.
+</p>
+<p>For more information, see:
+</p><div class="smallexample">
+<pre class="smallexample"><a href="https://www.gnu.org/">https://www.gnu.org/</a>
+<a href="https://www.gnu.org/gnu/linux-and-gnu.html">https://www.gnu.org/gnu/linux-and-gnu.html</a>
+</pre></div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/GTY-Options.html b/share/doc/gccint/GTY-Options.html
new file mode 100644
index 0000000..711e33d
--- /dev/null
+++ b/share/doc/gccint/GTY-Options.html
@@ -0,0 +1,418 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: GTY Options</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: GTY Options">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: GTY Options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="Inheritance-and-GTY.html#Inheritance-and-GTY" rel="next" title="Inheritance and GTY">
+<link href="Type-Information.html#Type-Information" rel="previous" title="Type Information">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="GTY-Options"></a>
+<div class="header">
+<p>
+Next: <a href="Inheritance-and-GTY.html#Inheritance-and-GTY" accesskey="n" rel="next">Inheritance and GTY</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Inside-of-a-GTY_0028_0028_0029_0029"></a>
+<h3 class="section">23.1 The Inside of a <code>GTY(())</code></h3>
+
+<p>Sometimes the C code is not enough to fully describe the type
+structure. Extra information can be provided with <code>GTY</code> options
+and additional markers. Some options take a parameter, which may be
+either a string or a type name, depending on the parameter. If an
+option takes no parameter, it is acceptable either to omit the
+parameter entirely, or to provide an empty string as a parameter. For
+example, <code>GTY&nbsp;((skip))<!-- /@w --></code> and <code>GTY&nbsp;((skip&nbsp;(&quot;&quot;)))<!-- /@w --></code> are
+equivalent.
+</p>
+<p>When the parameter is a string, often it is a fragment of C code. Four
+special escapes may be used in these strings, to refer to pieces of
+the data structure being marked:
+</p>
+<a name="index-_0025-in-GTY-option"></a>
+<dl compact="compact">
+<dt><code>%h</code></dt>
+<dd><p>The current structure.
+</p></dd>
+<dt><code>%1</code></dt>
+<dd><p>The structure that immediately contains the current structure.
+</p></dd>
+<dt><code>%0</code></dt>
+<dd><p>The outermost structure that contains the current structure.
+</p></dd>
+<dt><code>%a</code></dt>
+<dd><p>A partial expression of the form <code>[i1][i2]&hellip;</code> that indexes
+the array item currently being marked.
+</p></dd>
+</dl>
+
+<p>For instance, suppose that you have a structure of the form
+</p><div class="smallexample">
+<pre class="smallexample">struct A {
+ &hellip;
+};
+struct B {
+ struct A foo[12];
+};
+</pre></div>
+<p>and <code>b</code> is a variable of type <code>struct B</code>. When marking
+&lsquo;<samp>b.foo[11]</samp>&rsquo;, <code>%h</code> would expand to &lsquo;<samp>b.foo[11]</samp>&rsquo;,
+<code>%0</code> and <code>%1</code> would both expand to &lsquo;<samp>b</samp>&rsquo;, and <code>%a</code>
+would expand to &lsquo;<samp>[11]</samp>&rsquo;.
+</p>
+<p>As in ordinary C, adjacent strings will be concatenated; this is
+helpful when you have a complicated expression.
+</p><div class="smallexample">
+<pre class="smallexample">GTY ((chain_next (&quot;TREE_CODE (&amp;%h.generic) == INTEGER_TYPE&quot;
+ &quot; ? TYPE_NEXT_VARIANT (&amp;%h.generic)&quot;
+ &quot; : TREE_CHAIN (&amp;%h.generic)&quot;)))
+</pre></div>
+
+<p>The available options are:
+</p>
+<dl compact="compact">
+<dd><a name="index-length"></a>
+</dd>
+<dt><code>length (&quot;<var>expression</var>&quot;)</code></dt>
+<dd>
+<p>There are two places the type machinery will need to be explicitly told
+the length of an array of non-atomic objects. The first case is when a
+structure ends in a variable-length array, like this:
+</p><div class="smallexample">
+<pre class="smallexample">struct GTY(()) rtvec_def {
+ int num_elem; /* <span class="roman">number of elements</span> */
+ rtx GTY ((length (&quot;%h.num_elem&quot;))) elem[1];
+};
+</pre></div>
+
+<p>In this case, the <code>length</code> option is used to override the specified
+array length (which should usually be <code>1</code>). The parameter of the
+option is a fragment of C code that calculates the length.
+</p>
+<p>The second case is when a structure or a global variable contains a
+pointer to an array, like this:
+</p><div class="smallexample">
+<pre class="smallexample">struct gimple_omp_for_iter * GTY((length (&quot;%h.collapse&quot;))) iter;
+</pre></div>
+<p>In this case, <code>iter</code> has been allocated by writing something like
+</p><div class="smallexample">
+<pre class="smallexample"> x-&gt;iter = ggc_alloc_cleared_vec_gimple_omp_for_iter (collapse);
+</pre></div>
+<p>and the <code>collapse</code> provides the length of the field.
+</p>
+<p>This second use of <code>length</code> also works on global variables, like:
+</p><pre class="verbatim">static GTY((length(&quot;reg_known_value_size&quot;))) rtx *reg_known_value;
+</pre>
+<p>Note that the <code>length</code> option is only meant for use with arrays of
+non-atomic objects, that is, objects that contain pointers pointing to
+other GTY-managed objects. For other GC-allocated arrays and strings
+you should use <code>atomic</code> or <code>string_length</code>.
+</p>
+<a name="index-string_005flength"></a>
+</dd>
+<dt><code>string_length (&quot;<var>expression</var>&quot;)</code></dt>
+<dd>
+<p>In order to simplify production of PCH, a structure member that is a plain
+array of bytes (an optionally <code>const</code> and/or <code>unsigned</code> <code>char
+*</code>) is treated specially by the infrastructure. Even if such an array has not
+been allocated in GC-controlled memory, it will still be written properly into
+a PCH. The machinery responsible for this needs to know the length of the
+data; by default, the length is determined by calling <code>strlen</code> on the
+pointer. The <code>string_length</code> option specifies an alternate way to
+determine the length, such as by inspecting another struct member:
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct GTY(()) non_terminated_string {
+ size_t sz;
+ const char * GTY((string_length (&quot;%h.sz&quot;))) data;
+};
+</pre></div>
+
+<a name="index-skip"></a>
+</dd>
+<dt><code>skip</code></dt>
+<dd>
+<p>If <code>skip</code> is applied to a field, the type machinery will ignore it.
+This is somewhat dangerous; the only safe use is in a union when one
+field really isn&rsquo;t ever used.
+</p>
+<a name="index-callback"></a>
+</dd>
+<dt><code>callback</code></dt>
+<dd>
+<p><code>callback</code> should be applied to fields with pointer to function type
+and causes the field to be ignored similarly to <code>skip</code>, except when
+writing PCH and the field is non-NULL it will remember the field&rsquo;s address
+for relocation purposes if the process writing PCH has different load base
+from a process reading PCH.
+</p>
+<a name="index-for_005fuser"></a>
+</dd>
+<dt><code>for_user</code></dt>
+<dd>
+<p>Use this to mark types that need to be marked by user gc routines, but are not
+refered to in a template argument. So if you have some user gc type T1 and a
+non user gc type T2 you can give T2 the for_user option so that the marking
+functions for T1 can call non mangled functions to mark T2.
+</p>
+<a name="index-desc"></a>
+<a name="index-tag"></a>
+<a name="index-default"></a>
+</dd>
+<dt><code>desc (&quot;<var>expression</var>&quot;)</code></dt>
+<dt><code>tag (&quot;<var>constant</var>&quot;)</code></dt>
+<dt><code>default</code></dt>
+<dd>
+<p>The type machinery needs to be told which field of a <code>union</code> is
+currently active. This is done by giving each field a constant
+<code>tag</code> value, and then specifying a discriminator using <code>desc</code>.
+The value of the expression given by <code>desc</code> is compared against
+each <code>tag</code> value, each of which should be different. If no
+<code>tag</code> is matched, the field marked with <code>default</code> is used if
+there is one, otherwise no field in the union will be marked.
+</p>
+<p>In the <code>desc</code> option, the &ldquo;current structure&rdquo; is the union that
+it discriminates. Use <code>%1</code> to mean the structure containing it.
+There are no escapes available to the <code>tag</code> option, since it is a
+constant.
+</p>
+<p>For example,
+</p><div class="smallexample">
+<pre class="smallexample">struct GTY(()) tree_binding
+{
+ struct tree_common common;
+ union tree_binding_u {
+ tree GTY ((tag (&quot;0&quot;))) scope;
+ struct cp_binding_level * GTY ((tag (&quot;1&quot;))) level;
+ } GTY ((desc (&quot;BINDING_HAS_LEVEL_P ((tree)&amp;%0)&quot;))) xscope;
+ tree value;
+};
+</pre></div>
+
+<p>In this example, the value of BINDING_HAS_LEVEL_P when applied to a
+<code>struct tree_binding *</code> is presumed to be 0 or 1. If 1, the type
+mechanism will treat the field <code>level</code> as being present and if 0,
+will treat the field <code>scope</code> as being present.
+</p>
+<p>The <code>desc</code> and <code>tag</code> options can also be used for inheritance
+to denote which subclass an instance is. See <a href="Inheritance-and-GTY.html#Inheritance-and-GTY">Inheritance and GTY</a>
+for more information.
+</p>
+<a name="index-cache"></a>
+</dd>
+<dt><code>cache</code></dt>
+<dd>
+<p>When the <code>cache</code> option is applied to a global variable gt_cleare_cache is
+called on that variable between the mark and sweep phases of garbage
+collection. The gt_clear_cache function is free to mark blocks as used, or to
+clear pointers in the variable.
+</p>
+<a name="index-deletable"></a>
+</dd>
+<dt><code>deletable</code></dt>
+<dd>
+<p><code>deletable</code>, when applied to a global variable, indicates that when
+garbage collection runs, there&rsquo;s no need to mark anything pointed to
+by this variable, it can just be set to <code>NULL</code> instead. This is used
+to keep a list of free structures around for re-use.
+</p>
+<a name="index-maybe_005fundef"></a>
+</dd>
+<dt><code>maybe_undef</code></dt>
+<dd>
+<p>When applied to a field, <code>maybe_undef</code> indicates that it&rsquo;s OK if
+the structure that this fields points to is never defined, so long as
+this field is always <code>NULL</code>. This is used to avoid requiring
+backends to define certain optional structures. It doesn&rsquo;t work with
+language frontends.
+</p>
+<a name="index-nested_005fptr"></a>
+</dd>
+<dt><code>nested_ptr (<var>type</var>, &quot;<var>to expression</var>&quot;, &quot;<var>from expression</var>&quot;)</code></dt>
+<dd>
+<p>The type machinery expects all pointers to point to the start of an
+object. Sometimes for abstraction purposes it&rsquo;s convenient to have
+a pointer which points inside an object. So long as it&rsquo;s possible to
+convert the original object to and from the pointer, such pointers
+can still be used. <var>type</var> is the type of the original object,
+the <var>to expression</var> returns the pointer given the original object,
+and the <var>from expression</var> returns the original object given
+the pointer. The pointer will be available using the <code>%h</code>
+escape.
+</p>
+<a name="index-chain_005fnext"></a>
+<a name="index-chain_005fprev"></a>
+<a name="index-chain_005fcircular"></a>
+</dd>
+<dt><code>chain_next (&quot;<var>expression</var>&quot;)</code></dt>
+<dt><code>chain_prev (&quot;<var>expression</var>&quot;)</code></dt>
+<dt><code>chain_circular (&quot;<var>expression</var>&quot;)</code></dt>
+<dd>
+<p>It&rsquo;s helpful for the type machinery to know if objects are often
+chained together in long lists; this lets it generate code that uses
+less stack space by iterating along the list instead of recursing down
+it. <code>chain_next</code> is an expression for the next item in the list,
+<code>chain_prev</code> is an expression for the previous item. For singly
+linked lists, use only <code>chain_next</code>; for doubly linked lists, use
+both. The machinery requires that taking the next item of the
+previous item gives the original item. <code>chain_circular</code> is similar
+to <code>chain_next</code>, but can be used for circular single linked lists.
+</p>
+<a name="index-reorder"></a>
+</dd>
+<dt><code>reorder (&quot;<var>function name</var>&quot;)</code></dt>
+<dd>
+<p>Some data structures depend on the relative ordering of pointers. If
+the precompiled header machinery needs to change that ordering, it
+will call the function referenced by the <code>reorder</code> option, before
+changing the pointers in the object that&rsquo;s pointed to by the field the
+option applies to. The function must take four arguments, with the
+signature &lsquo;<samp>void&nbsp;*,&nbsp;void&nbsp;*,&nbsp;<span class="nolinebreak">gt_pointer_operator,</span>&nbsp;void&nbsp;*<!-- /@w --></samp>&rsquo;.
+The first parameter is a pointer to the structure that contains the
+object being updated, or the object itself if there is no containing
+structure. The second parameter is a cookie that should be ignored.
+The third parameter is a routine that, given a pointer, will update it
+to its correct new value. The fourth parameter is a cookie that must
+be passed to the second parameter.
+</p>
+<p>PCH cannot handle data structures that depend on the absolute values
+of pointers. <code>reorder</code> functions can be expensive. When
+possible, it is better to depend on properties of the data, like an ID
+number or the hash of a string instead.
+</p>
+<a name="index-atomic"></a>
+</dd>
+<dt><code>atomic</code></dt>
+<dd>
+<p>The <code>atomic</code> option can only be used with pointers. It informs
+the GC machinery that the memory that the pointer points to does not
+contain any pointers, and hence it should be treated by the GC and PCH
+machinery as an &ldquo;atomic&rdquo; block of memory that does not need to be
+examined when scanning memory for pointers. In particular, the
+machinery will not scan that memory for pointers to mark them as
+reachable (when marking pointers for GC) or to relocate them (when
+writing a PCH file).
+</p>
+<p>The <code>atomic</code> option differs from the <code>skip</code> option.
+<code>atomic</code> keeps the memory under Garbage Collection, but makes the
+GC ignore the contents of the memory. <code>skip</code> is more drastic in
+that it causes the pointer and the memory to be completely ignored by
+the Garbage Collector. So, memory marked as <code>atomic</code> is
+automatically freed when no longer reachable, while memory marked as
+<code>skip</code> is not.
+</p>
+<p>The <code>atomic</code> option must be used with great care, because all
+sorts of problem can occur if used incorrectly, that is, if the memory
+the pointer points to does actually contain a pointer.
+</p>
+<p>Here is an example of how to use it:
+</p><div class="smallexample">
+<pre class="smallexample">struct GTY(()) my_struct {
+ int number_of_elements;
+ unsigned int * GTY ((atomic)) elements;
+};
+</pre></div>
+<p>In this case, <code>elements</code> is a pointer under GC, and the memory it
+points to needs to be allocated using the Garbage Collector, and will
+be freed automatically by the Garbage Collector when it is no longer
+referenced. But the memory that the pointer points to is an array of
+<code>unsigned int</code> elements, and the GC must not try to scan it to
+find pointers to mark or relocate, which is why it is marked with the
+<code>atomic</code> option.
+</p>
+<p>Note that, currently, global variables cannot be marked with
+<code>atomic</code>; only fields of a struct can. This is a known
+limitation. It would be useful to be able to mark global pointers
+with <code>atomic</code> to make the PCH machinery aware of them so that
+they are saved and restored correctly to PCH files.
+</p>
+<a name="index-special"></a>
+</dd>
+<dt><code>special (&quot;<var>name</var>&quot;)</code></dt>
+<dd>
+<p>The <code>special</code> option is used to mark types that have to be dealt
+with by special case machinery. The parameter is the name of the
+special case. See <samp>gengtype.cc</samp> for further details. Avoid
+adding new special cases unless there is no other alternative.
+</p>
+<a name="index-user"></a>
+</dd>
+<dt><code>user</code></dt>
+<dd>
+<p>The <code>user</code> option indicates that the code to mark structure
+fields is completely handled by user-provided routines. See section
+<a href="User-GC.html#User-GC">User GC</a> for details on what functions need to be provided.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Inheritance-and-GTY.html#Inheritance-and-GTY" accesskey="n" rel="next">Inheritance and GTY</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Gimplification-pass.html b/share/doc/gccint/Gimplification-pass.html
new file mode 100644
index 0000000..97a6f4f
--- /dev/null
+++ b/share/doc/gccint/Gimplification-pass.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Gimplification pass</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Gimplification pass">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Gimplification pass">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="Pass-manager.html#Pass-manager" rel="next" title="Pass manager">
+<link href="Parsing-pass.html#Parsing-pass" rel="previous" title="Parsing pass">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Gimplification-pass"></a>
+<div class="header">
+<p>
+Next: <a href="Pass-manager.html#Pass-manager" accesskey="n" rel="next">Pass manager</a>, Previous: <a href="Parsing-pass.html#Parsing-pass" accesskey="p" rel="previous">Parsing pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Gimplification-pass-1"></a>
+<h3 class="section">9.2 Gimplification pass</h3>
+
+<a name="index-gimplification-1"></a>
+<a name="index-GIMPLE-1"></a>
+<p><em>Gimplification</em> is a whimsical term for the process of converting
+the intermediate representation of a function into the GIMPLE language
+(see <a href="GIMPLE.html#GIMPLE">GIMPLE</a>). The term stuck, and so words like &ldquo;gimplification&rdquo;,
+&ldquo;gimplify&rdquo;, &ldquo;gimplifier&rdquo; and the like are sprinkled throughout this
+section of code.
+</p>
+<p>While a front end may certainly choose to generate GIMPLE directly if
+it chooses, this can be a moderately complex process unless the
+intermediate language used by the front end is already fairly simple.
+Usually it is easier to generate GENERIC trees plus extensions
+and let the language-independent gimplifier do most of the work.
+</p>
+<a name="index-gimplify_005ffunction_005ftree"></a>
+<a name="index-gimplify_005fexpr"></a>
+<a name="index-lang_005fhooks_002egimplify_005fexpr"></a>
+<p>The main entry point to this pass is <code>gimplify_function_tree</code>
+located in <samp>gimplify.cc</samp>. From here we process the entire
+function gimplifying each statement in turn. The main workhorse
+for this pass is <code>gimplify_expr</code>. Approximately everything
+passes through here at least once, and it is from here that we
+invoke the <code>lang_hooks.gimplify_expr</code> callback.
+</p>
+<p>The callback should examine the expression in question and return
+<code>GS_UNHANDLED</code> if the expression is not a language specific
+construct that requires attention. Otherwise it should alter the
+expression in some way to such that forward progress is made toward
+producing valid GIMPLE. If the callback is certain that the
+transformation is complete and the expression is valid GIMPLE, it
+should return <code>GS_ALL_DONE</code>. Otherwise it should return
+<code>GS_OK</code>, which will cause the expression to be processed again.
+If the callback encounters an error during the transformation (because
+the front end is relying on the gimplification process to finish
+semantic checks), it should return <code>GS_ERROR</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pass-manager.html#Pass-manager" accesskey="n" rel="next">Pass manager</a>, Previous: <a href="Parsing-pass.html#Parsing-pass" accesskey="p" rel="previous">Parsing pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Guidelines-for-Diagnostics.html b/share/doc/gccint/Guidelines-for-Diagnostics.html
new file mode 100644
index 0000000..fb08b39
--- /dev/null
+++ b/share/doc/gccint/Guidelines-for-Diagnostics.html
@@ -0,0 +1,677 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Guidelines for Diagnostics</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Guidelines for Diagnostics">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Guidelines for Diagnostics">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="User-Experience-Guidelines.html#User-Experience-Guidelines" rel="up" title="User Experience Guidelines">
+<link href="Guidelines-for-Options.html#Guidelines-for-Options" rel="next" title="Guidelines for Options">
+<link href="User-Experience-Guidelines.html#User-Experience-Guidelines" rel="previous" title="User Experience Guidelines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Guidelines-for-Diagnostics"></a>
+<div class="header">
+<p>
+Next: <a href="Guidelines-for-Options.html#Guidelines-for-Options" accesskey="n" rel="next">Guidelines for Options</a>, Up: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="u" rel="up">User Experience Guidelines</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Guidelines-for-Diagnostics-1"></a>
+<h3 class="section">28.1 Guidelines for Diagnostics</h3>
+<a name="index-guidelines-for-diagnostics"></a>
+<a name="index-diagnostics_002c-guidelines-for"></a>
+
+<a name="Talk-in-terms-of-the-user_0027s-code"></a>
+<h4 class="subsection">28.1.1 Talk in terms of the user&rsquo;s code</h4>
+
+<p>Diagnostics should be worded in terms of the user&rsquo;s source code, and the
+source language, rather than GCC&rsquo;s own implementation details.
+</p>
+<a name="Diagnostics-are-actionable"></a>
+<h4 class="subsection">28.1.2 Diagnostics are actionable</h4>
+<a name="index-diagnostics_002c-actionable"></a>
+
+<p>A good diagnostic is <em>actionable</em>: it should assist the user in
+taking action.
+</p>
+<p>Consider what an end user will want to do when encountering a diagnostic.
+</p>
+<p>Given an error, an end user will think: &ldquo;How do I fix this?&rdquo;
+</p>
+<p>Given a warning, an end user will think:
+</p>
+<ul>
+<li> &ldquo;Is this a real problem?&rdquo;
+</li><li> &ldquo;Do I care?&rdquo;
+</li><li> if they decide it&rsquo;s genuine: &ldquo;How do I fix this?&rdquo;
+</li></ul>
+
+<p>A good diagnostic provides pertinent information to allow the user to
+easily answer the above questions.
+</p>
+<a name="The-user_0027s-attention-is-important"></a>
+<h4 class="subsection">28.1.3 The user&rsquo;s attention is important</h4>
+
+<p>A perfect compiler would issue a warning on every aspect of the user&rsquo;s
+source code that ought to be fixed, and issue no other warnings.
+Naturally, this ideal is impossible to achieve.
+</p>
+<a name="index-signal_002dto_002dnoise-ratio-_0028metaphorical-usage-for-diagnostics_0029"></a>
+<a name="index-diagnostics_002c-false-positive"></a>
+<a name="index-diagnostics_002c-true-positive"></a>
+<a name="index-false-positive"></a>
+<a name="index-true-positive"></a>
+
+<p>Warnings should have a good <em>signal-to-noise ratio</em>: we should have few
+<em>false positives</em> (falsely issuing a warning when no warning is
+warranted) and few <em>false negatives</em> (failing to issue a warning when
+one <em>is</em> justified).
+</p>
+<p>Note that a false positive can mean, in practice, a warning that the
+user doesn&rsquo;t agree with. Ideally a diagnostic should contain enough
+information to allow the user to make an informed choice about whether
+they should care (and how to fix it), but a balance must be drawn against
+overloading the user with irrelevant data.
+</p>
+<a name="Sometimes-the-user-didn_0027t-write-the-code"></a>
+<h4 class="subsection">28.1.4 Sometimes the user didn&rsquo;t write the code</h4>
+
+<p>GCC is typically used in two different ways:
+</p>
+<ul>
+<li> Semi-interactive usage: GCC is used as a development tool when the user
+is writing code, as the &ldquo;compile&rdquo; part of the &ldquo;edit-compile-debug&rdquo;
+cycle. The user is actively hacking on the code themself (perhaps a
+project they wrote, or someone else&rsquo;s), where they just made a change
+to the code and want to see what happens, and to be warned about
+mistakes.
+
+</li><li> Batch rebuilds: where the user is recompiling one or more existing
+packages, and GCC is a detail that&rsquo;s being invoked by various build
+scripts. Examples include a user trying to bring up an operating system
+consisting of hundreds of packages on a new CPU architecture, where the
+packages were written by many different people, or simply rebuilding
+packages after a dependency changed, where the user is hoping
+&ldquo;nothing breaks&rdquo;, since they are unfamiliar with the code.
+</li></ul>
+
+<p>Keep both of these styles of usage in mind when implementing diagnostics.
+</p>
+<a name="Precision-of-Wording"></a>
+<h4 class="subsection">28.1.5 Precision of Wording</h4>
+
+<p>Provide the user with details that allow them to identify what the
+problem is. For example, the vaguely-worded message:
+</p>
+<div class="smallexample">
+<pre class="smallexample">demo.c:1:1: warning: 'noinline' attribute ignored [-Wattributes]
+ 1 | int foo __attribute__((noinline));
+ | ^~~
+</pre></div>
+
+<p>doesn&rsquo;t tell the user why the attribute was ignored, or what kind of
+entity the compiler thought the attribute was being applied to (the
+source location for the diagnostic is also poor;
+see <a href="#input_005flocation_005fexample">discussion of <code>input_location</code></a>).
+A better message would be:
+</p>
+<div class="smallexample">
+<pre class="smallexample">demo.c:1:24: warning: attribute 'noinline' on variable 'foo' was
+ ignored [-Wattributes]
+ 1 | int foo __attribute__((noinline));
+ | ~~~ ~~~~~~~~~~~~~~~^~~~~~~~~
+demo.c:1:24: note: attribute 'noinline' is only applicable to functions
+</pre></div>
+
+<p>which spells out the missing information (and fixes the location
+information, as discussed below).
+</p>
+<p>The above example uses a note to avoid a combinatorial explosion of possible
+messages.
+</p>
+<a name="Try-the-diagnostic-on-real_002dworld-code"></a>
+<h4 class="subsection">28.1.6 Try the diagnostic on real-world code</h4>
+
+<p>It&rsquo;s worth testing a new warning on many instances of real-world code,
+written by different people, and seeing what it complains about, and
+what it doesn&rsquo;t complain about.
+</p>
+<p>This may suggest heuristics that silence common false positives.
+</p>
+<p>It may also suggest ways to improve the precision of the message.
+</p>
+<a name="Make-mismatches-clear"></a>
+<h4 class="subsection">28.1.7 Make mismatches clear</h4>
+
+<p>Many diagnostics relate to a mismatch between two different places in the
+user&rsquo;s source code. Examples include:
+</p><ul>
+<li> a type mismatch, where the type at a usage site does not match the type
+ at a declaration
+
+</li><li> the argument count at a call site does not match the parameter count
+ at the declaration
+
+</li><li> something is erroneously duplicated (e.g. an error, due to breaking a
+ uniqueness requirement, or a warning, if it&rsquo;s suggestive of a bug)
+
+</li><li> an &ldquo;opened&rdquo; syntactic construct (such as an open-parenthesis) is not
+ closed
+
+</li></ul>
+
+<p>In each case, the diagnostic should indicate <strong>both</strong> pertinent
+locations (so that the user can easily see the problem and how to fix it).
+</p>
+<p>The standard way to do this is with a note (via <code>inform</code>). For
+example:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> auto_diagnostic_group d;
+ if (warning_at (loc, OPT_Wduplicated_cond,
+ &quot;duplicated %&lt;if%&gt; condition&quot;))
+ inform (EXPR_LOCATION (t), &quot;previously used here&quot;);
+</pre></div>
+
+<p>which leads to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">demo.c: In function 'test':
+demo.c:5:17: warning: duplicated 'if' condition [-Wduplicated-cond]
+ 5 | else if (flag &gt; 3)
+ | ~~~~~^~~
+demo.c:3:12: note: previously used here
+ 3 | if (flag &gt; 3)
+ | ~~~~~^~~
+</pre></div>
+
+<p>The <code>inform</code> call should be guarded by the return value from the
+<code>warning_at</code> call so that the note isn&rsquo;t emitted when the warning
+is suppressed.
+</p>
+<p>For cases involving punctuation where the locations might be near
+each other, they can be conditionally consolidated via
+<code>gcc_rich_location::add_location_if_nearby</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> auto_diagnostic_group d;
+ gcc_rich_location richloc (primary_loc);
+ bool added secondary = richloc.add_location_if_nearby (secondary_loc);
+ error_at (&amp;richloc, &quot;main message&quot;);
+ if (!added secondary)
+ inform (secondary_loc, &quot;message for secondary&quot;);
+</pre></div>
+
+<p>This will emit either one diagnostic with two locations:
+</p><div class="smallexample">
+<pre class="smallexample"> demo.c:42:10: error: main message
+ (foo)
+ ~ ^
+</pre></div>
+
+<p>or two diagnostics:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> demo.c:42:4: error: main message
+ foo)
+ ^
+ demo.c:40:2: note: message for secondary
+ (
+ ^
+</pre></div>
+
+<a name="Location-Information"></a>
+<h4 class="subsection">28.1.8 Location Information</h4>
+<a name="index-diagnostics_002c-locations"></a>
+<a name="index-location-information"></a>
+<a name="index-source-code_002c-location-information"></a>
+<a name="index-caret-1"></a>
+
+<p>GCC&rsquo;s <code>location_t</code> type can support both ordinary locations,
+and locations relating to a macro expansion.
+</p>
+<p>As of GCC 6, ordinary locations changed from supporting just a
+point in the user&rsquo;s source code to supporting three points: the
+<em>caret</em> location, plus a start and a finish:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> a = foo &amp;&amp; bar;
+ ~~~~^~~~~~
+ | | |
+ | | finish
+ | caret
+ start
+</pre></div>
+
+<p>Tokens coming out of libcpp have locations of the form <code>caret == start</code>,
+such as for <code>foo</code> here:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> a = foo &amp;&amp; bar;
+ ^~~
+ | |
+ | finish
+ caret == start
+</pre></div>
+
+<p>Compound expressions should be reported using the location of the
+expression as a whole, rather than just of one token within it.
+</p>
+<p>For example, in <code>-Wformat</code>, rather than underlining just the first
+token of a bad argument:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> printf(&quot;hello %i %s&quot;, (long)0, &quot;world&quot;);
+ ~^ ~
+ %li
+</pre></div>
+
+<p>the whole of the expression should be underlined, so that the user can
+easily identify what is being referred to:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> printf(&quot;hello %i %s&quot;, (long)0, &quot;world&quot;);
+ ~^ ~~~~~~~
+ %li
+</pre></div>
+
+
+<p>Avoid using the <code>input_location</code> global, and the diagnostic functions
+that implicitly use it&mdash;use <code>error_at</code> and <code>warning_at</code> rather
+than <code>error</code> and <code>warning</code>, and provide the most appropriate
+<code>location_t</code> value available at that phase of the compilation. It&rsquo;s
+possible to supply secondary <code>location_t</code> values via
+<code>rich_location</code>.
+</p>
+<a name="input_005flocation_005fexample"></a><p>For example, in the example of imprecise wording above, generating the
+diagnostic using <code>warning</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> // BAD: implicitly uses <code>input_location</code>
+ warning (OPT_Wattributes, &quot;%qE attribute ignored&quot;, name);
+</pre></div>
+
+<p>leads to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">// BAD: uses <code>input_location</code>
+demo.c:1:1: warning: 'noinline' attribute ignored [-Wattributes]
+ 1 | int foo __attribute__((noinline));
+ | ^~~
+</pre></div>
+
+<p>which thus happened to use the location of the <code>int</code> token, rather
+than that of the attribute. Using <code>warning_at</code> with the location of
+the attribute, providing the location of the declaration in question
+as a secondary location, and adding a note:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> auto_diagnostic_group d;
+ gcc_rich_location richloc (attrib_loc);
+ richloc.add_range (decl_loc);
+ if (warning_at (OPT_Wattributes, &amp;richloc,
+ &quot;attribute %qE on variable %qE was ignored&quot;, name))
+ inform (attrib_loc, &quot;attribute %qE is only applicable to functions&quot;);
+</pre></div>
+
+<p>would lead to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">// OK: use location of attribute, with a secondary location
+demo.c:1:24: warning: attribute 'noinline' on variable 'foo' was
+ ignored [-Wattributes]
+ 1 | int foo __attribute__((noinline));
+ | ~~~ ~~~~~~~~~~~~~~~^~~~~~~~~
+demo.c:1:24: note: attribute 'noinline' is only applicable to functions
+</pre></div>
+
+
+<a name="Coding-Conventions"></a>
+<h4 class="subsection">28.1.9 Coding Conventions</h4>
+
+<p>See the <a href="https://gcc.gnu.org/codingconventions.html#Diagnostics">diagnostics section</a> of the GCC coding conventions.
+</p>
+<p>In the C++ front end, when comparing two types in a message, use &lsquo;<samp>%H</samp>&rsquo;
+and &lsquo;<samp>%I</samp>&rsquo; rather than &lsquo;<samp>%T</samp>&rsquo;, as this allows the diagnostics
+subsystem to highlight differences between template-based types.
+For example, rather than using &lsquo;<samp>%qT</samp>&rsquo;:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> // BAD: a pair of %qT used in C++ front end for type comparison
+ error_at (loc, &quot;could not convert %qE from %qT to %qT&quot;, expr,
+ TREE_TYPE (expr), type);
+</pre></div>
+
+<p>which could lead to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">error: could not convert 'map&lt;int, double&gt;()' from 'map&lt;int,double&gt;'
+ to 'map&lt;int,int&gt;'
+</pre></div>
+
+<p>using &lsquo;<samp>%H</samp>&rsquo; and &lsquo;<samp>%I</samp>&rsquo; (via &lsquo;<samp>%qH</samp>&rsquo; and &lsquo;<samp>%qI</samp>&rsquo;):
+</p>
+<div class="smallexample">
+<pre class="smallexample"> // OK: compare types in C++ front end via %qH and %qI
+ error_at (loc, &quot;could not convert %qE from %qH to %qI&quot;, expr,
+ TREE_TYPE (expr), type);
+</pre></div>
+
+<p>allows the above output to be simplified to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">error: could not convert 'map&lt;int, double&gt;()' from 'map&lt;[...],double&gt;'
+ to 'map&lt;[...],int&gt;'
+</pre></div>
+
+<p>where the <code>double</code> and <code>int</code> are colorized to highlight them.
+</p>
+
+<a name="Group-logically_002drelated-diagnostics"></a>
+<h4 class="subsection">28.1.10 Group logically-related diagnostics</h4>
+
+<p>Use <code>auto_diagnostic_group</code> when issuing multiple related
+diagnostics (seen in various examples on this page). This informs the
+diagnostic subsystem that all diagnostics issued within the lifetime
+of the <code>auto_diagnostic_group</code> are related. For example,
+<samp>-fdiagnostics-format=json</samp> will treat the first diagnostic
+emitted within the group as a top-level diagnostic, and all subsequent
+diagnostics within the group as its children.
+</p>
+<a name="Quoting"></a>
+<h4 class="subsection">28.1.11 Quoting</h4>
+<p>Text should be quoted by either using the &lsquo;<samp>q</samp>&rsquo; modifier in a directive
+such as &lsquo;<samp>%qE</samp>&rsquo;, or by enclosing the quoted text in a pair of &lsquo;<samp>%&lt;</samp>&rsquo;
+and &lsquo;<samp>%&gt;</samp>&rsquo; directives, and never by using explicit quote characters.
+The directives handle the appropriate quote characters for each language
+and apply the correct color or highlighting.
+</p>
+<p>The following elements should be quoted in GCC diagnostics:
+</p>
+<ul>
+<li> Language keywords.
+</li><li> Tokens.
+</li><li> Boolean, numerical, character, and string constants that appear in the
+source code.
+</li><li> Identifiers, including function, macro, type, and variable names.
+</li></ul>
+
+<p>Other elements such as numbers that do not refer to numeric constants that
+appear in the source code should not be quoted. For example, in the message:
+</p>
+<div class="smallexample">
+<pre class="smallexample">argument %d of %qE must be a pointer type
+</pre></div>
+
+<p>since the argument number does not refer to a numerical constant in the
+source code it should not be quoted.
+</p>
+<a name="Spelling-and-Terminology"></a>
+<h4 class="subsection">28.1.12 Spelling and Terminology</h4>
+
+<p>See the <a href="https://gcc.gnu.org/codingconventions.html#Spelling
+Spelling">terminology and markup</a> section of the GCC coding conventions.
+</p>
+<a name="Fix_002dit-hints"></a>
+<h4 class="subsection">28.1.13 Fix-it hints</h4>
+<a name="index-fix_002dit-hints"></a>
+<a name="index-diagnostics-guidelines_002c-fix_002dit-hints"></a>
+
+<p>GCC&rsquo;s diagnostic subsystem can emit <em>fix-it hints</em>: small suggested
+edits to the user&rsquo;s source code.
+</p>
+<p>They are printed by default underneath the code in question. They
+can also be viewed via <samp>-fdiagnostics-generate-patch</samp> and
+<samp>-fdiagnostics-parseable-fixits</samp>. With the latter, an IDE
+ought to be able to offer to automatically apply the suggested fix.
+</p>
+<p>Fix-it hints contain code fragments, and thus they should not be marked
+for translation.
+</p>
+<p>Fix-it hints can be added to a diagnostic by using a <code>rich_location</code>
+rather than a <code>location_t</code> - the fix-it hints are added to the
+<code>rich_location</code> using one of the various <code>add_fixit</code> member
+functions of <code>rich_location</code>. They are documented with
+<code>rich_location</code> in <samp>libcpp/line-map.h</samp>.
+It&rsquo;s easiest to use the <code>gcc_rich_location</code> subclass of
+<code>rich_location</code> found in <samp>gcc-rich-location.h</samp>, as this
+implicitly supplies the <code>line_table</code> variable.
+</p>
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> if (const char *suggestion = hint.suggestion ())
+ {
+ gcc_rich_location richloc (location);
+ richloc.add_fixit_replace (suggestion);
+ error_at (&amp;richloc,
+ &quot;%qE does not name a type; did you mean %qs?&quot;,
+ id, suggestion);
+ }
+</pre></div>
+
+<p>which can lead to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">spellcheck-typenames.C:73:1: error: 'singed' does not name a type; did
+ you mean 'signed'?
+ 73 | singed char ch;
+ | ^~~~~~
+ | signed
+</pre></div>
+
+<p>Non-trivial edits can be built up by adding multiple fix-it hints to one
+<code>rich_location</code>. It&rsquo;s best to express the edits in terms of the
+locations of individual tokens. Various handy functions for adding
+fix-it hints for idiomatic C and C++ can be seen in
+<samp>gcc-rich-location.h</samp>.
+</p>
+<a name="Fix_002dit-hints-should-work"></a>
+<h4 class="subsubsection">28.1.13.1 Fix-it hints should work</h4>
+
+<p>When implementing a fix-it hint, please verify that the suggested edit
+leads to fixed, compilable code. (Unfortunately, this currently must be
+done by hand using <samp>-fdiagnostics-generate-patch</samp>. It would be
+good to have an automated way of verifying that fix-it hints actually fix
+the code).
+</p>
+<p>For example, a &ldquo;gotcha&rdquo; here is to forget to add a space when adding a
+missing reserved word. Consider a C++ fix-it hint that adds
+<code>typename</code> in front of a template declaration. A naive way to
+implement this might be:
+</p>
+<div class="smallexample">
+<pre class="smallexample">gcc_rich_location richloc (loc);
+// BAD: insertion is missing a trailing space
+richloc.add_fixit_insert_before (&quot;typename&quot;);
+error_at (&amp;richloc, &quot;need %&lt;typename%&gt; before %&lt;%T::%E%&gt; because &quot;
+ &quot;%qT is a dependent scope&quot;,
+ parser-&gt;scope, id, parser-&gt;scope);
+</pre></div>
+
+<p>When applied to the code, this might lead to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">T::type x;
+</pre></div>
+
+<p>being &ldquo;corrected&rdquo; to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">typenameT::type x;
+</pre></div>
+
+<p>In this case, the correct thing to do is to add a trailing space after
+<code>typename</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">gcc_rich_location richloc (loc);
+// OK: note that here we have a trailing space
+richloc.add_fixit_insert_before (&quot;typename &quot;);
+error_at (&amp;richloc, &quot;need %&lt;typename%&gt; before %&lt;%T::%E%&gt; because &quot;
+ &quot;%qT is a dependent scope&quot;,
+ parser-&gt;scope, id, parser-&gt;scope);
+</pre></div>
+
+<p>leading to this corrected code:
+</p>
+<div class="smallexample">
+<pre class="smallexample">typename T::type x;
+</pre></div>
+
+<a name="Express-deletion-in-terms-of-deletion_002c-not-replacement"></a>
+<h4 class="subsubsection">28.1.13.2 Express deletion in terms of deletion, not replacement</h4>
+
+<p>It&rsquo;s best to express deletion suggestions in terms of deletion fix-it
+hints, rather than replacement fix-it hints. For example, consider this:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> auto_diagnostic_group d;
+ gcc_rich_location richloc (location_of (retval));
+ tree name = DECL_NAME (arg);
+ richloc.add_fixit_replace (IDENTIFIER_POINTER (name));
+ warning_at (&amp;richloc, OPT_Wredundant_move,
+ &quot;redundant move in return statement&quot;);
+</pre></div>
+
+<p>which is intended to e.g. replace a <code>std::move</code> with the underlying
+value:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> return std::move (retval);
+ ~~~~~~~~~~^~~~~~~~
+ retval
+</pre></div>
+
+<p>where the change has been expressed as replacement, replacing
+with the name of the declaration.
+This works for simple cases, but consider this case:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#ifdef SOME_CONFIG_FLAG
+# define CONFIGURY_GLOBAL global_a
+#else
+# define CONFIGURY_GLOBAL global_b
+#endif
+
+int fn ()
+{
+ return std::move (CONFIGURY_GLOBAL /* some comment */);
+}
+</pre></div>
+
+<p>The above implementation erroneously strips out the macro and the
+comment in the fix-it hint:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> return std::move (CONFIGURY_GLOBAL /* some comment */);
+ ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ global_a
+</pre></div>
+
+<p>and thus this resulting code:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> return global_a;
+</pre></div>
+
+<p>It&rsquo;s better to do deletions in terms of deletions; deleting the
+<code>std::move (</code> and the trailing close-paren, leading to
+this:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> return std::move (CONFIGURY_GLOBAL /* some comment */);
+ ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CONFIGURY_GLOBAL /* some comment */
+</pre></div>
+
+<p>and thus this result:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> return CONFIGURY_GLOBAL /* some comment */;
+</pre></div>
+
+<p>Unfortunately, the pertinent <code>location_t</code> values are not always
+available.
+</p>
+
+<a name="Multiple-suggestions"></a>
+<h4 class="subsubsection">28.1.13.3 Multiple suggestions</h4>
+
+<p>In the rare cases where you need to suggest more than one mutually
+exclusive solution to a problem, this can be done by emitting
+multiple notes and calling
+<code>rich_location::fixits_cannot_be_auto_applied</code> on each note&rsquo;s
+<code>rich_location</code>. If this is called, then the fix-it hints in
+the <code>rich_location</code> will be printed, but will not be added to
+generated patches.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Guidelines-for-Options.html#Guidelines-for-Options" accesskey="n" rel="next">Guidelines for Options</a>, Up: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="u" rel="up">User Experience Guidelines</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Guidelines-for-Options.html b/share/doc/gccint/Guidelines-for-Options.html
new file mode 100644
index 0000000..223e1a3
--- /dev/null
+++ b/share/doc/gccint/Guidelines-for-Options.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Guidelines for Options</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Guidelines for Options">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Guidelines for Options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="User-Experience-Guidelines.html#User-Experience-Guidelines" rel="up" title="User Experience Guidelines">
+<link href="Funding.html#Funding" rel="next" title="Funding">
+<link href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics" rel="previous" title="Guidelines for Diagnostics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Guidelines-for-Options"></a>
+<div class="header">
+<p>
+Previous: <a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics" accesskey="p" rel="previous">Guidelines for Diagnostics</a>, Up: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="u" rel="up">User Experience Guidelines</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Guidelines-for-Options-1"></a>
+<h3 class="section">28.2 Guidelines for Options</h3>
+<a name="index-command_002dline-options_002c-guidelines-for"></a>
+<a name="index-options_002c-guidelines-for"></a>
+<a name="index-guidelines-for-options"></a>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Guidelines-for-using-poly_005fint.html b/share/doc/gccint/Guidelines-for-using-poly_005fint.html
new file mode 100644
index 0000000..0a53a7a
--- /dev/null
+++ b/share/doc/gccint/Guidelines-for-using-poly_005fint.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Guidelines for using poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Guidelines for using poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Guidelines for using poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="GENERIC.html#GENERIC" rel="next" title="GENERIC">
+<link href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" rel="previous" title="Miscellaneous poly_int routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Guidelines-for-using-poly_005fint"></a>
+<div class="header">
+<p>
+Previous: <a href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" accesskey="p" rel="previous">Miscellaneous <code>poly_int</code> routines</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Guidelines-for-using-poly_005fint-1"></a>
+<h3 class="section">10.9 Guidelines for using <code>poly_int</code></h3>
+
+<p>One of the main design goals of <code>poly_int</code> was to make it easy
+to write target-independent code that handles variable-sized registers
+even when the current target has fixed-sized registers. There are two
+aspects to this:
+</p>
+<ul>
+<li> The set of <code>poly_int</code> operations should be complete enough that
+the question in most cases becomes &ldquo;Can we do this operation on these
+particular <code>poly_int</code> values? If not, bail out&rdquo; rather than
+&ldquo;Are these <code>poly_int</code> values constant? If so, do the operation,
+otherwise bail out&rdquo;.
+
+</li><li> If target-independent code compiles and runs correctly on a target
+with one value of <code>NUM_POLY_INT_COEFFS</code>, and if the code does not
+use asserting functions like <code>to_constant</code>, it is reasonable to
+assume that the code also works on targets with other values of
+<code>NUM_POLY_INT_COEFFS</code>. There is no need to check this during
+everyday development.
+</li></ul>
+
+<p>So the general principle is: if target-independent code is dealing
+with a <code>poly_int</code> value, it is better to operate on it as a
+<code>poly_int</code> if at all possible, choosing conservatively-correct
+behavior if a particular operation fails. For example, the following
+code handles an index <code>pos</code> into a sequence of vectors that each
+have <code>nunits</code> elements:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* Calculate which vector contains the result, and which lane of
+ that vector we need. */
+if (!can_div_trunc_p (pos, nunits, &amp;vec_entry, &amp;vec_index))
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ &quot;Cannot determine which vector holds the&quot;
+ &quot; final result.\n&quot;);
+ return false;
+ }
+</pre></div>
+
+<p>However, there are some contexts in which operating on a
+<code>poly_int</code> is not possible or does not make sense. One example
+is when handling static initializers, since no current target supports
+the concept of a variable-length static initializer. In these
+situations, a reasonable fallback is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (<var>poly_value</var>.is_constant (&amp;<var>const_value</var>))
+ {
+ &hellip;
+ /* Operate on <var>const_value</var>. */
+ &hellip;
+ }
+else
+ {
+ &hellip;
+ /* Conservatively correct fallback. */
+ &hellip;
+ }
+</pre></div>
+
+<p><code>poly_int</code> also provides some asserting functions like
+<code>to_constant</code>. Please only use these functions if there is a
+good theoretical reason to believe that the assertion cannot fire.
+For example, if some work is divided into an analysis phase and an
+implementation phase, the analysis phase might reject inputs that are
+not <code>is_constant</code>, in which case the implementation phase can
+reasonably use <code>to_constant</code> on the remaining inputs. The assertions
+should not be used to discover whether a condition ever occurs &ldquo;in the
+field&rdquo;; in other words, they should not be used to restrict code to
+constants at first, with the intention of only implementing a
+<code>poly_int</code> version if a user hits the assertion.
+</p>
+<p>If a particular asserting function like <code>to_constant</code> is needed
+more than once for the same reason, it is probably worth adding a
+helper function or macro for that situation, so that the justification
+only needs to be given once. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* Return the size of an element in a vector of size SIZE, given that
+ the vector has NELTS elements. The return value is in the same units
+ as SIZE (either bits or bytes).
+
+ to_constant () is safe in this situation because vector elements are
+ always constant-sized scalars. */
+#define vector_element_size(SIZE, NELTS) \
+ (exact_div (SIZE, NELTS).to_constant ())
+</pre></div>
+
+<p>Target-specific code in <samp>config/<var>cpu</var></samp> only needs to handle
+non-constant <code>poly_int</code>s if <code>NUM_POLY_INT_COEFFS</code> is greater
+than one. For other targets, <code>poly_int</code> degenerates to a compile-time
+constant and is often interchangable with a normal scalar integer.
+There are two main exceptions:
+</p>
+<ul>
+<li> Sometimes an explicit cast to an integer type might be needed, such as to
+resolve ambiguities in a <code>?:</code> expression, or when passing values
+through <code>...</code> to things like print functions.
+
+</li><li> Target macros are included in target-independent code and so do not
+have access to the implicit conversion to a scalar integer.
+If this becomes a problem for a particular target macro, the
+possible solutions, in order of preference, are:
+
+<ul>
+<li> Convert the target macro to a target hook (for all targets).
+
+</li><li> Put the target&rsquo;s implementation of the target macro in its
+<samp><var>cpu</var>.c</samp> file and call it from the target macro in the
+<samp><var>cpu</var>.h</samp> file.
+
+</li><li> Add <code>to_constant ()</code> calls where necessary. The previous option
+is preferable because it will help with any future conversion of the
+macro to a hook.
+</li></ul>
+</li></ul>
+
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" accesskey="p" rel="previous">Miscellaneous <code>poly_int</code> routines</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Header-Dirs.html b/share/doc/gccint/Header-Dirs.html
new file mode 100644
index 0000000..44f112a
--- /dev/null
+++ b/share/doc/gccint/Header-Dirs.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Header Dirs</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Header Dirs">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Header Dirs">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Type-Information.html#Type-Information" rel="next" title="Type Information">
+<link href="Collect2.html#Collect2" rel="previous" title="Collect2">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Header-Dirs"></a>
+<div class="header">
+<p>
+Next: <a href="Type-Information.html#Type-Information" accesskey="n" rel="next">Type Information</a>, Previous: <a href="Collect2.html#Collect2" accesskey="p" rel="previous">Collect2</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Standard-Header-File-Directories"></a>
+<h2 class="chapter">22 Standard Header File Directories</h2>
+
+<p><code>GCC_INCLUDE_DIR</code> means the same thing for native and cross. It is
+where GCC stores its private include files, and also where GCC
+stores the fixed include files. A cross compiled GCC runs
+<code>fixincludes</code> on the header files in <samp>$(tooldir)/include</samp>.
+(If the cross compilation header files need to be fixed, they must be
+installed before GCC is built. If the cross compilation header files
+are already suitable for GCC, nothing special need be done).
+</p>
+<p><code>GPLUSPLUS_INCLUDE_DIR</code> means the same thing for native and cross. It
+is where <code>g++</code> looks first for header files. The C++ library
+installs only target independent header files in that directory.
+</p>
+<p><code>LOCAL_INCLUDE_DIR</code> is used only by native compilers. GCC
+doesn&rsquo;t install anything there. It is normally
+<samp>/usr/local/include</samp>. This is where local additions to a packaged
+system should place header files.
+</p>
+<p><code>CROSS_INCLUDE_DIR</code> is used only by cross compilers. GCC
+doesn&rsquo;t install anything there.
+</p>
+<p><code>TOOL_INCLUDE_DIR</code> is used for both native and cross compilers. It
+is the place for other packages to install header files that GCC will
+use. For a cross-compiler, this is the equivalent of
+<samp>/usr/include</samp>. When you build a cross-compiler,
+<code>fixincludes</code> processes any header files in this directory.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Headers.html b/share/doc/gccint/Headers.html
new file mode 100644
index 0000000..c0bd11d
--- /dev/null
+++ b/share/doc/gccint/Headers.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Headers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Headers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Headers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Documentation.html#Documentation" rel="next" title="Documentation">
+<link href="Library-Files.html#Library-Files" rel="previous" title="Library Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Headers"></a>
+<div class="header">
+<p>
+Next: <a href="Documentation.html#Documentation" accesskey="n" rel="next">Documentation</a>, Previous: <a href="Library-Files.html#Library-Files" accesskey="p" rel="previous">Library Files</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Headers-Installed-by-GCC"></a>
+<h4 class="subsection">6.3.6 Headers Installed by GCC</h4>
+
+<p>In general, GCC expects the system C library to provide most of the
+headers to be used with it. However, GCC will fix those headers if
+necessary to make them work with GCC, and will install some headers
+required of freestanding implementations. These headers are installed
+in <samp><var>libsubdir</var>/include</samp>. Headers for non-C runtime
+libraries are also installed by GCC; these are not documented here.
+(FIXME: document them somewhere.)
+</p>
+<p>Several of the headers GCC installs are in the <samp>ginclude</samp>
+directory. These headers, <samp>iso646.h</samp>,
+<samp>stdarg.h</samp>, <samp>stdbool.h</samp>, and <samp>stddef.h</samp>,
+are installed in <samp><var>libsubdir</var>/include</samp>,
+unless the target Makefile fragment (see <a href="Target-Fragment.html#Target-Fragment">Target Fragment</a>)
+overrides this by setting <code>USER_H</code>.
+</p>
+<p>In addition to these headers and those generated by fixing system
+headers to work with GCC, some other headers may also be installed in
+<samp><var>libsubdir</var>/include</samp>. <samp>config.gcc</samp> may set
+<code>extra_headers</code>; this specifies additional headers under
+<samp>config</samp> to be installed on some systems.
+</p>
+<p>GCC installs its own version of <code>&lt;float.h&gt;</code>, from <samp>ginclude/float.h</samp>.
+This is done to cope with command-line options that change the
+representation of floating point numbers.
+</p>
+<p>GCC also installs its own version of <code>&lt;limits.h&gt;</code>; this is generated
+from <samp>glimits.h</samp>, together with <samp>limitx.h</samp> and
+<samp>limity.h</samp> if the system also has its own version of
+<code>&lt;limits.h&gt;</code>. (GCC provides its own header because it is
+required of ISO C freestanding implementations, but needs to include
+the system header from its own header as well because other standards
+such as POSIX specify additional values to be defined in
+<code>&lt;limits.h&gt;</code>.) The system&rsquo;s <code>&lt;limits.h&gt;</code> header is used via
+<samp><var>libsubdir</var>/include/syslimits.h</samp>, which is copied from
+<samp>gsyslimits.h</samp> if it does not need fixing to work with GCC; if it
+needs fixing, <samp>syslimits.h</samp> is the fixed copy.
+</p>
+<p>GCC can also install <code>&lt;tgmath.h&gt;</code>. It will do this when
+<samp>config.gcc</samp> sets <code>use_gcc_tgmath</code> to <code>yes</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Documentation.html#Documentation" accesskey="n" rel="next">Documentation</a>, Previous: <a href="Library-Files.html#Library-Files" accesskey="p" rel="previous">Library Files</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Host-Common.html b/share/doc/gccint/Host-Common.html
new file mode 100644
index 0000000..553ae00
--- /dev/null
+++ b/share/doc/gccint/Host-Common.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Host Common</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Host Common">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Host Common">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Host-Config.html#Host-Config" rel="up" title="Host Config">
+<link href="Filesystem.html#Filesystem" rel="next" title="Filesystem">
+<link href="Host-Config.html#Host-Config" rel="previous" title="Host Config">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Host-Common"></a>
+<div class="header">
+<p>
+Next: <a href="Filesystem.html#Filesystem" accesskey="n" rel="next">Filesystem</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Host-Common-1"></a>
+<h3 class="section">19.1 Host Common</h3>
+<a name="index-host-hooks"></a>
+<a name="index-host-functions"></a>
+
+<p>Some things are just not portable, even between similar operating systems,
+and are too difficult for autoconf to detect. They get implemented using
+hook functions in the file specified by the <var>host_hook_obj</var>
+variable in <samp>config.gcc</samp>.
+</p>
+<dl>
+<dt><a name="index-HOST_005fHOOKS_005fEXTRA_005fSIGNALS"></a>Host Hook: <em>void</em> <strong>HOST_HOOKS_EXTRA_SIGNALS</strong> <em>(void)</em></dt>
+<dd><p>This host hook is used to set up handling for extra signals. The most
+common thing to do in this hook is to detect stack overflow.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HOST_005fHOOKS_005fGT_005fPCH_005fGET_005fADDRESS"></a>Host Hook: <em>void *</em> <strong>HOST_HOOKS_GT_PCH_GET_ADDRESS</strong> <em>(size_t <var>size</var>, int <var>fd</var>)</em></dt>
+<dd><p>This host hook returns the address of some space that is likely to be
+free in some subsequent invocation of the compiler. We intend to load
+the PCH data at this address such that the data need not be relocated.
+The area should be able to hold <var>size</var> bytes. If the host uses
+<code>mmap</code>, <var>fd</var> is an open file descriptor that can be used for
+probing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HOST_005fHOOKS_005fGT_005fPCH_005fUSE_005fADDRESS"></a>Host Hook: <em>int</em> <strong>HOST_HOOKS_GT_PCH_USE_ADDRESS</strong> <em>(void * <var>address</var>, size_t <var>size</var>, int <var>fd</var>, size_t <var>offset</var>)</em></dt>
+<dd><p>This host hook is called when a PCH file is about to be loaded.
+We want to load <var>size</var> bytes from <var>fd</var> at <var>offset</var>
+into memory at <var>address</var>. The given address will be the result of
+a previous invocation of <code>HOST_HOOKS_GT_PCH_GET_ADDRESS</code>.
+Return -1 if we couldn&rsquo;t allocate <var>size</var> bytes at <var>address</var>.
+Return 0 if the memory is allocated but the data is not loaded. Return 1
+if the hook has performed everything.
+</p>
+<p>If the implementation uses reserved address space, free any reserved
+space beyond <var>size</var>, regardless of the return value. If no PCH will
+be loaded, this hook may be called with <var>size</var> zero, in which case
+all reserved address space should be freed.
+</p>
+<p>Do not try to handle values of <var>address</var> that could not have been
+returned by this executable; just return -1. Such values usually
+indicate an out-of-date PCH file (built by some other GCC executable),
+and such a PCH file won&rsquo;t work.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HOST_005fHOOKS_005fGT_005fPCH_005fALLOC_005fGRANULARITY"></a>Host Hook: <em>size_t</em> <strong>HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY</strong> <em>(void);</em></dt>
+<dd><p>This host hook returns the alignment required for allocating virtual
+memory. Usually this is the same as getpagesize, but on some hosts the
+alignment for reserving memory differs from the pagesize for committing
+memory.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Filesystem.html#Filesystem" accesskey="n" rel="next">Filesystem</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Host-Config.html b/share/doc/gccint/Host-Config.html
new file mode 100644
index 0000000..4c2e19c
--- /dev/null
+++ b/share/doc/gccint/Host-Config.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Host Config</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Host Config">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Host Config">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Host-Common.html#Host-Common" rel="next" title="Host Common">
+<link href="Misc.html#Misc" rel="previous" title="Misc">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Host-Config"></a>
+<div class="header">
+<p>
+Next: <a href="Fragments.html#Fragments" accesskey="n" rel="next">Fragments</a>, Previous: <a href="Target-Macros.html#Target-Macros" accesskey="p" rel="previous">Target Macros</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Host-Configuration"></a>
+<h2 class="chapter">19 Host Configuration</h2>
+<a name="index-host-configuration"></a>
+
+<p>Most details about the machine and system on which the compiler is
+actually running are detected by the <code>configure</code> script. Some
+things are impossible for <code>configure</code> to detect; these are
+described in two ways, either by macros defined in a file named
+<samp>xm-<var>machine</var>.h</samp> or by hook functions in the file specified
+by the <var>out_host_hook_obj</var> variable in <samp>config.gcc</samp>. (The
+intention is that very few hosts will need a header file but nearly
+every fully supported host will need to override some hooks.)
+</p>
+<p>If you need to define only a few macros, and they have simple
+definitions, consider using the <code>xm_defines</code> variable in your
+<samp>config.gcc</samp> entry instead of creating a host configuration
+header. See <a href="System-Config.html#System-Config">System Config</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Host-Common.html#Host-Common" accesskey="1">Host Common</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Things every host probably needs implemented.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Filesystem.html#Filesystem" accesskey="2">Filesystem</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Your host cannot have the letter &lsquo;a&rsquo; in filenames?
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Host-Misc.html#Host-Misc" accesskey="3">Host Misc</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rare configuration options for hosts.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Host-Fragment.html b/share/doc/gccint/Host-Fragment.html
new file mode 100644
index 0000000..95339a8
--- /dev/null
+++ b/share/doc/gccint/Host-Fragment.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Host Fragment</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Host Fragment">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Host Fragment">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Fragments.html#Fragments" rel="up" title="Fragments">
+<link href="Collect2.html#Collect2" rel="next" title="Collect2">
+<link href="Target-Fragment.html#Target-Fragment" rel="previous" title="Target Fragment">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Host-Fragment"></a>
+<div class="header">
+<p>
+Previous: <a href="Target-Fragment.html#Target-Fragment" accesskey="p" rel="previous">Target Fragment</a>, Up: <a href="Fragments.html#Fragments" accesskey="u" rel="up">Fragments</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Host-Makefile-Fragments"></a>
+<h3 class="section">20.2 Host Makefile Fragments</h3>
+<a name="index-host-makefile-fragment"></a>
+<a name="index-x_002dhost"></a>
+
+<p>The use of <samp>x-<var>host</var></samp> fragments is discouraged. You should only
+use it for makefile dependencies.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Host-Misc.html b/share/doc/gccint/Host-Misc.html
new file mode 100644
index 0000000..0447619
--- /dev/null
+++ b/share/doc/gccint/Host-Misc.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Host Misc</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Host Misc">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Host Misc">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Host-Config.html#Host-Config" rel="up" title="Host Config">
+<link href="Fragments.html#Fragments" rel="next" title="Fragments">
+<link href="Filesystem.html#Filesystem" rel="previous" title="Filesystem">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Host-Misc"></a>
+<div class="header">
+<p>
+Previous: <a href="Filesystem.html#Filesystem" accesskey="p" rel="previous">Filesystem</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Host-Misc-1"></a>
+<h3 class="section">19.3 Host Misc</h3>
+<a name="index-configuration-file-1"></a>
+<a name="index-xm_002dmachine_002eh-1"></a>
+
+<dl compact="compact">
+<dt><code>FATAL_EXIT_CODE</code>
+<a name="index-FATAL_005fEXIT_005fCODE"></a>
+</dt>
+<dd><p>A C expression for the status code to be returned when the compiler
+exits after serious errors. The default is the system-provided macro
+&lsquo;<samp>EXIT_FAILURE</samp>&rsquo;, or &lsquo;<samp>1</samp>&rsquo; if the system doesn&rsquo;t define that
+macro. Define this macro only if these defaults are incorrect.
+</p>
+</dd>
+<dt><code>SUCCESS_EXIT_CODE</code>
+<a name="index-SUCCESS_005fEXIT_005fCODE"></a>
+</dt>
+<dd><p>A C expression for the status code to be returned when the compiler
+exits without serious errors. (Warnings are not serious errors.) The
+default is the system-provided macro &lsquo;<samp>EXIT_SUCCESS</samp>&rsquo;, or &lsquo;<samp>0</samp>&rsquo; if
+the system doesn&rsquo;t define that macro. Define this macro only if these
+defaults are incorrect.
+</p>
+</dd>
+<dt><code>USE_C_ALLOCA</code>
+<a name="index-USE_005fC_005fALLOCA"></a>
+</dt>
+<dd><p>Define this macro if GCC should use the C implementation of <code>alloca</code>
+provided by <samp>libiberty.a</samp>. This only affects how some parts of the
+compiler itself allocate memory. It does not change code generation.
+</p>
+<p>When GCC is built with a compiler other than itself, the C <code>alloca</code>
+is always used. This is because most other implementations have serious
+bugs. You should define this macro only on a system where no
+stack-based <code>alloca</code> can possibly work. For instance, if a system
+has a small limit on the size of the stack, GCC&rsquo;s builtin <code>alloca</code>
+will not work reliably.
+</p>
+</dd>
+<dt><code>COLLECT2_HOST_INITIALIZATION</code>
+<a name="index-COLLECT2_005fHOST_005fINITIALIZATION"></a>
+</dt>
+<dd><p>If defined, a C statement (sans semicolon) that performs host-dependent
+initialization when <code>collect2</code> is being initialized.
+</p>
+</dd>
+<dt><code>GCC_DRIVER_HOST_INITIALIZATION</code>
+<a name="index-GCC_005fDRIVER_005fHOST_005fINITIALIZATION"></a>
+</dt>
+<dd><p>If defined, a C statement (sans semicolon) that performs host-dependent
+initialization when a compilation driver is being initialized.
+</p>
+</dd>
+<dt><code>HOST_LONG_LONG_FORMAT</code>
+<a name="index-HOST_005fLONG_005fLONG_005fFORMAT"></a>
+</dt>
+<dd><p>If defined, the string used to indicate an argument of type <code>long
+long</code> to functions like <code>printf</code>. The default value is
+<code>&quot;ll&quot;</code>.
+</p>
+</dd>
+<dt><code>HOST_LONG_FORMAT</code>
+<a name="index-HOST_005fLONG_005fFORMAT"></a>
+</dt>
+<dd><p>If defined, the string used to indicate an argument of type <code>long</code>
+to functions like <code>printf</code>. The default value is <code>&quot;l&quot;</code>.
+</p>
+</dd>
+<dt><code>HOST_PTR_PRINTF</code>
+<a name="index-HOST_005fPTR_005fPRINTF"></a>
+</dt>
+<dd><p>If defined, the string used to indicate an argument of type <code>void *</code>
+to functions like <code>printf</code>. The default value is <code>&quot;%p&quot;</code>.
+</p></dd>
+</dl>
+
+<p>In addition, if <code>configure</code> generates an incorrect definition of
+any of the macros in <samp>auto-host.h</samp>, you can override that
+definition in a host configuration header. If you need to do this,
+first see if it is possible to fix <code>configure</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Filesystem.html#Filesystem" accesskey="p" rel="previous">Filesystem</a>, Up: <a href="Host-Config.html#Host-Config" accesskey="u" rel="up">Host Config</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/IPA-passes.html b/share/doc/gccint/IPA-passes.html
new file mode 100644
index 0000000..94b26a0
--- /dev/null
+++ b/share/doc/gccint/IPA-passes.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: IPA passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: IPA passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: IPA passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="Small-IPA-passes.html#Small-IPA-passes" rel="next" title="Small IPA passes">
+<link href="Pass-manager.html#Pass-manager" rel="previous" title="Pass manager">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="IPA-passes"></a>
+<div class="header">
+<p>
+Next: <a href="Tree-SSA-passes.html#Tree-SSA-passes" accesskey="n" rel="next">Tree SSA passes</a>, Previous: <a href="Pass-manager.html#Pass-manager" accesskey="p" rel="previous">Pass manager</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Inter_002dprocedural-optimization-passes"></a>
+<h3 class="section">9.4 Inter-procedural optimization passes</h3>
+<a name="index-IPA-passes"></a>
+<a name="index-inter_002dprocedural-optimization-passes"></a>
+
+<p>The inter-procedural optimization (IPA) passes use call graph
+information to perform transformations across function boundaries.
+IPA is a critical part of link-time optimization (LTO) and
+whole-program (WHOPR) optimization, and these passes are structured
+with the needs of LTO and WHOPR in mind by dividing their operations
+into stages. For detailed discussion of the LTO/WHOPR IPA pass stages
+and interfaces, see <a href="IPA.html#IPA">IPA</a>.
+</p>
+<p>The following briefly describes the inter-procedural optimization (IPA)
+passes, which are split into small IPA passes, regular IPA passes,
+and late IPA passes, according to the LTO/WHOPR processing model.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Small-IPA-passes.html#Small-IPA-passes" accesskey="1">Small IPA passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Regular-IPA-passes.html#Regular-IPA-passes" accesskey="2">Regular IPA passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Late-IPA-passes.html#Late-IPA-passes" accesskey="3">Late IPA passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/IPA.html b/share/doc/gccint/IPA.html
new file mode 100644
index 0000000..f6ea0ef
--- /dev/null
+++ b/share/doc/gccint/IPA.html
@@ -0,0 +1,293 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: IPA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: IPA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: IPA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="LTO.html#LTO" rel="up" title="LTO">
+<link href="WHOPR.html#WHOPR" rel="next" title="WHOPR">
+<link href="LTO-object-file-layout.html#LTO-object-file-layout" rel="previous" title="LTO object file layout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="IPA"></a>
+<div class="header">
+<p>
+Next: <a href="WHOPR.html#WHOPR" accesskey="n" rel="next">WHOPR</a>, Previous: <a href="LTO-object-file-layout.html#LTO-object-file-layout" accesskey="p" rel="previous">LTO object file layout</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-summary-information-in-IPA-passes"></a>
+<h3 class="section">25.3 Using summary information in IPA passes</h3>
+
+<p>Programs are represented internally as a <em>callgraph</em> (a
+multi-graph where nodes are functions and edges are call sites)
+and a <em>varpool</em> (a list of static and external variables in
+the program).
+</p>
+<p>The inter-procedural optimization is organized as a sequence of
+individual passes, which operate on the callgraph and the
+varpool. To make the implementation of WHOPR possible, every
+inter-procedural optimization pass is split into several stages
+that are executed at different times during WHOPR compilation:
+</p>
+<ul>
+<li> LGEN time
+<ol>
+<li> <em>Generate summary</em> (<code>generate_summary</code> in
+<code>struct ipa_opt_pass_d</code>). This stage analyzes every function
+body and variable initializer is examined and stores relevant
+information into a pass-specific data structure.
+
+</li><li> <em>Write summary</em> (<code>write_summary</code> in
+<code>struct ipa_opt_pass_d</code>). This stage writes all the
+pass-specific information generated by <code>generate_summary</code>.
+Summaries go into their own <code>LTO_section_*</code> sections that
+have to be declared in <samp>lto-streamer.h</samp>:<code>enum
+lto_section_type</code>. A new section is created by calling
+<code>create_output_block</code> and data can be written using the
+<code>lto_output_*</code> routines.
+</li></ol>
+
+</li><li> WPA time
+<ol>
+<li> <em>Read summary</em> (<code>read_summary</code> in
+<code>struct ipa_opt_pass_d</code>). This stage reads all the
+pass-specific information in exactly the same order that it was
+written by <code>write_summary</code>.
+
+</li><li> <em>Execute</em> (<code>execute</code> in <code>struct
+opt_pass</code>). This performs inter-procedural propagation. This
+must be done without actual access to the individual function
+bodies or variable initializers. Typically, this results in a
+transitive closure operation over the summary information of all
+the nodes in the callgraph.
+
+</li><li> <em>Write optimization summary</em>
+(<code>write_optimization_summary</code> in <code>struct
+ipa_opt_pass_d</code>). This writes the result of the inter-procedural
+propagation into the object file. This can use the same data
+structures and helper routines used in <code>write_summary</code>.
+</li></ol>
+
+</li><li> LTRANS time
+<ol>
+<li> <em>Read optimization summary</em>
+(<code>read_optimization_summary</code> in <code>struct
+ipa_opt_pass_d</code>). The counterpart to
+<code>write_optimization_summary</code>. This reads the interprocedural
+optimization decisions in exactly the same format emitted by
+<code>write_optimization_summary</code>.
+
+</li><li> <em>Transform</em> (<code>function_transform</code> and
+<code>variable_transform</code> in <code>struct ipa_opt_pass_d</code>).
+The actual function bodies and variable initializers are updated
+based on the information passed down from the <em>Execute</em> stage.
+</li></ol>
+</li></ul>
+
+<p>The implementation of the inter-procedural passes are shared
+between LTO, WHOPR and classic non-LTO compilation.
+</p>
+<ul>
+<li> During the traditional file-by-file mode every pass executes its
+own <em>Generate summary</em>, <em>Execute</em>, and <em>Transform</em>
+stages within the single execution context of the compiler.
+
+</li><li> In LTO compilation mode, every pass uses <em>Generate
+summary</em> and <em>Write summary</em> stages at compilation time,
+while the <em>Read summary</em>, <em>Execute</em>, and
+<em>Transform</em> stages are executed at link time.
+
+</li><li> In WHOPR mode all stages are used.
+</li></ul>
+
+<p>To simplify development, the GCC pass manager differentiates
+between normal inter-procedural passes (see <a href="Regular-IPA-passes.html#Regular-IPA-passes">Regular IPA passes</a>),
+small inter-procedural passes (see <a href="Small-IPA-passes.html#Small-IPA-passes">Small IPA passes</a>)
+and late inter-procedural passes (see <a href="Late-IPA-passes.html#Late-IPA-passes">Late IPA passes</a>).
+A small or late IPA pass (<code>SIMPLE_IPA_PASS</code>) does
+everything at once and thus cannot be executed during WPA in
+WHOPR mode. It defines only the <em>Execute</em> stage and during
+this stage it accesses and modifies the function bodies. Such
+passes are useful for optimization at LGEN or LTRANS time and are
+used, for example, to implement early optimization before writing
+object files. The simple inter-procedural passes can also be used
+for easier prototyping and development of a new inter-procedural
+pass.
+</p>
+
+<a name="Virtual-clones"></a>
+<h4 class="subsection">25.3.1 Virtual clones</h4>
+
+<p>One of the main challenges of introducing the WHOPR compilation
+mode was addressing the interactions between optimization passes.
+In LTO compilation mode, the passes are executed in a sequence,
+each of which consists of analysis (or <em>Generate summary</em>),
+propagation (or <em>Execute</em>) and <em>Transform</em> stages.
+Once the work of one pass is finished, the next pass sees the
+updated program representation and can execute. This makes the
+individual passes dependent on each other.
+</p>
+<p>In WHOPR mode all passes first execute their <em>Generate
+summary</em> stage. Then summary writing marks the end of the LGEN
+stage. At WPA time,
+the summaries are read back into memory and all passes run the
+<em>Execute</em> stage. Optimization summaries are streamed and
+sent to LTRANS, where all the passes execute the <em>Transform</em>
+stage.
+</p>
+<p>Most optimization passes split naturally into analysis,
+propagation and transformation stages. But some do not. The
+main problem arises when one pass performs changes and the
+following pass gets confused by seeing different callgraphs
+between the <em>Transform</em> stage and the <em>Generate summary</em>
+or <em>Execute</em> stage. This means that the passes are required
+to communicate their decisions with each other.
+</p>
+<p>To facilitate this communication, the GCC callgraph
+infrastructure implements <em>virtual clones</em>, a method of
+representing the changes performed by the optimization passes in
+the callgraph without needing to update function bodies.
+</p>
+<p>A <em>virtual clone</em> in the callgraph is a function that has no
+associated body, just a description of how to create its body based
+on a different function (which itself may be a virtual clone).
+</p>
+<p>The description of function modifications includes adjustments to
+the function&rsquo;s signature (which allows, for example, removing or
+adding function arguments), substitutions to perform on the
+function body, and, for inlined functions, a pointer to the
+function that it will be inlined into.
+</p>
+<p>It is also possible to redirect any edge of the callgraph from a
+function to its virtual clone. This implies updating of the call
+site to adjust for the new function signature.
+</p>
+<p>Most of the transformations performed by inter-procedural
+optimizations can be represented via virtual clones. For
+instance, a constant propagation pass can produce a virtual clone
+of the function which replaces one of its arguments by a
+constant. The inliner can represent its decisions by producing a
+clone of a function whose body will be later integrated into
+a given function.
+</p>
+<p>Using <em>virtual clones</em>, the program can be easily updated
+during the <em>Execute</em> stage, solving most of pass interactions
+problems that would otherwise occur during <em>Transform</em>.
+</p>
+<p>Virtual clones are later materialized in the LTRANS stage and
+turned into real functions. Passes executed after the virtual
+clone were introduced also perform their <em>Transform</em> stage
+on new functions, so for a pass there is no significant
+difference between operating on a real function or a virtual
+clone introduced before its <em>Execute</em> stage.
+</p>
+<p>Optimization passes then work on virtual clones introduced before
+their <em>Execute</em> stage as if they were real functions. The
+only difference is that clones are not visible during the
+<em>Generate Summary</em> stage.
+</p>
+<p>To keep function summaries updated, the callgraph interface
+allows an optimizer to register a callback that is called every
+time a new clone is introduced as well as when the actual
+function or variable is generated or when a function or variable
+is removed. These hooks are registered in the <em>Generate
+summary</em> stage and allow the pass to keep its information intact
+until the <em>Execute</em> stage. The same hooks can also be
+registered during the <em>Execute</em> stage to keep the
+optimization summaries updated for the <em>Transform</em> stage.
+</p>
+<a name="IPA-references"></a>
+<h4 class="subsection">25.3.2 IPA references</h4>
+
+<p>GCC represents IPA references in the callgraph. For a function
+or variable <code>A</code>, the <em>IPA reference</em> is a list of all
+locations where the address of <code>A</code> is taken and, when
+<code>A</code> is a variable, a list of all direct stores and reads
+to/from <code>A</code>. References represent an oriented multi-graph on
+the union of nodes of the callgraph and the varpool. See
+<samp>ipa-reference.cc</samp>:<code>ipa_reference_write_optimization_summary</code>
+and
+<samp>ipa-reference.cc</samp>:<code>ipa_reference_read_optimization_summary</code>
+for details.
+</p>
+<a name="Jump-functions"></a>
+<h4 class="subsection">25.3.3 Jump functions</h4>
+<p>Suppose that an optimization pass sees a function <code>A</code> and it
+knows the values of (some of) its arguments. The <em>jump
+function</em> describes the value of a parameter of a given function
+call in function <code>A</code> based on this knowledge.
+</p>
+<p>Jump functions are used by several optimizations, such as the
+inter-procedural constant propagation pass and the
+devirtualization pass. The inliner also uses jump functions to
+perform inlining of callbacks.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="WHOPR.html#WHOPR" accesskey="n" rel="next">WHOPR</a>, Previous: <a href="LTO-object-file-layout.html#LTO-object-file-layout" accesskey="p" rel="previous">LTO object file layout</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Identifiers.html b/share/doc/gccint/Identifiers.html
new file mode 100644
index 0000000..9714a29
--- /dev/null
+++ b/share/doc/gccint/Identifiers.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Identifiers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Identifiers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Identifiers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-overview.html#Tree-overview" rel="up" title="Tree overview">
+<link href="Containers.html#Containers" rel="next" title="Containers">
+<link href="Macros-and-Functions.html#Macros-and-Functions" rel="previous" title="Macros and Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Identifiers"></a>
+<div class="header">
+<p>
+Next: <a href="Containers.html#Containers" accesskey="n" rel="next">Containers</a>, Previous: <a href="Macros-and-Functions.html#Macros-and-Functions" accesskey="p" rel="previous">Macros and Functions</a>, Up: <a href="Tree-overview.html#Tree-overview" accesskey="u" rel="up">Tree overview</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Identifiers-1"></a>
+<h4 class="subsection">11.2.2 Identifiers</h4>
+<a name="index-identifier"></a>
+<a name="index-name"></a>
+<a name="index-IDENTIFIER_005fNODE"></a>
+
+<p>An <code>IDENTIFIER_NODE</code> represents a slightly more general concept
+than the standard C or C++ concept of identifier. In particular, an
+<code>IDENTIFIER_NODE</code> may contain a &lsquo;<samp>$</samp>&rsquo;, or other extraordinary
+characters.
+</p>
+<p>There are never two distinct <code>IDENTIFIER_NODE</code>s representing the
+same identifier. Therefore, you may use pointer equality to compare
+<code>IDENTIFIER_NODE</code>s, rather than using a routine like
+<code>strcmp</code>. Use <code>get_identifier</code> to obtain the unique
+<code>IDENTIFIER_NODE</code> for a supplied string.
+</p>
+<p>You can use the following macros to access identifiers:
+</p><dl compact="compact">
+<dt><code>IDENTIFIER_POINTER</code>
+<a name="index-IDENTIFIER_005fPOINTER"></a>
+</dt>
+<dd><p>The string represented by the identifier, represented as a
+<code>char*</code>. This string is always <code>NUL</code>-terminated, and contains
+no embedded <code>NUL</code> characters.
+</p>
+</dd>
+<dt><code>IDENTIFIER_LENGTH</code>
+<a name="index-IDENTIFIER_005fLENGTH"></a>
+</dt>
+<dd><p>The length of the string returned by <code>IDENTIFIER_POINTER</code>, not
+including the trailing <code>NUL</code>. This value of
+<code>IDENTIFIER_LENGTH (x)</code> is always the same as <code>strlen
+(IDENTIFIER_POINTER (x))</code>.
+</p>
+</dd>
+<dt><code>IDENTIFIER_OPNAME_P</code>
+<a name="index-IDENTIFIER_005fOPNAME_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the identifier represents the name of an
+overloaded operator. In this case, you should not depend on the
+contents of either the <code>IDENTIFIER_POINTER</code> or the
+<code>IDENTIFIER_LENGTH</code>.
+</p>
+</dd>
+<dt><code>IDENTIFIER_TYPENAME_P</code>
+<a name="index-IDENTIFIER_005fTYPENAME_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the identifier represents the name of a
+user-defined conversion operator. In this case, the <code>TREE_TYPE</code> of
+the <code>IDENTIFIER_NODE</code> holds the type to which the conversion
+operator converts.
+</p>
+</dd>
+</dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Incdec.html b/share/doc/gccint/Incdec.html
new file mode 100644
index 0000000..99a9ae8
--- /dev/null
+++ b/share/doc/gccint/Incdec.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Incdec</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Incdec">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Incdec">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Assembler.html#Assembler" rel="next" title="Assembler">
+<link href="Side-Effects.html#Side-Effects" rel="previous" title="Side Effects">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Incdec"></a>
+<div class="header">
+<p>
+Next: <a href="Assembler.html#Assembler" accesskey="n" rel="next">Assembler</a>, Previous: <a href="Side-Effects.html#Side-Effects" accesskey="p" rel="previous">Side Effects</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Embedded-Side_002dEffects-on-Addresses"></a>
+<h3 class="section">14.16 Embedded Side-Effects on Addresses</h3>
+<a name="index-RTL-preincrement"></a>
+<a name="index-RTL-postincrement"></a>
+<a name="index-RTL-predecrement"></a>
+<a name="index-RTL-postdecrement"></a>
+
+<p>Six special side-effect expression codes appear as memory addresses.
+</p>
+<dl compact="compact">
+<dd><a name="index-pre_005fdec"></a>
+</dd>
+<dt><code>(pre_dec:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the side effect of decrementing <var>x</var> by a standard
+amount and represents also the value that <var>x</var> has after being
+decremented. <var>x</var> must be a <code>reg</code> or <code>mem</code>, but most
+machines allow only a <code>reg</code>. <var>m</var> must be the machine mode
+for pointers on the machine in use. The amount <var>x</var> is decremented
+by is the length in bytes of the machine mode of the containing memory
+reference of which this expression serves as the address. Here is an
+example of its use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(mem:DF (pre_dec:SI (reg:SI 39)))
+</pre></div>
+
+<p>This says to decrement pseudo register 39 by the length of a <code>DFmode</code>
+value and use the result to address a <code>DFmode</code> value.
+</p>
+<a name="index-pre_005finc"></a>
+</dd>
+<dt><code>(pre_inc:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Similar, but specifies incrementing <var>x</var> instead of decrementing it.
+</p>
+<a name="index-post_005fdec"></a>
+</dd>
+<dt><code>(post_dec:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Represents the same side effect as <code>pre_dec</code> but a different
+value. The value represented here is the value <var>x</var> has <i>before</i>
+being decremented.
+</p>
+<a name="index-post_005finc"></a>
+</dd>
+<dt><code>(post_inc:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>Similar, but specifies incrementing <var>x</var> instead of decrementing it.
+</p>
+<a name="index-post_005fmodify"></a>
+</dd>
+<dt><code>(post_modify:<var>m</var> <var>x</var> <var>y</var>)</code></dt>
+<dd>
+<p>Represents the side effect of setting <var>x</var> to <var>y</var> and
+represents <var>x</var> before <var>x</var> is modified. <var>x</var> must be a
+<code>reg</code> or <code>mem</code>, but most machines allow only a <code>reg</code>.
+<var>m</var> must be the machine mode for pointers on the machine in use.
+</p>
+<p>The expression <var>y</var> must be one of three forms:
+<code>(plus:<var>m</var> <var>x</var> <var>z</var>)</code>,
+<code>(minus:<var>m</var> <var>x</var> <var>z</var>)</code>, or
+<code>(plus:<var>m</var> <var>x</var> <var>i</var>)</code>,
+where <var>z</var> is an index register and <var>i</var> is a constant.
+</p>
+<p>Here is an example of its use:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42)
+ (reg:SI 48))))
+</pre></div>
+
+<p>This says to modify pseudo register 42 by adding the contents of pseudo
+register 48 to it, after the use of what ever 42 points to.
+</p>
+<a name="index-pre_005fmodify"></a>
+</dd>
+<dt><code>(pre_modify:<var>m</var> <var>x</var> <var>expr</var>)</code></dt>
+<dd><p>Similar except side effects happen before the use.
+</p></dd>
+</dl>
+
+<p>These embedded side effect expressions must be used with care. Instruction
+patterns may not use them. Until the &lsquo;<samp>flow</samp>&rsquo; pass of the compiler,
+they may occur only to represent pushes onto the stack. The &lsquo;<samp>flow</samp>&rsquo;
+pass finds cases where registers are incremented or decremented in one
+instruction and used as an address shortly before or after; these cases are
+then transformed to use pre- or post-increment or -decrement.
+</p>
+<p>If a register used as the operand of these expressions is used in
+another address in an insn, the original value of the register is used.
+Uses of the register outside of an address are not permitted within the
+same insn as a use in an embedded side effect expression because such
+insns behave differently on different machines and hence must be treated
+as ambiguous and disallowed.
+</p>
+<p>An instruction that can be represented with an embedded side effect
+could also be represented using <code>parallel</code> containing an additional
+<code>set</code> to describe how the address register is altered. This is not
+done because machines that allow these operations at all typically
+allow them wherever a memory address is called for. Describing them as
+additional parallel stores would require doubling the number of entries
+in the machine description.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Assembler.html#Assembler" accesskey="n" rel="next">Assembler</a>, Previous: <a href="Side-Effects.html#Side-Effects" accesskey="p" rel="previous">Side Effects</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Including-Patterns.html b/share/doc/gccint/Including-Patterns.html
new file mode 100644
index 0000000..572238b
--- /dev/null
+++ b/share/doc/gccint/Including-Patterns.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Including Patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Including Patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Including Patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Peephole-Definitions.html#Peephole-Definitions" rel="next" title="Peephole Definitions">
+<link href="Insn-Splitting.html#Insn-Splitting" rel="previous" title="Insn Splitting">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Including-Patterns"></a>
+<div class="header">
+<p>
+Next: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="n" rel="next">Peephole Definitions</a>, Previous: <a href="Insn-Splitting.html#Insn-Splitting" accesskey="p" rel="previous">Insn Splitting</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Including-Patterns-in-Machine-Descriptions_002e"></a>
+<h3 class="section">17.17 Including Patterns in Machine Descriptions.</h3>
+<a name="index-insn-includes"></a>
+
+<a name="index-include"></a>
+<p>The <code>include</code> pattern tells the compiler tools where to
+look for patterns that are in files other than in the file
+<samp>.md</samp>. This is used only at build time and there is no preprocessing allowed.
+</p>
+<p>It looks like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(include <var>pathname</var>)
+</pre></div>
+
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(include &quot;filestuff&quot;)
+
+</pre></div>
+
+<p>Where <var>pathname</var> is a string that specifies the location of the file,
+specifies the include file to be in <samp>gcc/config/target/filestuff</samp>. The
+directory <samp>gcc/config/target</samp> is regarded as the default directory.
+</p>
+
+<p>Machine descriptions may be split up into smaller more manageable subsections
+and placed into subdirectories.
+</p>
+<p>By specifying:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+(include &quot;BOGUS/filestuff&quot;)
+
+</pre></div>
+
+<p>the include file is specified to be in <samp>gcc/config/<var>target</var>/BOGUS/filestuff</samp>.
+</p>
+<p>Specifying an absolute path for the include file such as;
+</p><div class="smallexample">
+<pre class="smallexample">
+(include &quot;/u2/BOGUS/filestuff&quot;)
+
+</pre></div>
+<p>is permitted but is not encouraged.
+</p>
+<a name="RTL-Generation-Tool-Options-for-Directory-Search"></a>
+<h4 class="subsection">17.17.1 RTL Generation Tool Options for Directory Search</h4>
+<a name="index-directory-options-_002emd"></a>
+<a name="index-options_002c-directory-search"></a>
+<a name="index-search-options"></a>
+
+<p>The <samp>-I<var>dir</var></samp> option specifies directories to search for machine descriptions.
+For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">
+genrecog -I/p1/abc/proc1 -I/p2/abcd/pro2 target.md
+
+</pre></div>
+
+
+<p>Add the directory <var>dir</var> to the head of the list of directories to be
+searched for header files. This can be used to override a system machine definition
+file, substituting your own version, since these directories are
+searched before the default machine description file directories. If you use more than
+one <samp>-I</samp> option, the directories are scanned in left-to-right
+order; the standard default directory come after.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="n" rel="next">Peephole Definitions</a>, Previous: <a href="Insn-Splitting.html#Insn-Splitting" accesskey="p" rel="previous">Insn Splitting</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Inheritance-and-GTY.html b/share/doc/gccint/Inheritance-and-GTY.html
new file mode 100644
index 0000000..7a628a3
--- /dev/null
+++ b/share/doc/gccint/Inheritance-and-GTY.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Inheritance and GTY</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Inheritance and GTY">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Inheritance and GTY">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="User-GC.html#User-GC" rel="next" title="User GC">
+<link href="GTY-Options.html#GTY-Options" rel="previous" title="GTY Options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Inheritance-and-GTY"></a>
+<div class="header">
+<p>
+Next: <a href="User-GC.html#User-GC" accesskey="n" rel="next">User GC</a>, Previous: <a href="GTY-Options.html#GTY-Options" accesskey="p" rel="previous">GTY Options</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-inheritance"></a>
+<h3 class="section">23.2 Support for inheritance</h3>
+<p>gengtype has some support for simple class hierarchies. You can use
+this to have gengtype autogenerate marking routines, provided:
+</p>
+<ul>
+<li> There must be a concrete base class, with a discriminator expression
+that can be used to identify which subclass an instance is.
+</li><li> Only single inheritance is used.
+</li><li> None of the classes within the hierarchy are templates.
+</li></ul>
+
+<p>If your class hierarchy does not fit in this pattern, you must use
+<a href="User-GC.html#User-GC">User GC</a> instead.
+</p>
+<p>The base class and its discriminator must be identified using the &ldquo;desc&rdquo;
+option. Each concrete subclass must use the &ldquo;tag&rdquo; option to identify
+which value of the discriminator it corresponds to.
+</p>
+<p>Every class in the hierarchy must have a <code>GTY(())</code> marker, as
+gengtype will only attempt to parse classes that have such a marker
+<a name="DOCF8" href="#FOOT8"><sup>8</sup></a>.
+</p>
+<div class="smallexample">
+<pre class="smallexample">class GTY((desc(&quot;%h.kind&quot;), tag(&quot;0&quot;))) example_base
+{
+public:
+ int kind;
+ tree a;
+};
+
+class GTY((tag(&quot;1&quot;))) some_subclass : public example_base
+{
+public:
+ tree b;
+};
+
+class GTY((tag(&quot;2&quot;))) some_other_subclass : public example_base
+{
+public:
+ tree c;
+};
+</pre></div>
+
+<p>The generated marking routines for the above will contain a &ldquo;switch&rdquo;
+on &ldquo;kind&rdquo;, visiting all appropriate fields. For example, if kind is
+2, it will cast to &ldquo;some_other_subclass&rdquo; and visit fields a, b, and c.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT8" href="#DOCF8">(8)</a></h3>
+<p>Classes lacking such a marker will not be identified as being
+part of the hierarchy, and so the marking routines will not handle them,
+leading to a assertion failure within the marking routines due to an
+unknown tag value (assuming that assertions are enabled).</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Initialization.html b/share/doc/gccint/Initialization.html
new file mode 100644
index 0000000..1083d43
--- /dev/null
+++ b/share/doc/gccint/Initialization.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Initialization</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Initialization">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Initialization">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Macros-for-Initialization.html#Macros-for-Initialization" rel="next" title="Macros for Initialization">
+<link href="Label-Output.html#Label-Output" rel="previous" title="Label Output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Initialization"></a>
+<div class="header">
+<p>
+Next: <a href="Macros-for-Initialization.html#Macros-for-Initialization" accesskey="n" rel="next">Macros for Initialization</a>, Previous: <a href="Label-Output.html#Label-Output" accesskey="p" rel="previous">Label Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-Initialization-Functions-Are-Handled"></a>
+<h4 class="subsection">18.20.5 How Initialization Functions Are Handled</h4>
+<a name="index-initialization-routines"></a>
+<a name="index-termination-routines"></a>
+<a name="index-constructors_002c-output-of"></a>
+<a name="index-destructors_002c-output-of"></a>
+
+<p>The compiled code for certain languages includes <em>constructors</em>
+(also called <em>initialization routines</em>)&mdash;functions to initialize
+data in the program when the program is started. These functions need
+to be called before the program is &ldquo;started&rdquo;&mdash;that is to say, before
+<code>main</code> is called.
+</p>
+<p>Compiling some languages generates <em>destructors</em> (also called
+<em>termination routines</em>) that should be called when the program
+terminates.
+</p>
+<p>To make the initialization and termination functions work, the compiler
+must output something in the assembler code to cause those functions to
+be called at the appropriate time. When you port the compiler to a new
+system, you need to specify how to do this.
+</p>
+<p>There are two major ways that GCC currently supports the execution of
+initialization and termination functions. Each way has two variants.
+Much of the structure is common to all four variations.
+</p>
+<a name="index-_005f_005fCTOR_005fLIST_005f_005f"></a>
+<a name="index-_005f_005fDTOR_005fLIST_005f_005f"></a>
+<p>The linker must build two lists of these functions&mdash;a list of
+initialization functions, called <code>__CTOR_LIST__</code>, and a list of
+termination functions, called <code>__DTOR_LIST__</code>.
+</p>
+<p>Each list always begins with an ignored function pointer (which may hold
+0, -1, or a count of the function pointers after it, depending on
+the environment). This is followed by a series of zero or more function
+pointers to constructors (or destructors), followed by a function
+pointer containing zero.
+</p>
+<p>Depending on the operating system and its executable file format, either
+<samp>crtstuff.c</samp> or <samp>libgcc2.c</samp> traverses these lists at startup
+time and exit time. Constructors are called in reverse order of the
+list; destructors in forward order.
+</p>
+<p>The best way to handle static constructors works only for object file
+formats which provide arbitrarily-named sections. A section is set
+aside for a list of constructors, and another for a list of destructors.
+Traditionally these are called &lsquo;<samp>.ctors</samp>&rsquo; and &lsquo;<samp>.dtors</samp>&rsquo;. Each
+object file that defines an initialization function also puts a word in
+the constructor section to point to that function. The linker
+accumulates all these words into one contiguous &lsquo;<samp>.ctors</samp>&rsquo; section.
+Termination functions are handled similarly.
+</p>
+<p>This method will be chosen as the default by <samp>target-def.h</samp> if
+<code>TARGET_ASM_NAMED_SECTION</code> is defined. A target that does not
+support arbitrary sections, but does support special designated
+constructor and destructor sections may define <code>CTORS_SECTION_ASM_OP</code>
+and <code>DTORS_SECTION_ASM_OP</code> to achieve the same effect.
+</p>
+<p>When arbitrary sections are available, there are two variants, depending
+upon how the code in <samp>crtstuff.c</samp> is called. On systems that
+support a <em>.init</em> section which is executed at program startup,
+parts of <samp>crtstuff.c</samp> are compiled into that section. The
+program is linked by the <code>gcc</code> driver like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">ld -o <var>output_file</var> crti.o crtbegin.o &hellip; -lgcc crtend.o crtn.o
+</pre></div>
+
+<p>The prologue of a function (<code>__init</code>) appears in the <code>.init</code>
+section of <samp>crti.o</samp>; the epilogue appears in <samp>crtn.o</samp>. Likewise
+for the function <code>__fini</code> in the <em>.fini</em> section. Normally these
+files are provided by the operating system or by the GNU C library, but
+are provided by GCC for a few targets.
+</p>
+<p>The objects <samp>crtbegin.o</samp> and <samp>crtend.o</samp> are (for most targets)
+compiled from <samp>crtstuff.c</samp>. They contain, among other things, code
+fragments within the <code>.init</code> and <code>.fini</code> sections that branch
+to routines in the <code>.text</code> section. The linker will pull all parts
+of a section together, which results in a complete <code>__init</code> function
+that invokes the routines we need at startup.
+</p>
+<p>To use this variant, you must define the <code>INIT_SECTION_ASM_OP</code>
+macro properly.
+</p>
+<p>If no init section is available, when GCC compiles any function called
+<code>main</code> (or more accurately, any function designated as a program
+entry point by the language front end calling <code>expand_main_function</code>),
+it inserts a procedure call to <code>__main</code> as the first executable code
+after the function prologue. The <code>__main</code> function is defined
+in <samp>libgcc2.c</samp> and runs the global constructors.
+</p>
+<p>In file formats that don&rsquo;t support arbitrary sections, there are again
+two variants. In the simplest variant, the GNU linker (GNU <code>ld</code>)
+and an &lsquo;a.out&rsquo; format must be used. In this case,
+<code>TARGET_ASM_CONSTRUCTOR</code> is defined to produce a <code>.stabs</code>
+entry of type &lsquo;<samp>N_SETT</samp>&rsquo;, referencing the name <code>__CTOR_LIST__</code>,
+and with the address of the void function containing the initialization
+code as its value. The GNU linker recognizes this as a request to add
+the value to a <em>set</em>; the values are accumulated, and are eventually
+placed in the executable as a vector in the format described above, with
+a leading (ignored) count and a trailing zero element.
+<code>TARGET_ASM_DESTRUCTOR</code> is handled similarly. Since no init
+section is available, the absence of <code>INIT_SECTION_ASM_OP</code> causes
+the compilation of <code>main</code> to call <code>__main</code> as above, starting
+the initialization process.
+</p>
+<p>The last variant uses neither arbitrary sections nor the GNU linker.
+This is preferable when you want to do dynamic linking and when using
+file formats which the GNU linker does not support, such as &lsquo;ECOFF&rsquo;. In
+this case, <code>TARGET_HAVE_CTORS_DTORS</code> is false, initialization and
+termination functions are recognized simply by their names. This requires
+an extra program in the linkage step, called <code>collect2</code>. This program
+pretends to be the linker, for use with GCC; it does its job by running
+the ordinary linker, but also arranges to include the vectors of
+initialization and termination functions. These functions are called
+via <code>__main</code> as described above. In order to use this method,
+<code>use_collect2</code> must be defined in the target in <samp>config.gcc</samp>.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Macros-for-Initialization.html#Macros-for-Initialization" accesskey="n" rel="next">Macros for Initialization</a>, Previous: <a href="Label-Output.html#Label-Output" accesskey="p" rel="previous">Label Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Insn-Attributes.html b/share/doc/gccint/Insn-Attributes.html
new file mode 100644
index 0000000..93b5f4c
--- /dev/null
+++ b/share/doc/gccint/Insn-Attributes.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Insn Attributes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Insn Attributes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Insn Attributes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Defining-Attributes.html#Defining-Attributes" rel="next" title="Defining Attributes">
+<link href="define_005fpeephole2.html#define_005fpeephole2" rel="previous" title="define_peephole2">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Insn-Attributes"></a>
+<div class="header">
+<p>
+Next: <a href="Conditional-Execution.html#Conditional-Execution" accesskey="n" rel="next">Conditional Execution</a>, Previous: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="p" rel="previous">Peephole Definitions</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Instruction-Attributes"></a>
+<h3 class="section">17.19 Instruction Attributes</h3>
+<a name="index-insn-attributes"></a>
+<a name="index-instruction-attributes"></a>
+
+<p>In addition to describing the instruction supported by the target machine,
+the <samp>md</samp> file also defines a group of <em>attributes</em> and a set of
+values for each. Every generated insn is assigned a value for each attribute.
+One possible attribute would be the effect that the insn has on the machine&rsquo;s
+condition code.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Defining-Attributes.html#Defining-Attributes" accesskey="1">Defining Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying attributes and their values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Expressions.html#Expressions" accesskey="2">Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Valid expressions for attribute values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tagging-Insns.html#Tagging-Insns" accesskey="3">Tagging Insns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning attribute values to insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Attr-Example.html#Attr-Example" accesskey="4">Attr Example</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example of assigning attributes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Insn-Lengths.html#Insn-Lengths" accesskey="5">Insn Lengths</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Computing the length of insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constant-Attributes.html#Constant-Attributes" accesskey="6">Constant Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining attributes that are constant.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Mnemonic-Attribute.html#Mnemonic-Attribute" accesskey="7">Mnemonic Attribute</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Obtain the instruction mnemonic as attribute value.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Delay-Slots.html#Delay-Slots" accesskey="8">Delay Slots</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining delay slots required for a machine.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Processor-pipeline-description.html#Processor-pipeline-description" accesskey="9">Processor pipeline description</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying information for insn scheduling.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Insn-Canonicalizations.html b/share/doc/gccint/Insn-Canonicalizations.html
new file mode 100644
index 0000000..6063dc1
--- /dev/null
+++ b/share/doc/gccint/Insn-Canonicalizations.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Insn Canonicalizations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Insn Canonicalizations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Insn Canonicalizations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Expander-Definitions.html#Expander-Definitions" rel="next" title="Expander Definitions">
+<link href="Looping-Patterns.html#Looping-Patterns" rel="previous" title="Looping Patterns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Insn-Canonicalizations"></a>
+<div class="header">
+<p>
+Next: <a href="Expander-Definitions.html#Expander-Definitions" accesskey="n" rel="next">Expander Definitions</a>, Previous: <a href="Looping-Patterns.html#Looping-Patterns" accesskey="p" rel="previous">Looping Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Canonicalization-of-Instructions"></a>
+<h3 class="section">17.14 Canonicalization of Instructions</h3>
+<a name="index-canonicalization-of-instructions"></a>
+<a name="index-insn-canonicalization"></a>
+
+<p>There are often cases where multiple RTL expressions could represent an
+operation performed by a single machine instruction. This situation is
+most commonly encountered with logical, branch, and multiply-accumulate
+instructions. In such cases, the compiler attempts to convert these
+multiple RTL expressions into a single canonical form to reduce the
+number of insn patterns required.
+</p>
+<p>In addition to algebraic simplifications, following canonicalizations
+are performed:
+</p>
+<ul>
+<li> For commutative and comparison operators, a constant is always made the
+second operand. If a machine only supports a constant as the second
+operand, only patterns that match a constant in the second operand need
+be supplied.
+
+</li><li> For associative operators, a sequence of operators will always chain
+to the left; for instance, only the left operand of an integer <code>plus</code>
+can itself be a <code>plus</code>. <code>and</code>, <code>ior</code>, <code>xor</code>,
+<code>plus</code>, <code>mult</code>, <code>smin</code>, <code>smax</code>, <code>umin</code>, and
+<code>umax</code> are associative when applied to integers, and sometimes to
+floating-point.
+
+</li><li> <a name="index-neg_002c-canonicalization-of"></a>
+<a name="index-not_002c-canonicalization-of"></a>
+<a name="index-mult_002c-canonicalization-of"></a>
+<a name="index-plus_002c-canonicalization-of"></a>
+<a name="index-minus_002c-canonicalization-of"></a>
+For these operators, if only one operand is a <code>neg</code>, <code>not</code>,
+<code>mult</code>, <code>plus</code>, or <code>minus</code> expression, it will be the
+first operand.
+
+</li><li> In combinations of <code>neg</code>, <code>mult</code>, <code>plus</code>, and
+<code>minus</code>, the <code>neg</code> operations (if any) will be moved inside
+the operations as far as possible. For instance,
+<code>(neg (mult A B))</code> is canonicalized as <code>(mult (neg A) B)</code>, but
+<code>(plus (mult (neg B) C) A)</code> is canonicalized as
+<code>(minus A (mult B C))</code>.
+
+</li><li> <a name="index-compare_002c-canonicalization-of"></a>
+For the <code>compare</code> operator, a constant is always the second operand
+if the first argument is a condition code register.
+
+</li><li> For instructions that inherently set a condition code register, the
+<code>compare</code> operator is always written as the first RTL expression of
+the <code>parallel</code> instruction pattern. For example,
+
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (reg:CCZ FLAGS_REG)
+ (compare:CCZ
+ (plus:SI
+ (match_operand:SI 1 &quot;register_operand&quot; &quot;%r&quot;)
+ (match_operand:SI 2 &quot;register_operand&quot; &quot;r&quot;))
+ (const_int 0)))
+ (set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (plus:SI (match_dup 1) (match_dup 2)))]
+ &quot;&quot;
+ &quot;addl %0, %1, %2&quot;)
+</pre></div>
+
+</li><li> An operand of <code>neg</code>, <code>not</code>, <code>mult</code>, <code>plus</code>, or
+<code>minus</code> is made the first operand under the same conditions as
+above.
+
+</li><li> <code>(ltu (plus <var>a</var> <var>b</var>) <var>b</var>)</code> is converted to
+<code>(ltu (plus <var>a</var> <var>b</var>) <var>a</var>)</code>. Likewise with <code>geu</code> instead
+of <code>ltu</code>.
+
+</li><li> <code>(minus <var>x</var> (const_int <var>n</var>))</code> is converted to
+<code>(plus <var>x</var> (const_int <var>-n</var>))</code>.
+
+</li><li> Within address computations (i.e., inside <code>mem</code>), a left shift is
+converted into the appropriate multiplication by a power of two.
+
+</li><li> <a name="index-ior_002c-canonicalization-of"></a>
+<a name="index-and_002c-canonicalization-of"></a>
+<a name="index-De-Morgan_0027s-law"></a>
+De Morgan&rsquo;s Law is used to move bitwise negation inside a bitwise
+logical-and or logical-or operation. If this results in only one
+operand being a <code>not</code> expression, it will be the first one.
+
+<p>A machine that has an instruction that performs a bitwise logical-and of one
+operand with the bitwise negation of the other should specify the pattern
+for that instruction as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:<var>m</var> 0 &hellip;)
+ (and:<var>m</var> (not:<var>m</var> (match_operand:<var>m</var> 1 &hellip;))
+ (match_operand:<var>m</var> 2 &hellip;)))]
+ &quot;&hellip;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>Similarly, a pattern for a &ldquo;NAND&rdquo; instruction should be written
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:<var>m</var> 0 &hellip;)
+ (ior:<var>m</var> (not:<var>m</var> (match_operand:<var>m</var> 1 &hellip;))
+ (not:<var>m</var> (match_operand:<var>m</var> 2 &hellip;))))]
+ &quot;&hellip;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>In both cases, it is not necessary to include patterns for the many
+logically equivalent RTL expressions.
+</p>
+</li><li> <a name="index-xor_002c-canonicalization-of"></a>
+The only possible RTL expressions involving both bitwise exclusive-or
+and bitwise negation are <code>(xor:<var>m</var> <var>x</var> <var>y</var>)</code>
+and <code>(not:<var>m</var> (xor:<var>m</var> <var>x</var> <var>y</var>))</code>.
+
+</li><li> The sum of three items, one of which is a constant, will only appear in
+the form
+
+<div class="smallexample">
+<pre class="smallexample">(plus:<var>m</var> (plus:<var>m</var> <var>x</var> <var>y</var>) <var>constant</var>)
+</pre></div>
+
+</li><li> <a name="index-zero_005fextract_002c-canonicalization-of"></a>
+<a name="index-sign_005fextract_002c-canonicalization-of"></a>
+Equality comparisons of a group of bits (usually a single bit) with zero
+will be written using <code>zero_extract</code> rather than the equivalent
+<code>and</code> or <code>sign_extract</code> operations.
+
+</li><li> <a name="index-mult_002c-canonicalization-of-1"></a>
+<code>(sign_extend:<var>m1</var> (mult:<var>m2</var> (sign_extend:<var>m2</var> <var>x</var>)
+(sign_extend:<var>m2</var> <var>y</var>)))</code> is converted to <code>(mult:<var>m1</var>
+(sign_extend:<var>m1</var> <var>x</var>) (sign_extend:<var>m1</var> <var>y</var>))</code>, and likewise
+for <code>zero_extend</code>.
+
+</li><li> <code>(sign_extend:<var>m1</var> (mult:<var>m2</var> (ashiftrt:<var>m2</var>
+<var>x</var> <var>s</var>) (sign_extend:<var>m2</var> <var>y</var>)))</code> is converted
+to <code>(mult:<var>m1</var> (sign_extend:<var>m1</var> (ashiftrt:<var>m2</var>
+<var>x</var> <var>s</var>)) (sign_extend:<var>m1</var> <var>y</var>))</code>, and likewise for
+patterns using <code>zero_extend</code> and <code>lshiftrt</code>. If the second
+operand of <code>mult</code> is also a shift, then that is extended also.
+This transformation is only applied when it can be proven that the
+original operation had sufficient precision to prevent overflow.
+
+</li></ul>
+
+<p>Further canonicalization rules are defined in the function
+<code>commutative_operand_precedence</code> in <samp>gcc/rtlanal.cc</samp>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Expander-Definitions.html#Expander-Definitions" accesskey="n" rel="next">Expander Definitions</a>, Previous: <a href="Looping-Patterns.html#Looping-Patterns" accesskey="p" rel="previous">Looping Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Insn-Lengths.html b/share/doc/gccint/Insn-Lengths.html
new file mode 100644
index 0000000..738735c
--- /dev/null
+++ b/share/doc/gccint/Insn-Lengths.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Insn Lengths</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Insn Lengths">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Insn Lengths">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Constant-Attributes.html#Constant-Attributes" rel="next" title="Constant Attributes">
+<link href="Attr-Example.html#Attr-Example" rel="previous" title="Attr Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Insn-Lengths"></a>
+<div class="header">
+<p>
+Next: <a href="Constant-Attributes.html#Constant-Attributes" accesskey="n" rel="next">Constant Attributes</a>, Previous: <a href="Attr-Example.html#Attr-Example" accesskey="p" rel="previous">Attr Example</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Computing-the-Length-of-an-Insn"></a>
+<h4 class="subsection">17.19.5 Computing the Length of an Insn</h4>
+<a name="index-insn-lengths_002c-computing"></a>
+<a name="index-computing-the-length-of-an-insn"></a>
+
+<p>For many machines, multiple types of branch instructions are provided, each
+for different length branch displacements. In most cases, the assembler
+will choose the correct instruction to use. However, when the assembler
+cannot do so, GCC can when a special attribute, the <code>length</code>
+attribute, is defined. This attribute must be defined to have numeric
+values by specifying a null string in its <code>define_attr</code>.
+</p>
+<p>In the case of the <code>length</code> attribute, two additional forms of
+arithmetic terms are allowed in test expressions:
+</p>
+<dl compact="compact">
+<dd><a name="index-match_005fdup-and-attributes"></a>
+</dd>
+<dt><code>(match_dup <var>n</var>)</code></dt>
+<dd><p>This refers to the address of operand <var>n</var> of the current insn, which
+must be a <code>label_ref</code>.
+</p>
+<a name="index-pc-and-attributes"></a>
+</dd>
+<dt><code>(pc)</code></dt>
+<dd><p>For non-branch instructions and backward branch instructions, this refers
+to the address of the current insn. But for forward branch instructions,
+this refers to the address of the next insn, because the length of the
+current insn is to be computed.
+</p></dd>
+</dl>
+
+<a name="index-addr_005fvec_002c-length-of"></a>
+<a name="index-addr_005fdiff_005fvec_002c-length-of"></a>
+<p>For normal insns, the length will be determined by value of the
+<code>length</code> attribute. In the case of <code>addr_vec</code> and
+<code>addr_diff_vec</code> insn patterns, the length is computed as
+the number of vectors multiplied by the size of each vector.
+</p>
+<p>Lengths are measured in addressable storage units (bytes).
+</p>
+<p>Note that it is possible to call functions via the <code>symbol_ref</code>
+mechanism to compute the length of an insn. However, if you use this
+mechanism you must provide dummy clauses to express the maximum length
+without using the function call. You can see an example of this in the
+<code>pa</code> machine description for the <code>call_symref</code> pattern.
+</p>
+<p>The following macros can be used to refine the length computation:
+</p>
+<dl compact="compact">
+<dd><a name="index-ADJUST_005fINSN_005fLENGTH"></a>
+</dd>
+<dt><code>ADJUST_INSN_LENGTH (<var>insn</var>, <var>length</var>)</code></dt>
+<dd><p>If defined, modifies the length assigned to instruction <var>insn</var> as a
+function of the context in which it is used. <var>length</var> is an lvalue
+that contains the initially computed length of the insn and should be
+updated with the correct length of the insn.
+</p>
+<p>This macro will normally not be required. A case in which it is
+required is the ROMP. On this machine, the size of an <code>addr_vec</code>
+insn must be increased by two to compensate for the fact that alignment
+may be required.
+</p></dd>
+</dl>
+
+<a name="index-get_005fattr_005flength"></a>
+<p>The routine that returns <code>get_attr_length</code> (the value of the
+<code>length</code> attribute) can be used by the output routine to
+determine the form of the branch instruction to be written, as the
+example below illustrates.
+</p>
+<p>As an example of the specification of variable-length branches, consider
+the IBM 360. If we adopt the convention that a register will be set to
+the starting address of a function, we can jump to labels within 4k of
+the start using a four-byte instruction. Otherwise, we need a six-byte
+sequence to load the address from memory and then branch to it.
+</p>
+<p>On such a machine, a pattern for a branch instruction might be specified
+as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;jump&quot;
+ [(set (pc)
+ (label_ref (match_operand 0 &quot;&quot; &quot;&quot;)))]
+ &quot;&quot;
+{
+ return (get_attr_length (insn) == 4
+ ? &quot;b %l0&quot; : &quot;l r15,=a(%l0); br r15&quot;);
+}
+ [(set (attr &quot;length&quot;)
+ (if_then_else (lt (match_dup 0) (const_int 4096))
+ (const_int 4)
+ (const_int 6)))])
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Constant-Attributes.html#Constant-Attributes" accesskey="n" rel="next">Constant Attributes</a>, Previous: <a href="Attr-Example.html#Attr-Example" accesskey="p" rel="previous">Attr Example</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Insn-Splitting.html b/share/doc/gccint/Insn-Splitting.html
new file mode 100644
index 0000000..8bfce4b
--- /dev/null
+++ b/share/doc/gccint/Insn-Splitting.html
@@ -0,0 +1,458 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Insn Splitting</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Insn Splitting">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Insn Splitting">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Including-Patterns.html#Including-Patterns" rel="next" title="Including Patterns">
+<link href="Expander-Definitions.html#Expander-Definitions" rel="previous" title="Expander Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Insn-Splitting"></a>
+<div class="header">
+<p>
+Next: <a href="Including-Patterns.html#Including-Patterns" accesskey="n" rel="next">Including Patterns</a>, Previous: <a href="Expander-Definitions.html#Expander-Definitions" accesskey="p" rel="previous">Expander Definitions</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-How-to-Split-Instructions"></a>
+<h3 class="section">17.16 Defining How to Split Instructions</h3>
+<a name="index-insn-splitting"></a>
+<a name="index-instruction-splitting"></a>
+<a name="index-splitting-instructions"></a>
+
+<p>There are two cases where you should specify how to split a pattern
+into multiple insns. On machines that have instructions requiring
+delay slots (see <a href="Delay-Slots.html#Delay-Slots">Delay Slots</a>) or that have instructions whose
+output is not available for multiple cycles (see <a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a>), the compiler phases that optimize these cases need to
+be able to move insns into one-instruction delay slots. However, some
+insns may generate more than one machine instruction. These insns
+cannot be placed into a delay slot.
+</p>
+<p>Often you can rewrite the single insn as a list of individual insns,
+each corresponding to one machine instruction. The disadvantage of
+doing so is that it will cause the compilation to be slower and require
+more space. If the resulting insns are too complex, it may also
+suppress some optimizations. The compiler splits the insn if there is a
+reason to believe that it might improve instruction or delay slot
+scheduling.
+</p>
+<p>The insn combiner phase also splits putative insns. If three insns are
+merged into one insn with a complex expression that cannot be matched by
+some <code>define_insn</code> pattern, the combiner phase attempts to split
+the complex pattern into two insns that are recognized. Usually it can
+break the complex pattern into two patterns by splitting out some
+subexpression. However, in some other cases, such as performing an
+addition of a large constant in two insns on a RISC machine, the way to
+split the addition into two insns is machine-dependent.
+</p>
+<a name="index-define_005fsplit"></a>
+<p>The <code>define_split</code> definition tells the compiler how to split a
+complex insn into several simpler insns. It looks like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_split
+ [<var>insn-pattern</var>]
+ &quot;<var>condition</var>&quot;
+ [<var>new-insn-pattern-1</var>
+ <var>new-insn-pattern-2</var>
+ &hellip;]
+ &quot;<var>preparation-statements</var>&quot;)
+</pre></div>
+
+<p><var>insn-pattern</var> is a pattern that needs to be split and
+<var>condition</var> is the final condition to be tested, as in a
+<code>define_insn</code>. When an insn matching <var>insn-pattern</var> and
+satisfying <var>condition</var> is found, it is replaced in the insn list
+with the insns given by <var>new-insn-pattern-1</var>,
+<var>new-insn-pattern-2</var>, etc.
+</p>
+<p>The <var>preparation-statements</var> are similar to those statements that
+are specified for <code>define_expand</code> (see <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>)
+and are executed before the new RTL is generated to prepare for the
+generated code or emit some insns whose pattern is not fixed. Unlike
+those in <code>define_expand</code>, however, these statements must not
+generate any new pseudo-registers. Once reload has completed, they also
+must not allocate any space in the stack frame.
+</p>
+<p>There are two special macros defined for use in the preparation statements:
+<code>DONE</code> and <code>FAIL</code>. Use them with a following semicolon,
+as a statement.
+</p>
+<dl compact="compact">
+<dd>
+<a name="index-DONE-1"></a>
+</dd>
+<dt><code>DONE</code></dt>
+<dd><p>Use the <code>DONE</code> macro to end RTL generation for the splitter. The
+only RTL insns generated as replacement for the matched input insn will
+be those already emitted by explicit calls to <code>emit_insn</code> within
+the preparation statements; the replacement pattern is not used.
+</p>
+<a name="index-FAIL-1"></a>
+</dd>
+<dt><code>FAIL</code></dt>
+<dd><p>Make the <code>define_split</code> fail on this occasion. When a <code>define_split</code>
+fails, it means that the splitter was not truly available for the inputs
+it was given, and the input insn will not be split.
+</p></dd>
+</dl>
+
+<p>If the preparation falls through (invokes neither <code>DONE</code> nor
+<code>FAIL</code>), then the <code>define_split</code> uses the replacement
+template.
+</p>
+<p>Patterns are matched against <var>insn-pattern</var> in two different
+circumstances. If an insn needs to be split for delay slot scheduling
+or insn scheduling, the insn is already known to be valid, which means
+that it must have been matched by some <code>define_insn</code> and, if
+<code>reload_completed</code> is nonzero, is known to satisfy the constraints
+of that <code>define_insn</code>. In that case, the new insn patterns must
+also be insns that are matched by some <code>define_insn</code> and, if
+<code>reload_completed</code> is nonzero, must also satisfy the constraints
+of those definitions.
+</p>
+<p>As an example of this usage of <code>define_split</code>, consider the following
+example from <samp>a29k.md</samp>, which splits a <code>sign_extend</code> from
+<code>HImode</code> to <code>SImode</code> into a pair of shift insns:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_split
+ [(set (match_operand:SI 0 &quot;gen_reg_operand&quot; &quot;&quot;)
+ (sign_extend:SI (match_operand:HI 1 &quot;gen_reg_operand&quot; &quot;&quot;)))]
+ &quot;&quot;
+ [(set (match_dup 0)
+ (ashift:SI (match_dup 1)
+ (const_int 16)))
+ (set (match_dup 0)
+ (ashiftrt:SI (match_dup 0)
+ (const_int 16)))]
+ &quot;
+{ operands[1] = gen_lowpart (SImode, operands[1]); }&quot;)
+</pre></div>
+
+<p>When the combiner phase tries to split an insn pattern, it is always the
+case that the pattern is <em>not</em> matched by any <code>define_insn</code>.
+The combiner pass first tries to split a single <code>set</code> expression
+and then the same <code>set</code> expression inside a <code>parallel</code>, but
+followed by a <code>clobber</code> of a pseudo-reg to use as a scratch
+register. In these cases, the combiner expects exactly one or two new insn
+patterns to be generated. It will verify that these patterns match some
+<code>define_insn</code> definitions, so you need not do this test in the
+<code>define_split</code> (of course, there is no point in writing a
+<code>define_split</code> that will never produce insns that match).
+</p>
+<p>Here is an example of this use of <code>define_split</code>, taken from
+<samp>rs6000.md</samp>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_split
+ [(set (match_operand:SI 0 &quot;gen_reg_operand&quot; &quot;&quot;)
+ (plus:SI (match_operand:SI 1 &quot;gen_reg_operand&quot; &quot;&quot;)
+ (match_operand:SI 2 &quot;non_add_cint_operand&quot; &quot;&quot;)))]
+ &quot;&quot;
+ [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 3)))
+ (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))]
+&quot;
+{
+ int low = INTVAL (operands[2]) &amp; 0xffff;
+ int high = (unsigned) INTVAL (operands[2]) &gt;&gt; 16;
+
+ if (low &amp; 0x8000)
+ high++, low |= 0xffff0000;
+
+ operands[3] = GEN_INT (high &lt;&lt; 16);
+ operands[4] = GEN_INT (low);
+}&quot;)
+</pre></div>
+
+<p>Here the predicate <code>non_add_cint_operand</code> matches any
+<code>const_int</code> that is <em>not</em> a valid operand of a single add
+insn. The add with the smaller displacement is written so that it
+can be substituted into the address of a subsequent operation.
+</p>
+<p>An example that uses a scratch register, from the same file, generates
+an equality comparison of a register and a large constant:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_split
+ [(set (match_operand:CC 0 &quot;cc_reg_operand&quot; &quot;&quot;)
+ (compare:CC (match_operand:SI 1 &quot;gen_reg_operand&quot; &quot;&quot;)
+ (match_operand:SI 2 &quot;non_short_cint_operand&quot; &quot;&quot;)))
+ (clobber (match_operand:SI 3 &quot;gen_reg_operand&quot; &quot;&quot;))]
+ &quot;find_single_use (operands[0], insn, 0)
+ &amp;&amp; (GET_CODE (*find_single_use (operands[0], insn, 0)) == EQ
+ || GET_CODE (*find_single_use (operands[0], insn, 0)) == NE)&quot;
+ [(set (match_dup 3) (xor:SI (match_dup 1) (match_dup 4)))
+ (set (match_dup 0) (compare:CC (match_dup 3) (match_dup 5)))]
+ &quot;
+{
+ /* <span class="roman">Get the constant we are comparing against, C, and see what it
+ looks like sign-extended to 16 bits. Then see what constant
+ could be XOR&rsquo;ed with C to get the sign-extended value.</span> */
+
+ int c = INTVAL (operands[2]);
+ int sextc = (c &lt;&lt; 16) &gt;&gt; 16;
+ int xorv = c ^ sextc;
+
+ operands[4] = GEN_INT (xorv);
+ operands[5] = GEN_INT (sextc);
+}&quot;)
+</pre></div>
+
+<p>To avoid confusion, don&rsquo;t write a single <code>define_split</code> that
+accepts some insns that match some <code>define_insn</code> as well as some
+insns that don&rsquo;t. Instead, write two separate <code>define_split</code>
+definitions, one for the insns that are valid and one for the insns that
+are not valid.
+</p>
+<p>The splitter is allowed to split jump instructions into a sequence of jumps or
+create new jumps while splitting non-jump instructions. As the control flow
+graph and branch prediction information needs to be updated after the splitter
+runs, several restrictions apply.
+</p>
+<p>Splitting of a jump instruction into a sequence that has another jump
+instruction to the same label is always valid, as the compiler expects
+identical behavior of the new jump. When the new sequence contains multiple
+jump instructions or new labels, more assistance is needed. The splitter is
+permitted to create only unconditional jumps, or simple conditional jump
+instructions. Additionally it must attach a <code>REG_BR_PROB</code> note to each
+conditional jump. A global variable <code>split_branch_probability</code> holds the
+probability of the original branch in case it was a simple conditional jump,
+-1 otherwise. To simplify recomputing of edge frequencies, the new
+sequence is permitted to have only forward jumps to the newly-created labels.
+</p>
+<a name="index-define_005finsn_005fand_005fsplit"></a>
+<p>For the common case where the pattern of a define_split exactly matches the
+pattern of a define_insn, use <code>define_insn_and_split</code>. It looks like
+this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_and_split
+ [<var>insn-pattern</var>]
+ &quot;<var>condition</var>&quot;
+ &quot;<var>output-template</var>&quot;
+ &quot;<var>split-condition</var>&quot;
+ [<var>new-insn-pattern-1</var>
+ <var>new-insn-pattern-2</var>
+ &hellip;]
+ &quot;<var>preparation-statements</var>&quot;
+ [<var>insn-attributes</var>])
+
+</pre></div>
+
+<p><var>insn-pattern</var>, <var>condition</var>, <var>output-template</var>, and
+<var>insn-attributes</var> are used as in <code>define_insn</code>. The
+<var>new-insn-pattern</var> vector and the <var>preparation-statements</var> are used as
+in a <code>define_split</code>. The <var>split-condition</var> is also used as in
+<code>define_split</code>, with the additional behavior that if the condition starts
+with &lsquo;<samp>&amp;&amp;</samp>&rsquo;, the condition used for the split will be the constructed as a
+logical &ldquo;and&rdquo; of the split condition with the insn condition. For example,
+from i386.md:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_and_split &quot;zero_extendhisi2_and&quot;
+ [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;=r&quot;)
+ (zero_extend:SI (match_operand:HI 1 &quot;register_operand&quot; &quot;0&quot;)))
+ (clobber (reg:CC 17))]
+ &quot;TARGET_ZERO_EXTEND_WITH_AND &amp;&amp; !optimize_size&quot;
+ &quot;#&quot;
+ &quot;&amp;&amp; reload_completed&quot;
+ [(parallel [(set (match_dup 0)
+ (and:SI (match_dup 0) (const_int 65535)))
+ (clobber (reg:CC 17))])]
+ &quot;&quot;
+ [(set_attr &quot;type&quot; &quot;alu1&quot;)])
+
+</pre></div>
+
+<p>In this case, the actual split condition will be
+&lsquo;<samp>TARGET_ZERO_EXTEND_WITH_AND &amp;&amp; !optimize_size &amp;&amp; reload_completed</samp>&rsquo;.
+</p>
+<p>The <code>define_insn_and_split</code> construction provides exactly the same
+functionality as two separate <code>define_insn</code> and <code>define_split</code>
+patterns. It exists for compactness, and as a maintenance tool to prevent
+having to ensure the two patterns&rsquo; templates match.
+</p>
+<a name="index-define_005finsn_005fand_005frewrite"></a>
+<p>It is sometimes useful to have a <code>define_insn_and_split</code>
+that replaces specific operands of an instruction but leaves the
+rest of the instruction pattern unchanged. You can do this directly
+with a <code>define_insn_and_split</code>, but it requires a
+<var>new-insn-pattern-1</var> that repeats most of the original <var>insn-pattern</var>.
+There is also the complication that an implicit <code>parallel</code> in
+<var>insn-pattern</var> must become an explicit <code>parallel</code> in
+<var>new-insn-pattern-1</var>, which is easy to overlook.
+A simpler alternative is to use <code>define_insn_and_rewrite</code>, which
+is a form of <code>define_insn_and_split</code> that automatically generates
+<var>new-insn-pattern-1</var> by replacing each <code>match_operand</code>
+in <var>insn-pattern</var> with a corresponding <code>match_dup</code>, and each
+<code>match_operator</code> in the pattern with a corresponding <code>match_op_dup</code>.
+The arguments are otherwise identical to <code>define_insn_and_split</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_and_rewrite
+ [<var>insn-pattern</var>]
+ &quot;<var>condition</var>&quot;
+ &quot;<var>output-template</var>&quot;
+ &quot;<var>split-condition</var>&quot;
+ &quot;<var>preparation-statements</var>&quot;
+ [<var>insn-attributes</var>])
+</pre></div>
+
+<p>The <code>match_dup</code>s and <code>match_op_dup</code>s in the new
+instruction pattern use any new operand values that the
+<var>preparation-statements</var> store in the <code>operands</code> array,
+as for a normal <code>define_insn_and_split</code>. <var>preparation-statements</var>
+can also emit additional instructions before the new instruction.
+They can even emit an entirely different sequence of instructions and
+use <code>DONE</code> to avoid emitting a new form of the original
+instruction.
+</p>
+<p>The split in a <code>define_insn_and_rewrite</code> is only intended
+to apply to existing instructions that match <var>insn-pattern</var>.
+<var>split-condition</var> must therefore start with <code>&amp;&amp;</code>,
+so that the split condition applies on top of <var>condition</var>.
+</p>
+<p>Here is an example from the AArch64 SVE port, in which operand 1 is
+known to be equivalent to an all-true constant and isn&rsquo;t used by the
+output template:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_and_rewrite &quot;*while_ult&lt;GPI:mode&gt;&lt;PRED_ALL:mode&gt;_cc&quot;
+ [(set (reg:CC CC_REGNUM)
+ (compare:CC
+ (unspec:SI [(match_operand:PRED_ALL 1)
+ (unspec:PRED_ALL
+ [(match_operand:GPI 2 &quot;aarch64_reg_or_zero&quot; &quot;rZ&quot;)
+ (match_operand:GPI 3 &quot;aarch64_reg_or_zero&quot; &quot;rZ&quot;)]
+ UNSPEC_WHILE_LO)]
+ UNSPEC_PTEST_PTRUE)
+ (const_int 0)))
+ (set (match_operand:PRED_ALL 0 &quot;register_operand&quot; &quot;=Upa&quot;)
+ (unspec:PRED_ALL [(match_dup 2)
+ (match_dup 3)]
+ UNSPEC_WHILE_LO))]
+ &quot;TARGET_SVE&quot;
+ &quot;whilelo\t%0.&lt;PRED_ALL:Vetype&gt;, %&lt;w&gt;2, %&lt;w&gt;3&quot;
+ ;; Force the compiler to drop the unused predicate operand, so that we
+ ;; don't have an unnecessary PTRUE.
+ &quot;&amp;&amp; !CONSTANT_P (operands[1])&quot;
+ {
+ operands[1] = CONSTM1_RTX (&lt;MODE&gt;mode);
+ }
+)
+</pre></div>
+
+<p>The splitter in this case simply replaces operand 1 with the constant
+value that it is known to have. The equivalent <code>define_insn_and_split</code>
+would be:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_and_split &quot;*while_ult&lt;GPI:mode&gt;&lt;PRED_ALL:mode&gt;_cc&quot;
+ [(set (reg:CC CC_REGNUM)
+ (compare:CC
+ (unspec:SI [(match_operand:PRED_ALL 1)
+ (unspec:PRED_ALL
+ [(match_operand:GPI 2 &quot;aarch64_reg_or_zero&quot; &quot;rZ&quot;)
+ (match_operand:GPI 3 &quot;aarch64_reg_or_zero&quot; &quot;rZ&quot;)]
+ UNSPEC_WHILE_LO)]
+ UNSPEC_PTEST_PTRUE)
+ (const_int 0)))
+ (set (match_operand:PRED_ALL 0 &quot;register_operand&quot; &quot;=Upa&quot;)
+ (unspec:PRED_ALL [(match_dup 2)
+ (match_dup 3)]
+ UNSPEC_WHILE_LO))]
+ &quot;TARGET_SVE&quot;
+ &quot;whilelo\t%0.&lt;PRED_ALL:Vetype&gt;, %&lt;w&gt;2, %&lt;w&gt;3&quot;
+ ;; Force the compiler to drop the unused predicate operand, so that we
+ ;; don't have an unnecessary PTRUE.
+ &quot;&amp;&amp; !CONSTANT_P (operands[1])&quot;
+ [(parallel
+ [(set (reg:CC CC_REGNUM)
+ (compare:CC
+ (unspec:SI [(match_dup 1)
+ (unspec:PRED_ALL [(match_dup 2)
+ (match_dup 3)]
+ UNSPEC_WHILE_LO)]
+ UNSPEC_PTEST_PTRUE)
+ (const_int 0)))
+ (set (match_dup 0)
+ (unspec:PRED_ALL [(match_dup 2)
+ (match_dup 3)]
+ UNSPEC_WHILE_LO))])]
+ {
+ operands[1] = CONSTM1_RTX (&lt;MODE&gt;mode);
+ }
+)
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Including-Patterns.html#Including-Patterns" accesskey="n" rel="next">Including Patterns</a>, Previous: <a href="Expander-Definitions.html#Expander-Definitions" accesskey="p" rel="previous">Expander Definitions</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Insns.html b/share/doc/gccint/Insns.html
new file mode 100644
index 0000000..ebe8053
--- /dev/null
+++ b/share/doc/gccint/Insns.html
@@ -0,0 +1,754 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Insns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Insns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Insns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Calls.html#Calls" rel="next" title="Calls">
+<link href="Debug-Information.html#Debug-Information" rel="previous" title="Debug Information">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Insns"></a>
+<div class="header">
+<p>
+Next: <a href="Calls.html#Calls" accesskey="n" rel="next">Calls</a>, Previous: <a href="Debug-Information.html#Debug-Information" accesskey="p" rel="previous">Debug Information</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Insns-1"></a>
+<h3 class="section">14.19 Insns</h3>
+<a name="index-insns"></a>
+
+<p>The RTL representation of the code for a function is a doubly-linked
+chain of objects called <em>insns</em>. Insns are expressions with
+special codes that are used for no other purpose. Some insns are
+actual instructions; others represent dispatch tables for <code>switch</code>
+statements; others represent labels to jump to or various sorts of
+declarative information.
+</p>
+<p>In addition to its own specific data, each insn must have a unique
+id-number that distinguishes it from all other insns in the current
+function (after delayed branch scheduling, copies of an insn with the
+same id-number may be present in multiple places in a function, but
+these copies will always be identical and will only appear inside a
+<code>sequence</code>), and chain pointers to the preceding and following
+insns. These three fields occupy the same position in every insn,
+independent of the expression code of the insn. They could be accessed
+with <code>XEXP</code> and <code>XINT</code>, but instead three special macros are
+always used:
+</p>
+<dl compact="compact">
+<dd><a name="index-INSN_005fUID"></a>
+</dd>
+<dt><code>INSN_UID (<var>i</var>)</code></dt>
+<dd><p>Accesses the unique id of insn <var>i</var>.
+</p>
+<a name="index-PREV_005fINSN"></a>
+</dd>
+<dt><code>PREV_INSN (<var>i</var>)</code></dt>
+<dd><p>Accesses the chain pointer to the insn preceding <var>i</var>.
+If <var>i</var> is the first insn, this is a null pointer.
+</p>
+<a name="index-NEXT_005fINSN"></a>
+</dd>
+<dt><code>NEXT_INSN (<var>i</var>)</code></dt>
+<dd><p>Accesses the chain pointer to the insn following <var>i</var>.
+If <var>i</var> is the last insn, this is a null pointer.
+</p></dd>
+</dl>
+
+<a name="index-get_005finsns"></a>
+<a name="index-get_005flast_005finsn"></a>
+<p>The first insn in the chain is obtained by calling <code>get_insns</code>; the
+last insn is the result of calling <code>get_last_insn</code>. Within the
+chain delimited by these insns, the <code>NEXT_INSN</code> and
+<code>PREV_INSN</code> pointers must always correspond: if <var>insn</var> is not
+the first insn,
+</p>
+<div class="smallexample">
+<pre class="smallexample">NEXT_INSN (PREV_INSN (<var>insn</var>)) == <var>insn</var>
+</pre></div>
+
+<p>is always true and if <var>insn</var> is not the last insn,
+</p>
+<div class="smallexample">
+<pre class="smallexample">PREV_INSN (NEXT_INSN (<var>insn</var>)) == <var>insn</var>
+</pre></div>
+
+<p>is always true.
+</p>
+<p>After delay slot scheduling, some of the insns in the chain might be
+<code>sequence</code> expressions, which contain a vector of insns. The value
+of <code>NEXT_INSN</code> in all but the last of these insns is the next insn
+in the vector; the value of <code>NEXT_INSN</code> of the last insn in the vector
+is the same as the value of <code>NEXT_INSN</code> for the <code>sequence</code> in
+which it is contained. Similar rules apply for <code>PREV_INSN</code>.
+</p>
+<p>This means that the above invariants are not necessarily true for insns
+inside <code>sequence</code> expressions. Specifically, if <var>insn</var> is the
+first insn in a <code>sequence</code>, <code>NEXT_INSN (PREV_INSN (<var>insn</var>))</code>
+is the insn containing the <code>sequence</code> expression, as is the value
+of <code>PREV_INSN (NEXT_INSN (<var>insn</var>))</code> if <var>insn</var> is the last
+insn in the <code>sequence</code> expression. You can use these expressions
+to find the containing <code>sequence</code> expression.
+</p>
+<p>Every insn has one of the following expression codes:
+</p>
+<dl compact="compact">
+<dd><a name="index-insn"></a>
+</dd>
+<dt><code>insn</code></dt>
+<dd><p>The expression code <code>insn</code> is used for instructions that do not jump
+and do not do function calls. <code>sequence</code> expressions are always
+contained in insns with code <code>insn</code> even if one of those insns
+should jump or do function calls.
+</p>
+<p>Insns with code <code>insn</code> have four additional fields beyond the three
+mandatory ones listed above. These four are described in a table below.
+</p>
+<a name="index-jump_005finsn"></a>
+</dd>
+<dt><code>jump_insn</code></dt>
+<dd><p>The expression code <code>jump_insn</code> is used for instructions that may
+jump (or, more generally, may contain <code>label_ref</code> expressions to
+which <code>pc</code> can be set in that instruction). If there is an
+instruction to return from the current function, it is recorded as a
+<code>jump_insn</code>.
+</p>
+<a name="index-JUMP_005fLABEL"></a>
+<p><code>jump_insn</code> insns have the same extra fields as <code>insn</code> insns,
+accessed in the same way and in addition contain a field
+<code>JUMP_LABEL</code> which is defined once jump optimization has completed.
+</p>
+<p>For simple conditional and unconditional jumps, this field contains
+the <code>code_label</code> to which this insn will (possibly conditionally)
+branch. In a more complex jump, <code>JUMP_LABEL</code> records one of the
+labels that the insn refers to; other jump target labels are recorded
+as <code>REG_LABEL_TARGET</code> notes. The exception is <code>addr_vec</code>
+and <code>addr_diff_vec</code>, where <code>JUMP_LABEL</code> is <code>NULL_RTX</code>
+and the only way to find the labels is to scan the entire body of the
+insn.
+</p>
+<p>Return insns count as jumps, but their <code>JUMP_LABEL</code> is <code>RETURN</code>
+or <code>SIMPLE_RETURN</code>.
+</p>
+<a name="index-call_005finsn"></a>
+</dd>
+<dt><code>call_insn</code></dt>
+<dd><p>The expression code <code>call_insn</code> is used for instructions that may do
+function calls. It is important to distinguish these instructions because
+they imply that certain registers and memory locations may be altered
+unpredictably.
+</p>
+<a name="index-CALL_005fINSN_005fFUNCTION_005fUSAGE"></a>
+<p><code>call_insn</code> insns have the same extra fields as <code>insn</code> insns,
+accessed in the same way and in addition contain a field
+<code>CALL_INSN_FUNCTION_USAGE</code>, which contains a list (chain of
+<code>expr_list</code> expressions) containing <code>use</code>, <code>clobber</code> and
+sometimes <code>set</code> expressions that denote hard registers and
+<code>mem</code>s used or clobbered by the called function.
+</p>
+<p>A <code>mem</code> generally points to a stack slot in which arguments passed
+to the libcall by reference (see <a href="Register-Arguments.html#Register-Arguments">TARGET_PASS_BY_REFERENCE</a>) are stored. If the argument is
+caller-copied (see <a href="Register-Arguments.html#Register-Arguments">TARGET_CALLEE_COPIES</a>),
+the stack slot will be mentioned in <code>clobber</code> and <code>use</code>
+entries; if it&rsquo;s callee-copied, only a <code>use</code> will appear, and the
+<code>mem</code> may point to addresses that are not stack slots.
+</p>
+<p>Registers occurring inside a <code>clobber</code> in this list augment
+registers specified in <code>CALL_USED_REGISTERS</code> (see <a href="Register-Basics.html#Register-Basics">Register Basics</a>).
+</p>
+<p>If the list contains a <code>set</code> involving two registers, it indicates
+that the function returns one of its arguments. Such a <code>set</code> may
+look like a no-op if the same register holds the argument and the return
+value.
+</p>
+<a name="index-code_005flabel"></a>
+<a name="index-CODE_005fLABEL_005fNUMBER"></a>
+</dd>
+<dt><code>code_label</code></dt>
+<dd><p>A <code>code_label</code> insn represents a label that a jump insn can jump
+to. It contains two special fields of data in addition to the three
+standard ones. <code>CODE_LABEL_NUMBER</code> is used to hold the <em>label
+number</em>, a number that identifies this label uniquely among all the
+labels in the compilation (not just in the current function).
+Ultimately, the label is represented in the assembler output as an
+assembler label, usually of the form &lsquo;<samp>L<var>n</var></samp>&rsquo; where <var>n</var> is
+the label number.
+</p>
+<p>When a <code>code_label</code> appears in an RTL expression, it normally
+appears within a <code>label_ref</code> which represents the address of
+the label, as a number.
+</p>
+<p>Besides as a <code>code_label</code>, a label can also be represented as a
+<code>note</code> of type <code>NOTE_INSN_DELETED_LABEL</code>.
+</p>
+<a name="index-LABEL_005fNUSES"></a>
+<p>The field <code>LABEL_NUSES</code> is only defined once the jump optimization
+phase is completed. It contains the number of times this label is
+referenced in the current function.
+</p>
+<a name="index-LABEL_005fKIND"></a>
+<a name="index-SET_005fLABEL_005fKIND"></a>
+<a name="index-LABEL_005fALT_005fENTRY_005fP"></a>
+<a name="index-alternate-entry-points"></a>
+<p>The field <code>LABEL_KIND</code> differentiates four different types of
+labels: <code>LABEL_NORMAL</code>, <code>LABEL_STATIC_ENTRY</code>,
+<code>LABEL_GLOBAL_ENTRY</code>, and <code>LABEL_WEAK_ENTRY</code>. The only labels
+that do not have type <code>LABEL_NORMAL</code> are <em>alternate entry
+points</em> to the current function. These may be static (visible only in
+the containing translation unit), global (exposed to all translation
+units), or weak (global, but can be overridden by another symbol with the
+same name).
+</p>
+<p>Much of the compiler treats all four kinds of label identically. Some
+of it needs to know whether or not a label is an alternate entry point;
+for this purpose, the macro <code>LABEL_ALT_ENTRY_P</code> is provided. It is
+equivalent to testing whether &lsquo;<samp>LABEL_KIND (label) == LABEL_NORMAL</samp>&rsquo;.
+The only place that cares about the distinction between static, global,
+and weak alternate entry points, besides the front-end code that creates
+them, is the function <code>output_alternate_entry_point</code>, in
+<samp>final.cc</samp>.
+</p>
+<p>To set the kind of a label, use the <code>SET_LABEL_KIND</code> macro.
+</p>
+<a name="index-jump_005ftable_005fdata"></a>
+</dd>
+<dt><code>jump_table_data</code></dt>
+<dd><p>A <code>jump_table_data</code> insn is a placeholder for the jump-table data
+of a <code>casesi</code> or <code>tablejump</code> insn. They are placed after
+a <code>tablejump_p</code> insn. A <code>jump_table_data</code> insn is not part o
+a basic blockm but it is associated with the basic block that ends with
+the <code>tablejump_p</code> insn. The <code>PATTERN</code> of a <code>jump_table_data</code>
+is always either an <code>addr_vec</code> or an <code>addr_diff_vec</code>, and a
+<code>jump_table_data</code> insn is always preceded by a <code>code_label</code>.
+The <code>tablejump_p</code> insn refers to that <code>code_label</code> via its
+<code>JUMP_LABEL</code>.
+</p>
+<a name="index-barrier"></a>
+</dd>
+<dt><code>barrier</code></dt>
+<dd><p>Barriers are placed in the instruction stream when control cannot flow
+past them. They are placed after unconditional jump instructions to
+indicate that the jumps are unconditional and after calls to
+<code>volatile</code> functions, which do not return (e.g., <code>exit</code>).
+They contain no information beyond the three standard fields.
+</p>
+<a name="index-note"></a>
+<a name="index-NOTE_005fLINE_005fNUMBER"></a>
+<a name="index-NOTE_005fSOURCE_005fFILE"></a>
+</dd>
+<dt><code>note</code></dt>
+<dd><p><code>note</code> insns are used to represent additional debugging and
+declarative information. They contain two nonstandard fields, an
+integer which is accessed with the macro <code>NOTE_LINE_NUMBER</code> and a
+string accessed with <code>NOTE_SOURCE_FILE</code>.
+</p>
+<p>If <code>NOTE_LINE_NUMBER</code> is positive, the note represents the
+position of a source line and <code>NOTE_SOURCE_FILE</code> is the source file name
+that the line came from. These notes control generation of line
+number data in the assembler output.
+</p>
+<p>Otherwise, <code>NOTE_LINE_NUMBER</code> is not really a line number but a
+code with one of the following values (and <code>NOTE_SOURCE_FILE</code>
+must contain a null pointer):
+</p>
+<dl compact="compact">
+<dd><a name="index-NOTE_005fINSN_005fDELETED"></a>
+</dd>
+<dt><code>NOTE_INSN_DELETED</code></dt>
+<dd><p>Such a note is completely ignorable. Some passes of the compiler
+delete insns by altering them into notes of this kind.
+</p>
+<a name="index-NOTE_005fINSN_005fDELETED_005fLABEL"></a>
+</dd>
+<dt><code>NOTE_INSN_DELETED_LABEL</code></dt>
+<dd><p>This marks what used to be a <code>code_label</code>, but was not used for other
+purposes than taking its address and was transformed to mark that no
+code jumps to it.
+</p>
+<a name="index-NOTE_005fINSN_005fBLOCK_005fBEG"></a>
+<a name="index-NOTE_005fINSN_005fBLOCK_005fEND"></a>
+</dd>
+<dt><code>NOTE_INSN_BLOCK_BEG</code></dt>
+<dt><code>NOTE_INSN_BLOCK_END</code></dt>
+<dd><p>These types of notes indicate the position of the beginning and end
+of a level of scoping of variable names. They control the output
+of debugging information.
+</p>
+<a name="index-NOTE_005fINSN_005fEH_005fREGION_005fBEG"></a>
+<a name="index-NOTE_005fINSN_005fEH_005fREGION_005fEND"></a>
+</dd>
+<dt><code>NOTE_INSN_EH_REGION_BEG</code></dt>
+<dt><code>NOTE_INSN_EH_REGION_END</code></dt>
+<dd><p>These types of notes indicate the position of the beginning and end of a
+level of scoping for exception handling. <code>NOTE_EH_HANDLER</code>
+identifies which region is associated with these notes.
+</p>
+<a name="index-NOTE_005fINSN_005fFUNCTION_005fBEG"></a>
+</dd>
+<dt><code>NOTE_INSN_FUNCTION_BEG</code></dt>
+<dd><p>Appears at the start of the function body, after the function
+prologue.
+</p>
+<a name="index-NOTE_005fINSN_005fVAR_005fLOCATION"></a>
+<a name="index-NOTE_005fVAR_005fLOCATION"></a>
+</dd>
+<dt><code>NOTE_INSN_VAR_LOCATION</code></dt>
+<dd><p>This note is used to generate variable location debugging information.
+It indicates that the user variable in its <code>VAR_LOCATION</code> operand
+is at the location given in the RTL expression, or holds a value that
+can be computed by evaluating the RTL expression from that static
+point in the program up to the next such note for the same user
+variable.
+</p>
+<a name="index-NOTE_005fINSN_005fBEGIN_005fSTMT"></a>
+</dd>
+<dt><code>NOTE_INSN_BEGIN_STMT</code></dt>
+<dd><p>This note is used to generate <code>is_stmt</code> markers in line number
+debugging information. It indicates the beginning of a user
+statement.
+</p>
+<a name="index-NOTE_005fINSN_005fINLINE_005fENTRY"></a>
+</dd>
+<dt><code>NOTE_INSN_INLINE_ENTRY</code></dt>
+<dd><p>This note is used to generate <code>entry_pc</code> for inlined subroutines in
+debugging information. It indicates an inspection point at which all
+arguments for the inlined function have been bound, and before its first
+statement.
+</p>
+</dd>
+</dl>
+
+<p>These codes are printed symbolically when they appear in debugging dumps.
+</p>
+<a name="index-debug_005finsn"></a>
+<a name="index-INSN_005fVAR_005fLOCATION"></a>
+</dd>
+<dt><code>debug_insn</code></dt>
+<dd><p>The expression code <code>debug_insn</code> is used for pseudo-instructions
+that hold debugging information for variable tracking at assignments
+(see <samp>-fvar-tracking-assignments</samp> option). They are the RTL
+representation of <code>GIMPLE_DEBUG</code> statements
+(<a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG"><code>GIMPLE_DEBUG</code></a>), with a <code>VAR_LOCATION</code> operand that
+binds a user variable tree to an RTL representation of the
+<code>value</code> in the corresponding statement. A <code>DEBUG_EXPR</code> in
+it stands for the value bound to the corresponding
+<code>DEBUG_EXPR_DECL</code>.
+</p>
+<p><code>GIMPLE_DEBUG_BEGIN_STMT</code> and <code>GIMPLE_DEBUG_INLINE_ENTRY</code> are
+expanded to RTL as a <code>DEBUG_INSN</code> with a <code>DEBUG_MARKER</code>
+<code>PATTERN</code>; the difference is the RTL mode: the former&rsquo;s
+<code>DEBUG_MARKER</code> is <code>VOIDmode</code>, whereas the latter is
+<code>BLKmode</code>; information about the inlined function can be taken from
+the lexical block encoded in the <code>INSN_LOCATION</code>. These
+<code>DEBUG_INSN</code>s, that do not carry <code>VAR_LOCATION</code> information,
+just <code>DEBUG_MARKER</code>s, can be detected by testing
+<code>DEBUG_MARKER_INSN_P</code>, whereas those that do can be recognized as
+<code>DEBUG_BIND_INSN_P</code>.
+</p>
+<p>Throughout optimization passes, <code>DEBUG_INSN</code>s are not reordered
+with respect to each other, particularly during scheduling. Binding
+information is kept in pseudo-instruction form, so that, unlike notes,
+it gets the same treatment and adjustments that regular instructions
+would. It is the variable tracking pass that turns these
+pseudo-instructions into <code>NOTE_INSN_VAR_LOCATION</code>,
+<code>NOTE_INSN_BEGIN_STMT</code> and <code>NOTE_INSN_INLINE_ENTRY</code> notes,
+analyzing control flow, value equivalences and changes to registers and
+memory referenced in value expressions, propagating the values of debug
+temporaries and determining expressions that can be used to compute the
+value of each user variable at as many points (ranges, actually) in the
+program as possible.
+</p>
+<p>Unlike <code>NOTE_INSN_VAR_LOCATION</code>, the value expression in an
+<code>INSN_VAR_LOCATION</code> denotes a value at that specific point in the
+program, rather than an expression that can be evaluated at any later
+point before an overriding <code>VAR_LOCATION</code> is encountered. E.g.,
+if a user variable is bound to a <code>REG</code> and then a subsequent insn
+modifies the <code>REG</code>, the note location would keep mapping the user
+variable to the register across the insn, whereas the insn location
+would keep the variable bound to the value, so that the variable
+tracking pass would emit another location note for the variable at the
+point in which the register is modified.
+</p>
+</dd>
+</dl>
+
+<a name="index-TImode_002c-in-insn"></a>
+<a name="index-HImode_002c-in-insn"></a>
+<a name="index-QImode_002c-in-insn"></a>
+<p>The machine mode of an insn is normally <code>VOIDmode</code>, but some
+phases use the mode for various purposes.
+</p>
+<p>The common subexpression elimination pass sets the mode of an insn to
+<code>QImode</code> when it is the first insn in a block that has already
+been processed.
+</p>
+<p>The second Haifa scheduling pass, for targets that can multiple issue,
+sets the mode of an insn to <code>TImode</code> when it is believed that the
+instruction begins an issue group. That is, when the instruction
+cannot issue simultaneously with the previous. This may be relied on
+by later passes, in particular machine-dependent reorg.
+</p>
+<p>Here is a table of the extra fields of <code>insn</code>, <code>jump_insn</code>
+and <code>call_insn</code> insns:
+</p>
+<dl compact="compact">
+<dd><a name="index-PATTERN"></a>
+</dd>
+<dt><code>PATTERN (<var>i</var>)</code></dt>
+<dd><p>An expression for the side effect performed by this insn. This must
+be one of the following codes: <code>set</code>, <code>call</code>, <code>use</code>,
+<code>clobber</code>, <code>return</code>, <code>simple_return</code>, <code>asm_input</code>,
+<code>asm_output</code>, <code>addr_vec</code>, <code>addr_diff_vec</code>,
+<code>trap_if</code>, <code>unspec</code>, <code>unspec_volatile</code>,
+<code>parallel</code>, <code>cond_exec</code>, or <code>sequence</code>. If it is a
+<code>parallel</code>, each element of the <code>parallel</code> must be one these
+codes, except that <code>parallel</code> expressions cannot be nested and
+<code>addr_vec</code> and <code>addr_diff_vec</code> are not permitted inside a
+<code>parallel</code> expression.
+</p>
+<a name="index-INSN_005fCODE"></a>
+</dd>
+<dt><code>INSN_CODE (<var>i</var>)</code></dt>
+<dd><p>An integer that says which pattern in the machine description matches
+this insn, or -1 if the matching has not yet been attempted.
+</p>
+<p>Such matching is never attempted and this field remains -1 on an insn
+whose pattern consists of a single <code>use</code>, <code>clobber</code>,
+<code>asm_input</code>, <code>addr_vec</code> or <code>addr_diff_vec</code> expression.
+</p>
+<a name="index-asm_005fnoperands"></a>
+<p>Matching is also never attempted on insns that result from an <code>asm</code>
+statement. These contain at least one <code>asm_operands</code> expression.
+The function <code>asm_noperands</code> returns a non-negative value for
+such insns.
+</p>
+<p>In the debugging output, this field is printed as a number followed by
+a symbolic representation that locates the pattern in the <samp>md</samp>
+file as some small positive or negative offset from a named pattern.
+</p>
+<a name="index-REG_005fNOTES"></a>
+</dd>
+<dt><code>REG_NOTES (<var>i</var>)</code></dt>
+<dd><p>A list (chain of <code>expr_list</code>, <code>insn_list</code> and <code>int_list</code>
+expressions) giving miscellaneous information about the insn. It is often
+information pertaining to the registers used in this insn.
+</p></dd>
+</dl>
+
+<p>The <code>REG_NOTES</code> field of an insn is a chain that includes
+<code>expr_list</code> and <code>int_list</code> expressions as well as <code>insn_list</code>
+expressions. There are several
+kinds of register notes, which are distinguished by the machine mode, which
+in a register note is really understood as being an <code>enum reg_note</code>.
+The first operand <var>op</var> of the note is data whose meaning depends on
+the kind of note.
+</p>
+<a name="index-REG_005fNOTE_005fKIND"></a>
+<a name="index-PUT_005fREG_005fNOTE_005fKIND"></a>
+<p>The macro <code>REG_NOTE_KIND (<var>x</var>)</code> returns the kind of
+register note. Its counterpart, the macro <code>PUT_REG_NOTE_KIND
+(<var>x</var>, <var>newkind</var>)</code> sets the register note type of <var>x</var> to be
+<var>newkind</var>.
+</p>
+<p>Register notes are of three classes: They may say something about an
+input to an insn, they may say something about an output of an insn, or
+they may create a linkage between two insns.
+</p>
+<p>These register notes annotate inputs to an insn:
+</p>
+<dl compact="compact">
+<dd><a name="index-REG_005fDEAD"></a>
+</dd>
+<dt><code>REG_DEAD</code></dt>
+<dd><p>The value in <var>op</var> dies in this insn; that is to say, altering the
+value immediately after this insn would not affect the future behavior
+of the program.
+</p>
+<p>It does not follow that the register <var>op</var> has no useful value after
+this insn since <var>op</var> is not necessarily modified by this insn.
+Rather, no subsequent instruction uses the contents of <var>op</var>.
+</p>
+<a name="index-REG_005fUNUSED"></a>
+</dd>
+<dt><code>REG_UNUSED</code></dt>
+<dd><p>The register <var>op</var> being set by this insn will not be used in a
+subsequent insn. This differs from a <code>REG_DEAD</code> note, which
+indicates that the value in an input will not be used subsequently.
+These two notes are independent; both may be present for the same
+register.
+</p>
+<a name="index-REG_005fINC"></a>
+</dd>
+<dt><code>REG_INC</code></dt>
+<dd><p>The register <var>op</var> is incremented (or decremented; at this level
+there is no distinction) by an embedded side effect inside this insn.
+This means it appears in a <code>post_inc</code>, <code>pre_inc</code>,
+<code>post_dec</code> or <code>pre_dec</code> expression.
+</p>
+<a name="index-REG_005fNONNEG"></a>
+</dd>
+<dt><code>REG_NONNEG</code></dt>
+<dd><p>The register <var>op</var> is known to have a nonnegative value when this
+insn is reached. This is used by special looping instructions
+that terminate when the register goes negative.
+</p>
+<p>The <code>REG_NONNEG</code> note is added only to &lsquo;<samp>doloop_end</samp>&rsquo;
+insns, if its pattern uses a <code>ge</code> condition.
+</p>
+<a name="index-REG_005fLABEL_005fOPERAND"></a>
+</dd>
+<dt><code>REG_LABEL_OPERAND</code></dt>
+<dd><p>This insn uses <var>op</var>, a <code>code_label</code> or a <code>note</code> of type
+<code>NOTE_INSN_DELETED_LABEL</code>, but is not a <code>jump_insn</code>, or it
+is a <code>jump_insn</code> that refers to the operand as an ordinary
+operand. The label may still eventually be a jump target, but if so
+in an indirect jump in a subsequent insn. The presence of this note
+allows jump optimization to be aware that <var>op</var> is, in fact, being
+used, and flow optimization to build an accurate flow graph.
+</p>
+<a name="index-REG_005fLABEL_005fTARGET"></a>
+</dd>
+<dt><code>REG_LABEL_TARGET</code></dt>
+<dd><p>This insn is a <code>jump_insn</code> but not an <code>addr_vec</code> or
+<code>addr_diff_vec</code>. It uses <var>op</var>, a <code>code_label</code> as a
+direct or indirect jump target. Its purpose is similar to that of
+<code>REG_LABEL_OPERAND</code>. This note is only present if the insn has
+multiple targets; the last label in the insn (in the highest numbered
+insn-field) goes into the <code>JUMP_LABEL</code> field and does not have a
+<code>REG_LABEL_TARGET</code> note. See <a href="#Insns">JUMP_LABEL</a>.
+</p>
+<a name="index-REG_005fSETJMP"></a>
+</dd>
+<dt><code>REG_SETJMP</code></dt>
+<dd><p>Appears attached to each <code>CALL_INSN</code> to <code>setjmp</code> or a
+related function.
+</p></dd>
+</dl>
+
+<p>The following notes describe attributes of outputs of an insn:
+</p>
+<dl compact="compact">
+<dd><a name="index-REG_005fEQUIV"></a>
+<a name="index-REG_005fEQUAL"></a>
+</dd>
+<dt><code>REG_EQUIV</code></dt>
+<dt><code>REG_EQUAL</code></dt>
+<dd><p>This note is only valid on an insn that sets only one register and
+indicates that that register will be equal to <var>op</var> at run time; the
+scope of this equivalence differs between the two types of notes. The
+value which the insn explicitly copies into the register may look
+different from <var>op</var>, but they will be equal at run time. If the
+output of the single <code>set</code> is a <code>strict_low_part</code> or
+<code>zero_extract</code> expression, the note refers to the register that
+is contained in its first operand.
+</p>
+<p>For <code>REG_EQUIV</code>, the register is equivalent to <var>op</var> throughout
+the entire function, and could validly be replaced in all its
+occurrences by <var>op</var>. (&ldquo;Validly&rdquo; here refers to the data flow of
+the program; simple replacement may make some insns invalid.) For
+example, when a constant is loaded into a register that is never
+assigned any other value, this kind of note is used.
+</p>
+<p>When a parameter is copied into a pseudo-register at entry to a function,
+a note of this kind records that the register is equivalent to the stack
+slot where the parameter was passed. Although in this case the register
+may be set by other insns, it is still valid to replace the register
+by the stack slot throughout the function.
+</p>
+<p>A <code>REG_EQUIV</code> note is also used on an instruction which copies a
+register parameter into a pseudo-register at entry to a function, if
+there is a stack slot where that parameter could be stored. Although
+other insns may set the pseudo-register, it is valid for the compiler to
+replace the pseudo-register by stack slot throughout the function,
+provided the compiler ensures that the stack slot is properly
+initialized by making the replacement in the initial copy instruction as
+well. This is used on machines for which the calling convention
+allocates stack space for register parameters. See
+<code>REG_PARM_STACK_SPACE</code> in <a href="Stack-Arguments.html#Stack-Arguments">Stack Arguments</a>.
+</p>
+<p>In the case of <code>REG_EQUAL</code>, the register that is set by this insn
+will be equal to <var>op</var> at run time at the end of this insn but not
+necessarily elsewhere in the function. In this case, <var>op</var>
+is typically an arithmetic expression. For example, when a sequence of
+insns such as a library call is used to perform an arithmetic operation,
+this kind of note is attached to the insn that produces or copies the
+final value.
+</p>
+<p>These two notes are used in different ways by the compiler passes.
+<code>REG_EQUAL</code> is used by passes prior to register allocation (such as
+common subexpression elimination and loop optimization) to tell them how
+to think of that value. <code>REG_EQUIV</code> notes are used by register
+allocation to indicate that there is an available substitute expression
+(either a constant or a <code>mem</code> expression for the location of a
+parameter on the stack) that may be used in place of a register if
+insufficient registers are available.
+</p>
+<p>Except for stack homes for parameters, which are indicated by a
+<code>REG_EQUIV</code> note and are not useful to the early optimization
+passes and pseudo registers that are equivalent to a memory location
+throughout their entire life, which is not detected until later in
+the compilation, all equivalences are initially indicated by an attached
+<code>REG_EQUAL</code> note. In the early stages of register allocation, a
+<code>REG_EQUAL</code> note is changed into a <code>REG_EQUIV</code> note if
+<var>op</var> is a constant and the insn represents the only set of its
+destination register.
+</p>
+<p>Thus, compiler passes prior to register allocation need only check for
+<code>REG_EQUAL</code> notes and passes subsequent to register allocation
+need only check for <code>REG_EQUIV</code> notes.
+</p></dd>
+</dl>
+
+<p>These notes describe linkages between insns. They occur in pairs: one
+insn has one of a pair of notes that points to a second insn, which has
+the inverse note pointing back to the first insn.
+</p>
+<dl compact="compact">
+<dd><a name="index-REG_005fDEP_005fTRUE"></a>
+</dd>
+<dt><code>REG_DEP_TRUE</code></dt>
+<dd><p>This indicates a true dependence (a read after write dependence).
+</p>
+<a name="index-REG_005fDEP_005fOUTPUT"></a>
+</dd>
+<dt><code>REG_DEP_OUTPUT</code></dt>
+<dd><p>This indicates an output dependence (a write after write dependence).
+</p>
+<a name="index-REG_005fDEP_005fANTI"></a>
+</dd>
+<dt><code>REG_DEP_ANTI</code></dt>
+<dd><p>This indicates an anti dependence (a write after read dependence).
+</p>
+</dd>
+</dl>
+
+<p>These notes describe information gathered from gcov profile data. They
+are stored in the <code>REG_NOTES</code> field of an insn.
+</p>
+<dl compact="compact">
+<dd><a name="index-REG_005fBR_005fPROB"></a>
+</dd>
+<dt><code>REG_BR_PROB</code></dt>
+<dd><p>This is used to specify the ratio of branches to non-branches of a
+branch insn according to the profile data. The note is represented
+as an <code>int_list</code> expression whose integer value is an encoding
+of <code>profile_probability</code> type. <code>profile_probability</code> provide
+member function <code>from_reg_br_prob_note</code> and <code>to_reg_br_prob_note</code>
+to extract and store the probability into the RTL encoding.
+</p>
+<a name="index-REG_005fBR_005fPRED"></a>
+</dd>
+<dt><code>REG_BR_PRED</code></dt>
+<dd><p>These notes are found in JUMP insns after delayed branch scheduling
+has taken place. They indicate both the direction and the likelihood
+of the JUMP. The format is a bitmask of ATTR_FLAG_* values.
+</p>
+<a name="index-REG_005fFRAME_005fRELATED_005fEXPR"></a>
+</dd>
+<dt><code>REG_FRAME_RELATED_EXPR</code></dt>
+<dd><p>This is used on an RTX_FRAME_RELATED_P insn wherein the attached expression
+is used in place of the actual insn pattern. This is done in cases where
+the pattern is either complex or misleading.
+</p></dd>
+</dl>
+
+<p>The note <code>REG_CALL_NOCF_CHECK</code> is used in conjunction with the
+<samp>-fcf-protection=branch</samp> option. The note is set if a
+<code>nocf_check</code> attribute is specified for a function type or a
+pointer to function type. The note is stored in the <code>REG_NOTES</code>
+field of an insn.
+</p>
+<dl compact="compact">
+<dd><a name="index-REG_005fCALL_005fNOCF_005fCHECK"></a>
+</dd>
+<dt><code>REG_CALL_NOCF_CHECK</code></dt>
+<dd><p>Users have control through the <code>nocf_check</code> attribute to identify
+which calls to a function should be skipped from control-flow instrumentation
+when the option <samp>-fcf-protection=branch</samp> is specified. The compiler
+puts a <code>REG_CALL_NOCF_CHECK</code> note on each <code>CALL_INSN</code> instruction
+that has a function type marked with a <code>nocf_check</code> attribute.
+</p></dd>
+</dl>
+
+<p>For convenience, the machine mode in an <code>insn_list</code> or
+<code>expr_list</code> is printed using these symbolic codes in debugging dumps.
+</p>
+<a name="index-insn_005flist"></a>
+<a name="index-expr_005flist"></a>
+<p>The only difference between the expression codes <code>insn_list</code> and
+<code>expr_list</code> is that the first operand of an <code>insn_list</code> is
+assumed to be an insn and is printed in debugging dumps as the insn&rsquo;s
+unique id; the first operand of an <code>expr_list</code> is printed in the
+ordinary way as an expression.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Calls.html#Calls" accesskey="n" rel="next">Calls</a>, Previous: <a href="Debug-Information.html#Debug-Information" accesskey="p" rel="previous">Debug Information</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Instruction-Output.html b/share/doc/gccint/Instruction-Output.html
new file mode 100644
index 0000000..cc1b511
--- /dev/null
+++ b/share/doc/gccint/Instruction-Output.html
@@ -0,0 +1,334 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Instruction Output</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Instruction Output">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Instruction Output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Dispatch-Tables.html#Dispatch-Tables" rel="next" title="Dispatch Tables">
+<link href="Macros-for-Initialization.html#Macros-for-Initialization" rel="previous" title="Macros for Initialization">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Instruction-Output"></a>
+<div class="header">
+<p>
+Next: <a href="Dispatch-Tables.html#Dispatch-Tables" accesskey="n" rel="next">Dispatch Tables</a>, Previous: <a href="Macros-for-Initialization.html#Macros-for-Initialization" accesskey="p" rel="previous">Macros for Initialization</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-of-Assembler-Instructions"></a>
+<h4 class="subsection">18.20.7 Output of Assembler Instructions</h4>
+
+<p>This describes assembler instruction output.
+</p>
+<dl>
+<dt><a name="index-REGISTER_005fNAMES"></a>Macro: <strong>REGISTER_NAMES</strong></dt>
+<dd><p>A C initializer containing the assembler&rsquo;s names for the machine
+registers, each one as a C string constant. This is what translates
+register numbers in the compiler into assembler language.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ADDITIONAL_005fREGISTER_005fNAMES"></a>Macro: <strong>ADDITIONAL_REGISTER_NAMES</strong></dt>
+<dd><p>If defined, a C initializer for an array of structures containing a name
+and a register number. This macro defines additional names for hard
+registers, thus allowing the <code>asm</code> option in declarations to refer
+to registers using alternate names.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OVERLAPPING_005fREGISTER_005fNAMES"></a>Macro: <strong>OVERLAPPING_REGISTER_NAMES</strong></dt>
+<dd><p>If defined, a C initializer for an array of structures containing a
+name, a register number and a count of the number of consecutive
+machine registers the name overlaps. This macro defines additional
+names for hard registers, thus allowing the <code>asm</code> option in
+declarations to refer to registers using alternate names. Unlike
+<code>ADDITIONAL_REGISTER_NAMES</code>, this macro should be used when the
+register name implies multiple underlying registers.
+</p>
+<p>This macro should be used when it is important that a clobber in an
+<code>asm</code> statement clobbers all the underlying values implied by the
+register name. For example, on ARM, clobbering the double-precision
+VFP register &ldquo;d0&rdquo; implies clobbering both single-precision registers
+&ldquo;s0&rdquo; and &ldquo;s1&rdquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fOPCODE"></a>Macro: <strong>ASM_OUTPUT_OPCODE</strong> <em>(<var>stream</var>, <var>ptr</var>)</em></dt>
+<dd><p>Define this macro if you are using an unusual assembler that
+requires different names for the machine instructions.
+</p>
+<p>The definition is a C statement or statements which output an
+assembler instruction opcode to the stdio stream <var>stream</var>. The
+macro-operand <var>ptr</var> is a variable of type <code>char *</code> which
+points to the opcode name in its &ldquo;internal&rdquo; form&mdash;the form that is
+written in the machine description. The definition should output the
+opcode name to <var>stream</var>, performing any translation you desire, and
+increment the variable <var>ptr</var> to point at the end of the opcode
+so that it will not be output twice.
+</p>
+<p>In fact, your macro definition may process less than the entire opcode
+name, or more than the opcode name; but if you want to process text
+that includes &lsquo;<samp>%</samp>&rsquo;-sequences to substitute operands, you must take
+care of the substitution yourself. Just be sure to increment
+<var>ptr</var> over whatever text should not be output normally.
+</p>
+<a name="index-recog_005fdata_002eoperand"></a>
+<p>If you need to look at the operand values, they can be found as the
+elements of <code>recog_data.operand</code>.
+</p>
+<p>If the macro definition does nothing, the instruction is output
+in the usual way.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FINAL_005fPRESCAN_005fINSN"></a>Macro: <strong>FINAL_PRESCAN_INSN</strong> <em>(<var>insn</var>, <var>opvec</var>, <var>noperands</var>)</em></dt>
+<dd><p>If defined, a C statement to be executed just prior to the output of
+assembler code for <var>insn</var>, to modify the extracted operands so
+they will be output differently.
+</p>
+<p>Here the argument <var>opvec</var> is the vector containing the operands
+extracted from <var>insn</var>, and <var>noperands</var> is the number of
+elements of the vector which contain meaningful data for this insn.
+The contents of this vector are what will be used to convert the insn
+template into assembler code, so you can change the assembler output
+by changing the contents of the vector.
+</p>
+<p>This macro is useful when various assembler syntaxes share a single
+file of instruction patterns; by defining this macro differently, you
+can cause a large class of instructions to be output differently (such
+as with rearranged operands). Naturally, variations in assembler
+syntax affecting individual insn patterns ought to be handled by
+writing conditional output routines in those patterns.
+</p>
+<p>If this macro is not defined, it is equivalent to a null statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFINAL_005fPOSTSCAN_005fINSN"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_FINAL_POSTSCAN_INSN</strong> <em>(FILE *<var>file</var>, rtx_insn *<var>insn</var>, rtx *<var>opvec</var>, int <var>noperands</var>)</em></dt>
+<dd><p>If defined, this target hook is a function which is executed just after the
+output of assembler code for <var>insn</var>, to change the mode of the assembler
+if necessary.
+</p>
+<p>Here the argument <var>opvec</var> is the vector containing the operands
+extracted from <var>insn</var>, and <var>noperands</var> is the number of
+elements of the vector which contain meaningful data for this insn.
+The contents of this vector are what was used to convert the insn
+template into assembler code, so you can change the assembler mode
+by checking the contents of the vector.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PRINT_005fOPERAND"></a>Macro: <strong>PRINT_OPERAND</strong> <em>(<var>stream</var>, <var>x</var>, <var>code</var>)</em></dt>
+<dd><p>A C compound statement to output to stdio stream <var>stream</var> the
+assembler syntax for an instruction operand <var>x</var>. <var>x</var> is an
+RTL expression.
+</p>
+<p><var>code</var> is a value that can be used to specify one of several ways
+of printing the operand. It is used when identical operands must be
+printed differently depending on the context. <var>code</var> comes from
+the &lsquo;<samp>%</samp>&rsquo; specification that was used to request printing of the
+operand. If the specification was just &lsquo;<samp>%<var>digit</var></samp>&rsquo; then
+<var>code</var> is 0; if the specification was &lsquo;<samp>%<var>ltr</var>
+<var>digit</var></samp>&rsquo; then <var>code</var> is the ASCII code for <var>ltr</var>.
+</p>
+<a name="index-reg_005fnames-1"></a>
+<p>If <var>x</var> is a register, this macro should print the register&rsquo;s name.
+The names can be found in an array <code>reg_names</code> whose type is
+<code>char *[]</code>. <code>reg_names</code> is initialized from
+<code>REGISTER_NAMES</code>.
+</p>
+<p>When the machine description has a specification &lsquo;<samp>%<var>punct</var></samp>&rsquo;
+(a &lsquo;<samp>%</samp>&rsquo; followed by a punctuation character), this macro is called
+with a null pointer for <var>x</var> and the punctuation character for
+<var>code</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PRINT_005fOPERAND_005fPUNCT_005fVALID_005fP"></a>Macro: <strong>PRINT_OPERAND_PUNCT_VALID_P</strong> <em>(<var>code</var>)</em></dt>
+<dd><p>A C expression which evaluates to true if <var>code</var> is a valid
+punctuation character for use in the <code>PRINT_OPERAND</code> macro. If
+<code>PRINT_OPERAND_PUNCT_VALID_P</code> is not defined, it means that no
+punctuation characters (except for the standard one, &lsquo;<samp>%</samp>&rsquo;) are used
+in this way.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PRINT_005fOPERAND_005fADDRESS"></a>Macro: <strong>PRINT_OPERAND_ADDRESS</strong> <em>(<var>stream</var>, <var>x</var>)</em></dt>
+<dd><p>A C compound statement to output to stdio stream <var>stream</var> the
+assembler syntax for an instruction operand that is a memory reference
+whose address is <var>x</var>. <var>x</var> is an RTL expression.
+</p>
+<a name="index-TARGET_005fENCODE_005fSECTION_005fINFO-usage"></a>
+<p>On some machines, the syntax for a symbolic address depends on the
+section that the address refers to. On these machines, define the hook
+<code>TARGET_ENCODE_SECTION_INFO</code> to store the information into the
+<code>symbol_ref</code>, and then check for it here. See <a href="Assembler-Format.html#Assembler-Format">Assembler Format</a>.
+</p></dd></dl>
+
+<a name="index-dbr_005fsequence_005flength"></a>
+<dl>
+<dt><a name="index-DBR_005fOUTPUT_005fSEQEND"></a>Macro: <strong>DBR_OUTPUT_SEQEND</strong> <em>(<var>file</var>)</em></dt>
+<dd><p>A C statement, to be executed after all slot-filler instructions have
+been output. If necessary, call <code>dbr_sequence_length</code> to
+determine the number of slots filled in a sequence (zero if not
+currently outputting a sequence), to decide how many no-ops to output,
+or whatever.
+</p>
+<p>Don&rsquo;t define this macro if it has nothing to do, but it is helpful in
+reading assembly output if the extent of the delay sequence is made
+explicit (e.g. with white space).
+</p></dd></dl>
+
+<a name="index-final_005fsequence"></a>
+<p>Note that output routines for instructions with delay slots must be
+prepared to deal with not being output as part of a sequence
+(i.e. when the scheduling pass is not run, or when no slot fillers could be
+found.) The variable <code>final_sequence</code> is null when not
+processing a sequence, otherwise it contains the <code>sequence</code> rtx
+being output.
+</p>
+<a name="index-asm_005ffprintf"></a>
+<dl>
+<dt><a name="index-REGISTER_005fPREFIX"></a>Macro: <strong>REGISTER_PREFIX</strong></dt>
+<dt><a name="index-LOCAL_005fLABEL_005fPREFIX"></a>Macro: <strong>LOCAL_LABEL_PREFIX</strong></dt>
+<dt><a name="index-USER_005fLABEL_005fPREFIX"></a>Macro: <strong>USER_LABEL_PREFIX</strong></dt>
+<dt><a name="index-IMMEDIATE_005fPREFIX"></a>Macro: <strong>IMMEDIATE_PREFIX</strong></dt>
+<dd><p>If defined, C string expressions to be used for the &lsquo;<samp>%R</samp>&rsquo;, &lsquo;<samp>%L</samp>&rsquo;,
+&lsquo;<samp>%U</samp>&rsquo;, and &lsquo;<samp>%I</samp>&rsquo; options of <code>asm_fprintf</code> (see
+<samp>final.cc</samp>). These are useful when a single <samp>md</samp> file must
+support multiple assembler formats. In that case, the various <samp>tm.h</samp>
+files can define these macros differently.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fFPRINTF_005fEXTENSIONS"></a>Macro: <strong>ASM_FPRINTF_EXTENSIONS</strong> <em>(<var>file</var>, <var>argptr</var>, <var>format</var>)</em></dt>
+<dd><p>If defined this macro should expand to a series of <code>case</code>
+statements which will be parsed inside the <code>switch</code> statement of
+the <code>asm_fprintf</code> function. This allows targets to define extra
+printf formats which may useful when generating their assembler
+statements. Note that uppercase letters are reserved for future
+generic extensions to asm_fprintf, and so are not available to target
+specific code. The output file is given by the parameter <var>file</var>.
+The varargs input pointer is <var>argptr</var> and the rest of the format
+string, starting the character after the one that is being switched
+upon, is pointed to by <var>format</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASSEMBLER_005fDIALECT"></a>Macro: <strong>ASSEMBLER_DIALECT</strong></dt>
+<dd><p>If your target supports multiple dialects of assembler language (such as
+different opcodes), define this macro as a C expression that gives the
+numeric index of the assembler language dialect to use, with zero as the
+first variant.
+</p>
+<p>If this macro is defined, you may use constructs of the form
+</p><div class="smallexample">
+<pre class="smallexample">&lsquo;<samp>{option0|option1|option2&hellip;}</samp>&rsquo;
+</pre></div>
+<p>in the output templates of patterns (see <a href="Output-Template.html#Output-Template">Output Template</a>) or in the
+first argument of <code>asm_fprintf</code>. This construct outputs
+&lsquo;<samp>option0</samp>&rsquo;, &lsquo;<samp>option1</samp>&rsquo;, &lsquo;<samp>option2</samp>&rsquo;, etc., if the value of
+<code>ASSEMBLER_DIALECT</code> is zero, one, two, etc. Any special characters
+within these strings retain their usual meaning. If there are fewer
+alternatives within the braces than the value of
+<code>ASSEMBLER_DIALECT</code>, the construct outputs nothing. If it&rsquo;s needed
+to print curly braces or &lsquo;<samp>|</samp>&rsquo; character in assembler output directly,
+&lsquo;<samp>%{</samp>&rsquo;, &lsquo;<samp>%}</samp>&rsquo; and &lsquo;<samp>%|</samp>&rsquo; can be used.
+</p>
+<p>If you do not define this macro, the characters &lsquo;<samp>{</samp>&rsquo;, &lsquo;<samp>|</samp>&rsquo; and
+&lsquo;<samp>}</samp>&rsquo; do not have any special meaning when used in templates or
+operands to <code>asm_fprintf</code>.
+</p>
+<p>Define the macros <code>REGISTER_PREFIX</code>, <code>LOCAL_LABEL_PREFIX</code>,
+<code>USER_LABEL_PREFIX</code> and <code>IMMEDIATE_PREFIX</code> if you can express
+the variations in assembler language syntax with that mechanism. Define
+<code>ASSEMBLER_DIALECT</code> and use the &lsquo;<samp>{option0|option1}</samp>&rsquo; syntax
+if the syntax variant are larger and involve such things as different
+opcodes or operand order.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fREG_005fPUSH"></a>Macro: <strong>ASM_OUTPUT_REG_PUSH</strong> <em>(<var>stream</var>, <var>regno</var>)</em></dt>
+<dd><p>A C expression to output to <var>stream</var> some assembler code
+which will push hard register number <var>regno</var> onto the stack.
+The code need not be optimal, since this macro is used only when
+profiling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fREG_005fPOP"></a>Macro: <strong>ASM_OUTPUT_REG_POP</strong> <em>(<var>stream</var>, <var>regno</var>)</em></dt>
+<dd><p>A C expression to output to <var>stream</var> some assembler code
+which will pop hard register number <var>regno</var> off of the stack.
+The code need not be optimal, since this macro is used only when
+profiling.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Dispatch-Tables.html#Dispatch-Tables" accesskey="n" rel="next">Dispatch Tables</a>, Previous: <a href="Macros-for-Initialization.html#Macros-for-Initialization" accesskey="p" rel="previous">Macros for Initialization</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Int-Iterators.html b/share/doc/gccint/Int-Iterators.html
new file mode 100644
index 0000000..8585acd
--- /dev/null
+++ b/share/doc/gccint/Int-Iterators.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Int Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Int Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Int Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Iterators.html#Iterators" rel="up" title="Iterators">
+<link href="Subst-Iterators.html#Subst-Iterators" rel="next" title="Subst Iterators">
+<link href="Code-Iterators.html#Code-Iterators" rel="previous" title="Code Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Int-Iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Subst-Iterators.html#Subst-Iterators" accesskey="n" rel="next">Subst Iterators</a>, Previous: <a href="Code-Iterators.html#Code-Iterators" accesskey="p" rel="previous">Code Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Int-Iterators-1"></a>
+<h4 class="subsection">17.23.3 Int Iterators</h4>
+<a name="index-int-iterators-in-_002emd-files"></a>
+<a name="index-define_005fint_005fiterator"></a>
+<a name="index-define_005fint_005fattr"></a>
+
+<p>Int iterators operate in a similar way to code iterators. See <a href="Code-Iterators.html#Code-Iterators">Code Iterators</a>.
+</p>
+<p>The construct:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_int_iterator <var>name</var> [(<var>int1</var> &quot;<var>cond1</var>&quot;) &hellip; (<var>intn</var> &quot;<var>condn</var>&quot;)])
+</pre></div>
+
+<p>defines a pseudo integer constant <var>name</var> that can be instantiated as
+<var>inti</var> if condition <var>condi</var> is true. Each <var>int</var> must have the
+same rtx format. See <a href="RTL-Classes.html#RTL-Classes">RTL Classes</a>. Int iterators can appear in only
+those rtx fields that have &rsquo;i&rsquo;, &rsquo;n&rsquo;, &rsquo;w&rsquo;, or &rsquo;p&rsquo; as the specifier. This
+means that each <var>int</var> has to be a constant defined using define_constant
+or define_c_enum.
+</p>
+<p>As with mode and code iterators, each pattern that uses <var>name</var> will be
+expanded <var>n</var> times, once with all uses of <var>name</var> replaced by
+<var>int1</var>, once with all uses replaced by <var>int2</var>, and so on.
+See <a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators">Defining Mode Iterators</a>.
+</p>
+<p>It is possible to define attributes for ints as well as for codes and modes.
+Attributes are defined using:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_int_attr <var>name</var> [(<var>int1</var> &quot;<var>value1</var>&quot;) &hellip; (<var>intn</var> &quot;<var>valuen</var>&quot;)])
+</pre></div>
+
+<p>Here&rsquo;s an example of int iterators in action, taken from the ARM port:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_int_iterator QABSNEG [UNSPEC_VQABS UNSPEC_VQNEG])
+
+(define_int_attr absneg [(UNSPEC_VQABS &quot;abs&quot;) (UNSPEC_VQNEG &quot;neg&quot;)])
+
+(define_insn &quot;neon_vq&lt;absneg&gt;&lt;mode&gt;&quot;
+ [(set (match_operand:VDQIW 0 &quot;s_register_operand&quot; &quot;=w&quot;)
+ (unspec:VDQIW [(match_operand:VDQIW 1 &quot;s_register_operand&quot; &quot;w&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;i&quot;)]
+ QABSNEG))]
+ &quot;TARGET_NEON&quot;
+ &quot;vq&lt;absneg&gt;.&lt;V_s_elem&gt;\t%&lt;V_reg&gt;0, %&lt;V_reg&gt;1&quot;
+ [(set_attr &quot;type&quot; &quot;neon_vqneg_vqabs&quot;)]
+)
+
+</pre></div>
+
+<p>This is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;neon_vqabs&lt;mode&gt;&quot;
+ [(set (match_operand:VDQIW 0 &quot;s_register_operand&quot; &quot;=w&quot;)
+ (unspec:VDQIW [(match_operand:VDQIW 1 &quot;s_register_operand&quot; &quot;w&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;i&quot;)]
+ UNSPEC_VQABS))]
+ &quot;TARGET_NEON&quot;
+ &quot;vqabs.&lt;V_s_elem&gt;\t%&lt;V_reg&gt;0, %&lt;V_reg&gt;1&quot;
+ [(set_attr &quot;type&quot; &quot;neon_vqneg_vqabs&quot;)]
+)
+
+(define_insn &quot;neon_vqneg&lt;mode&gt;&quot;
+ [(set (match_operand:VDQIW 0 &quot;s_register_operand&quot; &quot;=w&quot;)
+ (unspec:VDQIW [(match_operand:VDQIW 1 &quot;s_register_operand&quot; &quot;w&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;i&quot;)]
+ UNSPEC_VQNEG))]
+ &quot;TARGET_NEON&quot;
+ &quot;vqneg.&lt;V_s_elem&gt;\t%&lt;V_reg&gt;0, %&lt;V_reg&gt;1&quot;
+ [(set_attr &quot;type&quot; &quot;neon_vqneg_vqabs&quot;)]
+)
+
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Subst-Iterators.html#Subst-Iterators" accesskey="n" rel="next">Subst Iterators</a>, Previous: <a href="Code-Iterators.html#Code-Iterators" accesskey="p" rel="previous">Code Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Integer-library-routines.html b/share/doc/gccint/Integer-library-routines.html
new file mode 100644
index 0000000..df5736b
--- /dev/null
+++ b/share/doc/gccint/Integer-library-routines.html
@@ -0,0 +1,286 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Integer library routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Integer library routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Integer library routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Soft-float-library-routines.html#Soft-float-library-routines" rel="next" title="Soft float library routines">
+<link href="Libgcc.html#Libgcc" rel="previous" title="Libgcc">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Integer-library-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Soft-float-library-routines.html#Soft-float-library-routines" accesskey="n" rel="next">Soft float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Routines-for-integer-arithmetic"></a>
+<h3 class="section">4.1 Routines for integer arithmetic</h3>
+
+<p>The integer arithmetic routines are used on platforms that don&rsquo;t provide
+hardware support for arithmetic operations on some modes.
+</p>
+<a name="Arithmetic-functions"></a>
+<h4 class="subsection">4.1.1 Arithmetic functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fashlsi3"></a>Runtime Function: <em>int</em> <strong>__ashlsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashldi3"></a>Runtime Function: <em>long</em> <strong>__ashldi3</strong> <em>(long <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashlti3"></a>Runtime Function: <em>long long</em> <strong>__ashlti3</strong> <em>(long long <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of shifting <var>a</var> left by <var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fashrsi3"></a>Runtime Function: <em>int</em> <strong>__ashrsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrdi3"></a>Runtime Function: <em>long</em> <strong>__ashrdi3</strong> <em>(long <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fashrti3"></a>Runtime Function: <em>long long</em> <strong>__ashrti3</strong> <em>(long long <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of arithmetically shifting <var>a</var> right
+by <var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdivsi3"></a>Runtime Function: <em>int</em> <strong>__divsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivdi3"></a>Runtime Function: <em>long</em> <strong>__divdi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivti3"></a>Runtime Function: <em>long long</em> <strong>__divti3</strong> <em>(long long <var>a</var>, long long <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the signed division of <var>a</var> and
+<var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005flshrsi3"></a>Runtime Function: <em>int</em> <strong>__lshrsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshrdi3"></a>Runtime Function: <em>long</em> <strong>__lshrdi3</strong> <em>(long <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flshrti3"></a>Runtime Function: <em>long long</em> <strong>__lshrti3</strong> <em>(long long <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions return the result of logically shifting <var>a</var> right by
+<var>b</var> bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmodsi3"></a>Runtime Function: <em>int</em> <strong>__modsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmoddi3"></a>Runtime Function: <em>long</em> <strong>__moddi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmodti3"></a>Runtime Function: <em>long long</em> <strong>__modti3</strong> <em>(long long <var>a</var>, long long <var>b</var>)</em></dt>
+<dd><p>These functions return the remainder of the signed division of <var>a</var>
+and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmulsi3"></a>Runtime Function: <em>int</em> <strong>__mulsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuldi3"></a>Runtime Function: <em>long</em> <strong>__muldi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulti3"></a>Runtime Function: <em>long long</em> <strong>__multi3</strong> <em>(long long <var>a</var>, long long <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fnegdi2"></a>Runtime Function: <em>long</em> <strong>__negdi2</strong> <em>(long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegti2"></a>Runtime Function: <em>long long</em> <strong>__negti2</strong> <em>(long long <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fudivsi3"></a>Runtime Function: <em>unsigned int</em> <strong>__udivsi3</strong> <em>(unsigned int <var>a</var>, unsigned int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivdi3"></a>Runtime Function: <em>unsigned long</em> <strong>__udivdi3</strong> <em>(unsigned long <var>a</var>, unsigned long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fudivti3"></a>Runtime Function: <em>unsigned long long</em> <strong>__udivti3</strong> <em>(unsigned long long <var>a</var>, unsigned long long <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of the unsigned division of <var>a</var>
+and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fudivmoddi4"></a>Runtime Function: <em>unsigned long</em> <strong>__udivmoddi4</strong> <em>(unsigned long <var>a</var>, unsigned long <var>b</var>, unsigned long *<var>c</var>)</em></dt>
+<dt><a name="index-_005f_005fudivmodti4"></a>Runtime Function: <em>unsigned long long</em> <strong>__udivmodti4</strong> <em>(unsigned long long <var>a</var>, unsigned long long <var>b</var>, unsigned long long *<var>c</var>)</em></dt>
+<dd><p>These functions calculate both the quotient and remainder of the unsigned
+division of <var>a</var> and <var>b</var>. The return value is the quotient, and
+the remainder is placed in variable pointed to by <var>c</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fumodsi3"></a>Runtime Function: <em>unsigned int</em> <strong>__umodsi3</strong> <em>(unsigned int <var>a</var>, unsigned int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fumoddi3"></a>Runtime Function: <em>unsigned long</em> <strong>__umoddi3</strong> <em>(unsigned long <var>a</var>, unsigned long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fumodti3"></a>Runtime Function: <em>unsigned long long</em> <strong>__umodti3</strong> <em>(unsigned long long <var>a</var>, unsigned long long <var>b</var>)</em></dt>
+<dd><p>These functions return the remainder of the unsigned division of <var>a</var>
+and <var>b</var>.
+</p></dd></dl>
+
+<a name="Comparison-functions"></a>
+<h4 class="subsection">4.1.2 Comparison functions</h4>
+
+<p>The following functions implement integral comparisons. These functions
+implement a low-level compare, upon which the higher level comparison
+operators (such as less than and greater than or equal to) can be
+constructed. The returned values lie in the range zero to two, to allow
+the high-level operators to be implemented by testing the returned
+result using either signed or unsigned comparison.
+</p>
+<dl>
+<dt><a name="index-_005f_005fcmpdi2"></a>Runtime Function: <em>int</em> <strong>__cmpdi2</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpti2"></a>Runtime Function: <em>int</em> <strong>__cmpti2</strong> <em>(long long <var>a</var>, long long <var>b</var>)</em></dt>
+<dd><p>These functions perform a signed comparison of <var>a</var> and <var>b</var>. If
+<var>a</var> is less than <var>b</var>, they return 0; if <var>a</var> is greater than
+<var>b</var>, they return 2; and if <var>a</var> and <var>b</var> are equal they return 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fucmpdi2"></a>Runtime Function: <em>int</em> <strong>__ucmpdi2</strong> <em>(unsigned long <var>a</var>, unsigned long <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fucmpti2"></a>Runtime Function: <em>int</em> <strong>__ucmpti2</strong> <em>(unsigned long long <var>a</var>, unsigned long long <var>b</var>)</em></dt>
+<dd><p>These functions perform an unsigned comparison of <var>a</var> and <var>b</var>.
+If <var>a</var> is less than <var>b</var>, they return 0; if <var>a</var> is greater than
+<var>b</var>, they return 2; and if <var>a</var> and <var>b</var> are equal they return 1.
+</p></dd></dl>
+
+<a name="Trapping-arithmetic-functions"></a>
+<h4 class="subsection">4.1.3 Trapping arithmetic functions</h4>
+
+<p>The following functions implement trapping arithmetic. These functions
+call the libc function <code>abort</code> upon signed arithmetic overflow.
+</p>
+<dl>
+<dt><a name="index-_005f_005fabsvsi2"></a>Runtime Function: <em>int</em> <strong>__absvsi2</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fabsvdi2"></a>Runtime Function: <em>long</em> <strong>__absvdi2</strong> <em>(long <var>a</var>)</em></dt>
+<dd><p>These functions return the absolute value of <var>a</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005faddvsi3"></a>Runtime Function: <em>int</em> <strong>__addvsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddvdi3"></a>Runtime Function: <em>long</em> <strong>__addvdi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var>; that is
+<code><var>a</var> + <var>b</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmulvsi3"></a>Runtime Function: <em>int</em> <strong>__mulvsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulvdi3"></a>Runtime Function: <em>long</em> <strong>__mulvdi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dd><p>The functions return the product of <var>a</var> and <var>b</var>; that is
+<code><var>a</var> * <var>b</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fnegvsi2"></a>Runtime Function: <em>int</em> <strong>__negvsi2</strong> <em>(int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegvdi2"></a>Runtime Function: <em>long</em> <strong>__negvdi2</strong> <em>(long <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var>; that is <code>-<var>a</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsubvsi3"></a>Runtime Function: <em>int</em> <strong>__subvsi3</strong> <em>(int <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubvdi3"></a>Runtime Function: <em>long</em> <strong>__subvdi3</strong> <em>(long <var>a</var>, long <var>b</var>)</em></dt>
+<dd><p>These functions return the difference between <var>b</var> and <var>a</var>;
+that is <code><var>a</var> - <var>b</var></code>.
+</p></dd></dl>
+
+<a name="Bit-operations"></a>
+<h4 class="subsection">4.1.4 Bit operations</h4>
+
+<dl>
+<dt><a name="index-_005f_005fclzsi2"></a>Runtime Function: <em>int</em> <strong>__clzsi2</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fclzdi2"></a>Runtime Function: <em>int</em> <strong>__clzdi2</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fclzti2"></a>Runtime Function: <em>int</em> <strong>__clzti2</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions return the number of leading 0-bits in <var>a</var>, starting
+at the most significant bit position. If <var>a</var> is zero, the result is
+undefined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fctzsi2"></a>Runtime Function: <em>int</em> <strong>__ctzsi2</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fctzdi2"></a>Runtime Function: <em>int</em> <strong>__ctzdi2</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fctzti2"></a>Runtime Function: <em>int</em> <strong>__ctzti2</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions return the number of trailing 0-bits in <var>a</var>, starting
+at the least significant bit position. If <var>a</var> is zero, the result is
+undefined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fffsdi2"></a>Runtime Function: <em>int</em> <strong>__ffsdi2</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fffsti2"></a>Runtime Function: <em>int</em> <strong>__ffsti2</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions return the index of the least significant 1-bit in <var>a</var>,
+or the value zero if <var>a</var> is zero. The least significant bit is index
+one.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fparitysi2"></a>Runtime Function: <em>int</em> <strong>__paritysi2</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fparitydi2"></a>Runtime Function: <em>int</em> <strong>__paritydi2</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fparityti2"></a>Runtime Function: <em>int</em> <strong>__parityti2</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions return the value zero if the number of bits set in
+<var>a</var> is even, and the value one otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fpopcountsi2"></a>Runtime Function: <em>int</em> <strong>__popcountsi2</strong> <em>(unsigned int <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fpopcountdi2"></a>Runtime Function: <em>int</em> <strong>__popcountdi2</strong> <em>(unsigned long <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fpopcountti2"></a>Runtime Function: <em>int</em> <strong>__popcountti2</strong> <em>(unsigned long long <var>a</var>)</em></dt>
+<dd><p>These functions return the number of bits set in <var>a</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fbswapsi2"></a>Runtime Function: <em>int32_t</em> <strong>__bswapsi2</strong> <em>(int32_t <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fbswapdi2"></a>Runtime Function: <em>int64_t</em> <strong>__bswapdi2</strong> <em>(int64_t <var>a</var>)</em></dt>
+<dd><p>These functions return the <var>a</var> byteswapped.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Soft-float-library-routines.html#Soft-float-library-routines" accesskey="n" rel="next">Soft float library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Interface.html b/share/doc/gccint/Interface.html
new file mode 100644
index 0000000..43c58d2
--- /dev/null
+++ b/share/doc/gccint/Interface.html
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Interface</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Interface">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Interface">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Libgcc.html#Libgcc" rel="next" title="Libgcc">
+<link href="Portability.html#Portability" rel="previous" title="Portability">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Interface"></a>
+<div class="header">
+<p>
+Next: <a href="Libgcc.html#Libgcc" accesskey="n" rel="next">Libgcc</a>, Previous: <a href="Portability.html#Portability" accesskey="p" rel="previous">Portability</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Interfacing-to-GCC-Output"></a>
+<h2 class="chapter">3 Interfacing to GCC Output</h2>
+<a name="index-interfacing-to-GCC-output"></a>
+<a name="index-run_002dtime-conventions"></a>
+<a name="index-function-call-conventions"></a>
+<a name="index-conventions_002c-run_002dtime"></a>
+
+<p>GCC is normally configured to use the same function calling convention
+normally in use on the target system. This is done with the
+machine-description macros described (see <a href="Target-Macros.html#Target-Macros">Target Macros</a>).
+</p>
+<a name="index-unions_002c-returning"></a>
+<a name="index-structures_002c-returning"></a>
+<a name="index-returning-structures-and-unions"></a>
+<p>However, returning of structure and union values is done differently on
+some target machines. As a result, functions compiled with PCC
+returning such types cannot be called from code compiled with GCC,
+and vice versa. This does not cause trouble often because few Unix
+library routines return structures or unions.
+</p>
+<p>GCC code returns structures and unions that are 1, 2, 4 or 8 bytes
+long in the same registers used for <code>int</code> or <code>double</code> return
+values. (GCC typically allocates variables of such types in
+registers also.) Structures and unions of other sizes are returned by
+storing them into an address passed by the caller (usually in a
+register). The target hook <code>TARGET_STRUCT_VALUE_RTX</code>
+tells GCC where to pass this address.
+</p>
+<p>By contrast, PCC on most target machines returns structures and unions
+of any size by copying the data into an area of static storage, and then
+returning the address of that storage as if it were a pointer value.
+The caller must copy the data from that memory area to the place where
+the value is wanted. This is slower than the method used by GCC, and
+fails to be reentrant.
+</p>
+<p>On some target machines, such as RISC machines and the 80386, the
+standard system convention is to pass to the subroutine the address of
+where to return the value. On these machines, GCC has been
+configured to be compatible with the standard compiler, when this method
+is used. It may not be compatible for structures of 1, 2, 4 or 8 bytes.
+</p>
+<a name="index-argument-passing"></a>
+<a name="index-passing-arguments"></a>
+<p>GCC uses the system&rsquo;s standard convention for passing arguments. On
+some machines, the first few arguments are passed in registers; in
+others, all are passed on the stack. It would be possible to use
+registers for argument passing on any machine, and this would probably
+result in a significant speedup. But the result would be complete
+incompatibility with code that follows the standard convention. So this
+change is practical only if you are switching to GCC as the sole C
+compiler for the system. We may implement register argument passing on
+certain machines once we have a complete GNU system so that we can
+compile the libraries with GCC.
+</p>
+<p>On some machines (particularly the SPARC), certain types of arguments
+are passed &ldquo;by invisible reference&rdquo;. This means that the value is
+stored in memory, and the address of the memory location is passed to
+the subroutine.
+</p>
+<a name="index-longjmp-and-automatic-variables"></a>
+<p>If you use <code>longjmp</code>, beware of automatic variables. ISO C says that
+automatic variables that are not declared <code>volatile</code> have undefined
+values after a <code>longjmp</code>. And this is all GCC promises to do,
+because it is very difficult to restore register variables correctly, and
+one of GCC&rsquo;s features is that it can put variables in registers without
+your asking it to.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Libgcc.html#Libgcc" accesskey="n" rel="next">Libgcc</a>, Previous: <a href="Portability.html#Portability" accesskey="p" rel="previous">Portability</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Internal-flags.html b/share/doc/gccint/Internal-flags.html
new file mode 100644
index 0000000..5acd8f2
--- /dev/null
+++ b/share/doc/gccint/Internal-flags.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Internal flags</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Internal flags">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Internal flags">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="LTO.html#LTO" rel="up" title="LTO">
+<link href="Match-and-Simplify.html#Match-and-Simplify" rel="next" title="Match and Simplify">
+<link href="WHOPR.html#WHOPR" rel="previous" title="WHOPR">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Internal-flags"></a>
+<div class="header">
+<p>
+Previous: <a href="WHOPR.html#WHOPR" accesskey="p" rel="previous">WHOPR</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Internal-flags-controlling-lto1"></a>
+<h3 class="section">25.5 Internal flags controlling <code>lto1</code></h3>
+
+<p>The following flags are passed into <code>lto1</code> and are not
+meant to be used directly from the command line.
+</p>
+<ul>
+<li> <a name="index-fwpa"></a>
+-fwpa
+This option runs the serial part of the link-time optimizer
+performing the inter-procedural propagation (WPA mode). The
+compiler reads in summary information from all inputs and
+performs an analysis based on summary information only. It
+generates object files for subsequent runs of the link-time
+optimizer where individual object files are optimized using both
+summary information from the WPA mode and the actual function
+bodies. It then drives the LTRANS phase.
+
+</li><li> <a name="index-fltrans"></a>
+-fltrans
+This option runs the link-time optimizer in the
+local-transformation (LTRANS) mode, which reads in output from a
+previous run of the LTO in WPA mode. In the LTRANS mode, LTO
+optimizes an object and produces the final assembly.
+
+</li><li> <a name="index-fltrans_002doutput_002dlist"></a>
+-fltrans-output-list=<var>file</var>
+This option specifies a file to which the names of LTRANS output
+files are written. This option is only meaningful in conjunction
+with <samp>-fwpa</samp>.
+
+</li><li> <a name="index-fresolution"></a>
+-fresolution=<var>file</var>
+This option specifies the linker resolution file. This option is
+only meaningful in conjunction with <samp>-fwpa</samp> and as option
+to pass through to the LTO linker plugin.
+</li></ul>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Internal-structure.html b/share/doc/gccint/Internal-structure.html
new file mode 100644
index 0000000..92c4548
--- /dev/null
+++ b/share/doc/gccint/Internal-structure.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Internal structure</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Internal structure">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Internal structure">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Declarations.html#Declarations" rel="up" title="Declarations">
+<link href="Current-structure-hierarchy.html#Current-structure-hierarchy" rel="next" title="Current structure hierarchy">
+<link href="Working-with-declarations.html#Working-with-declarations" rel="previous" title="Working with declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Internal-structure"></a>
+<div class="header">
+<p>
+Previous: <a href="Working-with-declarations.html#Working-with-declarations" accesskey="p" rel="previous">Working with declarations</a>, Up: <a href="Declarations.html#Declarations" accesskey="u" rel="up">Declarations</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Internal-structure-1"></a>
+<h4 class="subsection">11.4.2 Internal structure</h4>
+
+<p><code>DECL</code> nodes are represented internally as a hierarchy of
+structures.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Current-structure-hierarchy.html#Current-structure-hierarchy" accesskey="1">Current structure hierarchy</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The current DECL node structure
+hierarchy.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Adding-new-DECL-node-types.html#Adding-new-DECL-node-types" accesskey="2">Adding new DECL node types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to add a new DECL node to a
+frontend.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Invoking-the-garbage-collector.html b/share/doc/gccint/Invoking-the-garbage-collector.html
new file mode 100644
index 0000000..1280306
--- /dev/null
+++ b/share/doc/gccint/Invoking-the-garbage-collector.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Invoking the garbage collector</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Invoking the garbage collector">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Invoking the garbage collector">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="Troubleshooting.html#Troubleshooting" rel="next" title="Troubleshooting">
+<link href="Files.html#Files" rel="previous" title="Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Invoking-the-garbage-collector"></a>
+<div class="header">
+<p>
+Next: <a href="Troubleshooting.html#Troubleshooting" accesskey="n" rel="next">Troubleshooting</a>, Previous: <a href="Files.html#Files" accesskey="p" rel="previous">Files</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-to-invoke-the-garbage-collector"></a>
+<h3 class="section">23.6 How to invoke the garbage collector</h3>
+<a name="index-garbage-collector_002c-invocation"></a>
+<a name="index-ggc_005fcollect"></a>
+
+<p>The GCC garbage collector GGC is only invoked explicitly. In contrast
+with many other garbage collectors, it is not implicitly invoked by
+allocation routines when a lot of memory has been consumed. So the
+only way to have GGC reclaim storage is to call the <code>ggc_collect</code>
+function explicitly.
+With <var>mode</var> <code>GGC_COLLECT_FORCE</code> or otherwise (default
+<code>GGC_COLLECT_HEURISTIC</code>) when the internal heuristic decides to
+collect, this call is potentially an expensive operation, as it may
+have to scan the entire heap. Beware that local variables (on the GCC
+call stack) are not followed by such an invocation (as many other
+garbage collectors do): you should reference all your data from static
+or external <code>GTY</code>-ed variables, and it is advised to call
+<code>ggc_collect</code> with a shallow call stack. The GGC is an exact mark
+and sweep garbage collector (so it does not scan the call stack for
+pointers). In practice GCC passes don&rsquo;t often call <code>ggc_collect</code>
+themselves, because it is called by the pass manager between passes.
+</p>
+<p>At the time of the <code>ggc_collect</code> call all pointers in the GC-marked
+structures must be valid or <code>NULL</code>. In practice this means that
+there should not be uninitialized pointer fields in the structures even
+if your code never reads or writes those fields at a particular
+instance. One way to ensure this is to use cleared versions of
+allocators unless all the fields are initialized manually immediately
+after allocation.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Iterators.html b/share/doc/gccint/Iterators.html
new file mode 100644
index 0000000..03de08a
--- /dev/null
+++ b/share/doc/gccint/Iterators.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Mode-Iterators.html#Mode-Iterators" rel="next" title="Mode Iterators">
+<link href="Constant-Definitions.html#Constant-Definitions" rel="previous" title="Constant Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Iterators"></a>
+<div class="header">
+<p>
+Previous: <a href="Constant-Definitions.html#Constant-Definitions" accesskey="p" rel="previous">Constant Definitions</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Iterators-1"></a>
+<h3 class="section">17.23 Iterators</h3>
+<a name="index-iterators-in-_002emd-files"></a>
+
+<p>Ports often need to define similar patterns for more than one machine
+mode or for more than one rtx code. GCC provides some simple iterator
+facilities to make this process easier.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Mode-Iterators.html#Mode-Iterators" accesskey="1">Mode Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating variations of patterns for different modes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Code-Iterators.html#Code-Iterators" accesskey="2">Code Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Doing the same for codes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Int-Iterators.html#Int-Iterators" accesskey="3">Int Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Doing the same for integers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Subst-Iterators.html#Subst-Iterators" accesskey="4">Subst Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating variations of patterns for define_subst.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Parameterized-Names.html#Parameterized-Names" accesskey="5">Parameterized Names</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying iterator values in C++ code.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Jump-Patterns.html b/share/doc/gccint/Jump-Patterns.html
new file mode 100644
index 0000000..a78748f
--- /dev/null
+++ b/share/doc/gccint/Jump-Patterns.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Jump Patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Jump Patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Jump Patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Looping-Patterns.html#Looping-Patterns" rel="next" title="Looping Patterns">
+<link href="Dependent-Patterns.html#Dependent-Patterns" rel="previous" title="Dependent Patterns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Jump-Patterns"></a>
+<div class="header">
+<p>
+Next: <a href="Looping-Patterns.html#Looping-Patterns" accesskey="n" rel="next">Looping Patterns</a>, Previous: <a href="Dependent-Patterns.html#Dependent-Patterns" accesskey="p" rel="previous">Dependent Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Jump-Instruction-Patterns"></a>
+<h3 class="section">17.12 Defining Jump Instruction Patterns</h3>
+<a name="index-jump-instruction-patterns"></a>
+<a name="index-defining-jump-instruction-patterns"></a>
+
+<p>GCC does not assume anything about how the machine realizes jumps.
+The machine description should define a single pattern, usually
+a <code>define_expand</code>, which expands to all the required insns.
+</p>
+<p>Usually, this would be a comparison insn to set the condition code
+and a separate branch insn testing the condition code and branching
+or not according to its value. For many machines, however,
+separating compares and branches is limiting, which is why the
+more flexible approach with one <code>define_expand</code> is used in GCC.
+The machine description becomes clearer for architectures that
+have compare-and-branch instructions but no condition code. It also
+works better when different sets of comparison operators are supported
+by different kinds of conditional branches (e.g. integer vs.
+floating-point), or by conditional branches with respect to conditional stores.
+</p>
+<p>Two separate insns are always used on most machines that use a separate
+condition code register (see <a href="Condition-Code.html#Condition-Code">Condition Code</a>).
+</p>
+<p>Even in this case having a single entry point for conditional branches
+is advantageous, because it handles equally well the case where a single
+comparison instruction records the results of both signed and unsigned
+comparison of the given operands (with the branch insns coming in distinct
+signed and unsigned flavors) as in the x86 or SPARC, and the case where
+there are distinct signed and unsigned compare instructions and only
+one set of conditional branch instructions as in the PowerPC.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Jumps.html b/share/doc/gccint/Jumps.html
new file mode 100644
index 0000000..1c149d4
--- /dev/null
+++ b/share/doc/gccint/Jumps.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Jumps</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Jumps">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Jumps">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Cleanups.html#Cleanups" rel="next" title="Cleanups">
+<link href="Empty-Statements.html#Empty-Statements" rel="previous" title="Empty Statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Jumps"></a>
+<div class="header">
+<p>
+Next: <a href="Cleanups.html#Cleanups" accesskey="n" rel="next">Cleanups</a>, Previous: <a href="Empty-Statements.html#Empty-Statements" accesskey="p" rel="previous">Empty Statements</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Jumps-1"></a>
+<h4 class="subsection">11.7.5 Jumps</h4>
+<a name="index-Jumps"></a>
+
+<p>Other jumps are expressed by either <code>GOTO_EXPR</code> or
+<code>RETURN_EXPR</code>.
+</p>
+<p>The operand of a <code>GOTO_EXPR</code> must be either a label or a
+variable containing the address to jump to.
+</p>
+<p>The operand of a <code>RETURN_EXPR</code> is either <code>NULL_TREE</code>,
+<code>RESULT_DECL</code>, or a <code>MODIFY_EXPR</code> which sets the return
+value. It would be nice to move the <code>MODIFY_EXPR</code> into a
+separate statement, but the special return semantics in
+<code>expand_return</code> make that difficult. It may still happen in
+the future, perhaps by moving most of that logic into
+<code>expand_assignment</code>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/LCSSA.html b/share/doc/gccint/LCSSA.html
new file mode 100644
index 0000000..4f3a3ca
--- /dev/null
+++ b/share/doc/gccint/LCSSA.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: LCSSA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: LCSSA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: LCSSA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Scalar-evolutions.html#Scalar-evolutions" rel="next" title="Scalar evolutions">
+<link href="Loop-manipulation.html#Loop-manipulation" rel="previous" title="Loop manipulation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="LCSSA"></a>
+<div class="header">
+<p>
+Next: <a href="Scalar-evolutions.html#Scalar-evolutions" accesskey="n" rel="next">Scalar evolutions</a>, Previous: <a href="Loop-manipulation.html#Loop-manipulation" accesskey="p" rel="previous">Loop manipulation</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loop_002dclosed-SSA-form"></a>
+<h3 class="section">16.4 Loop-closed SSA form</h3>
+<a name="index-LCSSA"></a>
+<a name="index-Loop_002dclosed-SSA-form"></a>
+
+<p>Throughout the loop optimizations on tree level, one extra condition is
+enforced on the SSA form: No SSA name is used outside of the loop in
+that it is defined. The SSA form satisfying this condition is called
+&ldquo;loop-closed SSA form&rdquo; &ndash; LCSSA. To enforce LCSSA, PHI nodes must be
+created at the exits of the loops for the SSA names that are used
+outside of them. Only the real operands (not virtual SSA names) are
+held in LCSSA, in order to save memory.
+</p>
+<p>There are various benefits of LCSSA:
+</p>
+<ul>
+<li> Many optimizations (value range analysis, final value
+replacement) are interested in the values that are defined in the loop
+and used outside of it, i.e., exactly those for that we create new PHI
+nodes.
+</li><li> In induction variable analysis, it is not necessary to specify the
+loop in that the analysis should be performed &ndash; the scalar evolution
+analysis always returns the results with respect to the loop in that the
+SSA name is defined.
+</li><li> It makes updating of SSA form during loop transformations simpler.
+Without LCSSA, operations like loop unrolling may force creation of PHI
+nodes arbitrarily far from the loop, while in LCSSA, the SSA form can be
+updated locally. However, since we only keep real operands in LCSSA, we
+cannot use this advantage (we could have local updating of real
+operands, but it is not much more efficient than to use generic SSA form
+updating for it as well; the amount of changes to SSA is the same).
+</li></ul>
+
+<p>However, it also means LCSSA must be updated. This is usually
+straightforward, unless you create a new value in loop and use it
+outside, or unless you manipulate loop exit edges (functions are
+provided to make these manipulations simple).
+<code>rewrite_into_loop_closed_ssa</code> is used to rewrite SSA form to
+LCSSA, and <code>verify_loop_closed_ssa</code> to check that the invariant of
+LCSSA is preserved.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Scalar-evolutions.html#Scalar-evolutions" accesskey="n" rel="next">Scalar evolutions</a>, Previous: <a href="Loop-manipulation.html#Loop-manipulation" accesskey="p" rel="previous">Loop manipulation</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/LTO-Overview.html b/share/doc/gccint/LTO-Overview.html
new file mode 100644
index 0000000..f44fc43
--- /dev/null
+++ b/share/doc/gccint/LTO-Overview.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: LTO Overview</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: LTO Overview">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: LTO Overview">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="LTO.html#LTO" rel="up" title="LTO">
+<link href="LTO-object-file-layout.html#LTO-object-file-layout" rel="next" title="LTO object file layout">
+<link href="LTO.html#LTO" rel="previous" title="LTO">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="LTO-Overview"></a>
+<div class="header">
+<p>
+Next: <a href="LTO-object-file-layout.html#LTO-object-file-layout" accesskey="n" rel="next">LTO object file layout</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Design-Overview"></a>
+<h3 class="section">25.1 Design Overview</h3>
+
+<p>Link time optimization is implemented as a GCC front end for a
+bytecode representation of GIMPLE that is emitted in special sections
+of <code>.o</code> files. Currently, LTO support is enabled in most
+ELF-based systems, as well as darwin, cygwin and mingw systems.
+</p>
+<p>By default, object files generated with LTO support contain only GIMPLE
+bytecode. Such objects are called &ldquo;slim&rdquo;, and they require that
+tools like <code>ar</code> and <code>nm</code> understand symbol tables of LTO
+sections. For most targets these tools have been extended to use the
+plugin infrastructure, so GCC can support &ldquo;slim&rdquo; objects consisting
+of the intermediate code alone.
+</p>
+<p>GIMPLE bytecode could also be saved alongside final object code if
+the <samp>-ffat-lto-objects</samp> option is passed, or if no plugin support
+is detected for <code>ar</code> and <code>nm</code> when GCC is configured. It makes
+the object files generated with LTO support larger than regular object
+files. This &ldquo;fat&rdquo; object format allows to ship one set of fat
+objects which could be used both for development and the production of
+optimized builds. A, perhaps surprising, side effect of this feature
+is that any mistake in the toolchain leads to LTO information not
+being used (e.g. an older <code>libtool</code> calling <code>ld</code> directly).
+This is both an advantage, as the system is more robust, and a
+disadvantage, as the user is not informed that the optimization has
+been disabled.
+</p>
+<p>At the highest level, LTO splits the compiler in two. The first half
+(the &ldquo;writer&rdquo;) produces a streaming representation of all the
+internal data structures needed to optimize and generate code. This
+includes declarations, types, the callgraph and the GIMPLE representation
+of function bodies.
+</p>
+<p>When <samp>-flto</samp> is given during compilation of a source file, the
+pass manager executes all the passes in <code>all_lto_gen_passes</code>.
+Currently, this phase is composed of two IPA passes:
+</p>
+<ul>
+<li> <code>pass_ipa_lto_gimple_out</code>
+This pass executes the function <code>lto_output</code> in
+<samp>lto-streamer-out.cc</samp>, which traverses the call graph encoding
+every reachable declaration, type and function. This generates a
+memory representation of all the file sections described below.
+
+</li><li> <code>pass_ipa_lto_finish_out</code>
+This pass executes the function <code>produce_asm_for_decls</code> in
+<samp>lto-streamer-out.cc</samp>, which takes the memory image built in the
+previous pass and encodes it in the corresponding ELF file sections.
+</li></ul>
+
+<p>The second half of LTO support is the &ldquo;reader&rdquo;. This is implemented
+as the GCC front end <samp>lto1</samp> in <samp>lto/lto.cc</samp>. When
+<samp>collect2</samp> detects a link set of <code>.o</code>/<code>.a</code> files with
+LTO information and the <samp>-flto</samp> is enabled, it invokes
+<samp>lto1</samp> which reads the set of files and aggregates them into a
+single translation unit for optimization. The main entry point for
+the reader is <samp>lto/lto.cc</samp>:<code>lto_main</code>.
+</p>
+<a name="LTO-modes-of-operation"></a>
+<h4 class="subsection">25.1.1 LTO modes of operation</h4>
+
+<p>One of the main goals of the GCC link-time infrastructure was to allow
+effective compilation of large programs. For this reason GCC implements two
+link-time compilation modes.
+</p>
+<ol>
+<li> <em>LTO mode</em>, in which the whole program is read into the
+compiler at link-time and optimized in a similar way as if it
+were a single source-level compilation unit.
+
+</li><li> <em>WHOPR or partitioned mode</em>, designed to utilize multiple
+CPUs and/or a distributed compilation environment to quickly link
+large applications. WHOPR stands for WHOle Program optimizeR (not to
+be confused with the semantics of <samp>-fwhole-program</samp>). It
+partitions the aggregated callgraph from many different <code>.o</code>
+files and distributes the compilation of the sub-graphs to different
+CPUs.
+
+<p>Note that distributed compilation is not implemented yet, but since
+the parallelism is facilitated via generating a <code>Makefile</code>, it
+would be easy to implement.
+</p></li></ol>
+
+<p>WHOPR splits LTO into three main stages:
+</p><ol>
+<li> Local generation (LGEN)
+This stage executes in parallel. Every file in the program is compiled
+into the intermediate language and packaged together with the local
+call-graph and summary information. This stage is the same for both
+the LTO and WHOPR compilation mode.
+
+</li><li> Whole Program Analysis (WPA)
+WPA is performed sequentially. The global call-graph is generated, and
+a global analysis procedure makes transformation decisions. The global
+call-graph is partitioned to facilitate parallel optimization during
+phase 3. The results of the WPA stage are stored into new object files
+which contain the partitions of program expressed in the intermediate
+language and the optimization decisions.
+
+</li><li> Local transformations (LTRANS)
+This stage executes in parallel. All the decisions made during phase 2
+are implemented locally in each partitioned object file, and the final
+object code is generated. Optimizations which cannot be decided
+efficiently during the phase 2 may be performed on the local
+call-graph partitions.
+</li></ol>
+
+<p>WHOPR can be seen as an extension of the usual LTO mode of
+compilation. In LTO, WPA and LTRANS are executed within a single
+execution of the compiler, after the whole program has been read into
+memory.
+</p>
+<p>When compiling in WHOPR mode, the callgraph is partitioned during
+the WPA stage. The whole program is split into a given number of
+partitions of roughly the same size. The compiler tries to
+minimize the number of references which cross partition boundaries.
+The main advantage of WHOPR is to allow the parallel execution of
+LTRANS stages, which are the most time-consuming part of the
+compilation process. Additionally, it avoids the need to load the
+whole program into memory.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="LTO-object-file-layout.html#LTO-object-file-layout" accesskey="n" rel="next">LTO object file layout</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/LTO-Testing.html b/share/doc/gccint/LTO-Testing.html
new file mode 100644
index 0000000..ddb1422
--- /dev/null
+++ b/share/doc/gccint/LTO-Testing.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: LTO Testing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: LTO Testing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: LTO Testing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="gcov-Testing.html#gcov-Testing" rel="next" title="gcov Testing">
+<link href="C-Tests.html#C-Tests" rel="previous" title="C Tests">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="LTO-Testing"></a>
+<div class="header">
+<p>
+Next: <a href="gcov-Testing.html#gcov-Testing" accesskey="n" rel="next">gcov Testing</a>, Previous: <a href="C-Tests.html#C-Tests" accesskey="p" rel="previous">C Tests</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-link_002dtime-optimizations"></a>
+<h3 class="section">7.5 Support for testing link-time optimizations</h3>
+
+<p>Tests for link-time optimizations usually require multiple source files
+that are compiled separately, perhaps with different sets of options.
+There are several special-purpose test directives used for these tests.
+</p>
+<dl compact="compact">
+<dt><code>{ dg-lto-do <var>do-what-keyword</var> }</code></dt>
+<dd><p><var>do-what-keyword</var> specifies how the test is compiled and whether
+it is executed. It is one of:
+</p>
+<dl compact="compact">
+<dt><code>assemble</code></dt>
+<dd><p>Compile with <samp>-c</samp> to produce a relocatable object file.
+</p></dd>
+<dt><code>link</code></dt>
+<dd><p>Compile, assemble, and link to produce an executable file.
+</p></dd>
+<dt><code>run</code></dt>
+<dd><p>Produce and run an executable file, which is expected to return
+an exit code of 0.
+</p></dd>
+</dl>
+
+<p>The default is <code>assemble</code>. That can be overridden for a set of
+tests by redefining <code>dg-do-what-default</code> within the <code>.exp</code>
+file for those tests.
+</p>
+<p>Unlike <code>dg-do</code>, <code>dg-lto-do</code> does not support an optional
+&lsquo;<samp>target</samp>&rsquo; or &lsquo;<samp>xfail</samp>&rsquo; list. Use <code>dg-skip-if</code>,
+<code>dg-xfail-if</code>, or <code>dg-xfail-run-if</code>.
+</p>
+</dd>
+<dt><code>{ dg-lto-options { { <var>options</var> } [{ <var>options</var> }] } [{ target <var>selector</var> }]}</code></dt>
+<dd><p>This directive provides a list of one or more sets of compiler options
+to override <var>LTO_OPTIONS</var>. Each test will be compiled and run with
+each of these sets of options.
+</p>
+</dd>
+<dt><code>{ dg-extra-ld-options <var>options</var> [{ target <var>selector</var> }]}</code></dt>
+<dd><p>This directive adds <var>options</var> to the linker options used.
+</p>
+</dd>
+<dt><code>{ dg-suppress-ld-options <var>options</var> [{ target <var>selector</var> }]}</code></dt>
+<dd><p>This directive removes <var>options</var> from the set of linker options used.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/LTO-object-file-layout.html b/share/doc/gccint/LTO-object-file-layout.html
new file mode 100644
index 0000000..ef41205
--- /dev/null
+++ b/share/doc/gccint/LTO-object-file-layout.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: LTO object file layout</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: LTO object file layout">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: LTO object file layout">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="LTO.html#LTO" rel="up" title="LTO">
+<link href="IPA.html#IPA" rel="next" title="IPA">
+<link href="LTO-Overview.html#LTO-Overview" rel="previous" title="LTO Overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="LTO-object-file-layout"></a>
+<div class="header">
+<p>
+Next: <a href="IPA.html#IPA" accesskey="n" rel="next">IPA</a>, Previous: <a href="LTO-Overview.html#LTO-Overview" accesskey="p" rel="previous">LTO Overview</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="LTO-file-sections"></a>
+<h3 class="section">25.2 LTO file sections</h3>
+
+<p>LTO information is stored in several ELF sections inside object files.
+Data structures and enum codes for sections are defined in
+<samp>lto-streamer.h</samp>.
+</p>
+<p>These sections are emitted from <samp>lto-streamer-out.cc</samp> and mapped
+in all at once from <samp>lto/lto.cc</samp>:<code>lto_file_read</code>. The
+individual functions dealing with the reading/writing of each section
+are described below.
+</p>
+<ul>
+<li> Command line options (<code>.gnu.lto_.opts</code>)
+
+<p>This section contains the command line options used to generate the
+object files. This is used at link time to determine the optimization
+level and other settings when they are not explicitly specified at the
+linker command line.
+</p>
+<p>Most options are recorded at a per function level and their setting
+restored when processing the functions at link time. Global options
+are composed from options specified at compile time and link time.
+How exactly they are combined or mismatches diagnosed is implemented in
+<samp>lto-wrapper.cc</samp>:<code>find_and_merge_options</code>.
+</p>
+
+</li><li> Symbol table (<code>.gnu.lto_.symtab</code>)
+
+<p>This table replaces the ELF symbol table for functions and variables
+represented in the LTO IL. Symbols used and exported by the optimized
+assembly code of &ldquo;fat&rdquo; objects might not match the ones used and
+exported by the intermediate code. This table is necessary because
+the intermediate code is less optimized and thus requires a separate
+symbol table.
+</p>
+<p>Additionally, the binary code in the &ldquo;fat&rdquo; object will lack a call
+to a function, since the call was optimized out at compilation time
+after the intermediate language was streamed out. In some special
+cases, the same optimization may not happen during link-time
+optimization. This would lead to an undefined symbol if only one
+symbol table was used.
+</p>
+<p>The symbol table is emitted in
+<samp>lto-streamer-out.cc</samp>:<code>produce_symtab</code>.
+</p>
+
+</li><li> Global declarations and types (<code>.gnu.lto_.decls</code>)
+
+<p>This section contains an intermediate language dump of all
+declarations and types required to represent the callgraph, static
+variables and top-level debug info.
+</p>
+<p>The contents of this section are emitted in
+<samp>lto-streamer-out.cc</samp>:<code>produce_asm_for_decls</code>. Types and
+symbols are emitted in a topological order that preserves the sharing
+of pointers when the file is read back in
+(<samp>lto.cc</samp>:<code>read_cgraph_and_symbols</code>).
+</p>
+
+</li><li> The callgraph (<code>.gnu.lto_.cgraph</code>)
+
+<p>This section contains the basic data structure used by the GCC
+inter-procedural optimization infrastructure. This section stores an
+annotated multi-graph which represents the functions and call sites as
+well as the variables, aliases and top-level <code>asm</code> statements.
+</p>
+<p>This section is emitted in
+<samp>lto-streamer-out.cc</samp>:<code>output_cgraph</code> and read in
+<samp>lto-cgraph.cc</samp>:<code>input_cgraph</code>.
+</p>
+
+</li><li> IPA references (<code>.gnu.lto_.refs</code>)
+
+<p>This section contains references between function and static
+variables. It is emitted by <samp>lto-cgraph.cc</samp>:<code>output_refs</code>
+and read by <samp>lto-cgraph.cc</samp>:<code>input_refs</code>.
+</p>
+
+</li><li> Function bodies (<code>.gnu.lto_.function_body.&lt;name&gt;</code>)
+
+<p>This section contains function bodies in the intermediate language
+representation. Every function body is in a separate section to allow
+copying of the section independently to different object files or
+reading the function on demand.
+</p>
+<p>Functions are emitted in
+<samp>lto-streamer-out.cc</samp>:<code>output_function</code> and read in
+<samp>lto-streamer-in.cc</samp>:<code>input_function</code>.
+</p>
+
+</li><li> Static variable initializers (<code>.gnu.lto_.vars</code>)
+
+<p>This section contains all the symbols in the global variable pool. It
+is emitted by <samp>lto-cgraph.cc</samp>:<code>output_varpool</code> and read in
+<samp>lto-cgraph.cc</samp>:<code>input_cgraph</code>.
+</p>
+</li><li> Summaries and optimization summaries used by IPA passes
+(<code>.gnu.lto_.&lt;xxx&gt;</code>, where <code>&lt;xxx&gt;</code> is one of <code>jmpfuncs</code>,
+<code>pureconst</code> or <code>reference</code>)
+
+<p>These sections are used by IPA passes that need to emit summary
+information during LTO generation to be read and aggregated at
+link time. Each pass is responsible for implementing two pass manager
+hooks: one for writing the summary and another for reading it in. The
+format of these sections is entirely up to each individual pass. The
+only requirement is that the writer and reader hooks agree on the
+format.
+</p></li></ul>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="IPA.html#IPA" accesskey="n" rel="next">IPA</a>, Previous: <a href="LTO-Overview.html#LTO-Overview" accesskey="p" rel="previous">LTO Overview</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/LTO.html b/share/doc/gccint/LTO.html
new file mode 100644
index 0000000..c6eae8b
--- /dev/null
+++ b/share/doc/gccint/LTO.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: LTO</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: LTO">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: LTO">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="LTO-Overview.html#LTO-Overview" rel="next" title="LTO Overview">
+<link href="Plugins-building.html#Plugins-building" rel="previous" title="Plugins building">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="LTO"></a>
+<div class="header">
+<p>
+Next: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="n" rel="next">Match and Simplify</a>, Previous: <a href="Plugins.html#Plugins" accesskey="p" rel="previous">Plugins</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Link-Time-Optimization"></a>
+<h2 class="chapter">25 Link Time Optimization</h2>
+<a name="index-lto"></a>
+<a name="index-whopr"></a>
+<a name="index-wpa"></a>
+<a name="index-ltrans"></a>
+
+<p>Link Time Optimization (LTO) gives GCC the capability of
+dumping its internal representation (GIMPLE) to disk,
+so that all the different compilation units that make up
+a single executable can be optimized as a single module.
+This expands the scope of inter-procedural optimizations
+to encompass the whole program (or, rather, everything
+that is visible at link time).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="LTO-Overview.html#LTO-Overview" accesskey="1">LTO Overview</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overview of LTO.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="LTO-object-file-layout.html#LTO-object-file-layout" accesskey="2">LTO object file layout</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">LTO file sections in ELF.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="IPA.html#IPA" accesskey="3">IPA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using summary information in IPA passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="WHOPR.html#WHOPR" accesskey="4">WHOPR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Whole program assumptions,
+ linker plugin and symbol visibilities.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Internal-flags.html#Internal-flags" accesskey="5">Internal flags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Internal flags controlling <code>lto1</code>.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Label-Output.html b/share/doc/gccint/Label-Output.html
new file mode 100644
index 0000000..9829bb8
--- /dev/null
+++ b/share/doc/gccint/Label-Output.html
@@ -0,0 +1,671 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Label Output</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Label Output">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Label Output">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Initialization.html#Initialization" rel="next" title="Initialization">
+<link href="Uninitialized-Data.html#Uninitialized-Data" rel="previous" title="Uninitialized Data">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Label-Output"></a>
+<div class="header">
+<p>
+Next: <a href="Initialization.html#Initialization" accesskey="n" rel="next">Initialization</a>, Previous: <a href="Uninitialized-Data.html#Uninitialized-Data" accesskey="p" rel="previous">Uninitialized Data</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-and-Generation-of-Labels"></a>
+<h4 class="subsection">18.20.4 Output and Generation of Labels</h4>
+
+<p>This is about outputting labels.
+</p>
+<a name="index-assemble_005fname"></a>
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fLABEL"></a>Macro: <strong>ASM_OUTPUT_LABEL</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> the assembler definition of a label named <var>name</var>.
+Use the expression <code>assemble_name (<var>stream</var>, <var>name</var>)</code> to
+output the name itself; before and after that, output the additional
+assembler syntax for defining the name, and a newline. A default
+definition of this macro is provided which is correct for most systems.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fFUNCTION_005fLABEL"></a>Macro: <strong>ASM_OUTPUT_FUNCTION_LABEL</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> the assembler definition of a label named <var>name</var> of
+a function.
+Use the expression <code>assemble_name (<var>stream</var>, <var>name</var>)</code> to
+output the name itself; before and after that, output the additional
+assembler syntax for defining the name, and a newline. A default
+definition of this macro is provided which is correct for most systems.
+</p>
+<p>If this macro is not defined, then the function name is defined in the
+usual manner as a label (by means of <code>ASM_OUTPUT_LABEL</code>).
+</p></dd></dl>
+
+<a name="index-assemble_005fname_005fraw"></a>
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fINTERNAL_005fLABEL"></a>Macro: <strong>ASM_OUTPUT_INTERNAL_LABEL</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>Identical to <code>ASM_OUTPUT_LABEL</code>, except that <var>name</var> is known
+to refer to a compiler-generated label. The default definition uses
+<code>assemble_name_raw</code>, which is like <code>assemble_name</code> except
+that it is more efficient.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SIZE_005fASM_005fOP"></a>Macro: <strong>SIZE_ASM_OP</strong></dt>
+<dd><p>A C string containing the appropriate assembler directive to specify the
+size of a symbol, without any arguments. On systems that use ELF, the
+default (in <samp>config/elfos.h</samp>) is &lsquo;<samp>&quot;\t.size\t&quot;</samp>&rsquo;; on other
+systems, the default is not to define this macro.
+</p>
+<p>Define this macro only if it is correct to use the default definitions
+of <code>ASM_OUTPUT_SIZE_DIRECTIVE</code> and <code>ASM_OUTPUT_MEASURED_SIZE</code>
+for your system. If you need your own custom definitions of those
+macros, or if you do not need explicit symbol sizes at all, do not
+define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fSIZE_005fDIRECTIVE"></a>Macro: <strong>ASM_OUTPUT_SIZE_DIRECTIVE</strong> <em>(<var>stream</var>, <var>name</var>, <var>size</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> a directive telling the assembler that the size of the
+symbol <var>name</var> is <var>size</var>. <var>size</var> is a <code>HOST_WIDE_INT</code>.
+If you define <code>SIZE_ASM_OP</code>, a default definition of this macro is
+provided.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fMEASURED_005fSIZE"></a>Macro: <strong>ASM_OUTPUT_MEASURED_SIZE</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> a directive telling the assembler to calculate the size of
+the symbol <var>name</var> by subtracting its address from the current
+address.
+</p>
+<p>If you define <code>SIZE_ASM_OP</code>, a default definition of this macro is
+provided. The default assumes that the assembler recognizes a special
+&lsquo;<samp>.</samp>&rsquo; symbol as referring to the current address, and can calculate
+the difference between this and another symbol. If your assembler does
+not recognize &lsquo;<samp>.</samp>&rsquo; or cannot do calculations with it, you will need
+to redefine <code>ASM_OUTPUT_MEASURED_SIZE</code> to use some other technique.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NO_005fDOLLAR_005fIN_005fLABEL"></a>Macro: <strong>NO_DOLLAR_IN_LABEL</strong></dt>
+<dd><p>Define this macro if the assembler does not accept the character
+&lsquo;<samp>$</samp>&rsquo; in label names. By default constructors and destructors in
+G++ have &lsquo;<samp>$</samp>&rsquo; in the identifiers. If this macro is defined,
+&lsquo;<samp>.</samp>&rsquo; is used instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NO_005fDOT_005fIN_005fLABEL"></a>Macro: <strong>NO_DOT_IN_LABEL</strong></dt>
+<dd><p>Define this macro if the assembler does not accept the character
+&lsquo;<samp>.</samp>&rsquo; in label names. By default constructors and destructors in G++
+have names that use &lsquo;<samp>.</samp>&rsquo;. If this macro is defined, these names
+are rewritten to avoid &lsquo;<samp>.</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TYPE_005fASM_005fOP"></a>Macro: <strong>TYPE_ASM_OP</strong></dt>
+<dd><p>A C string containing the appropriate assembler directive to specify the
+type of a symbol, without any arguments. On systems that use ELF, the
+default (in <samp>config/elfos.h</samp>) is &lsquo;<samp>&quot;\t.type\t&quot;</samp>&rsquo;; on other
+systems, the default is not to define this macro.
+</p>
+<p>Define this macro only if it is correct to use the default definition of
+<code>ASM_OUTPUT_TYPE_DIRECTIVE</code> for your system. If you need your own
+custom definition of this macro, or if you do not need explicit symbol
+types at all, do not define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TYPE_005fOPERAND_005fFMT"></a>Macro: <strong>TYPE_OPERAND_FMT</strong></dt>
+<dd><p>A C string which specifies (using <code>printf</code> syntax) the format of
+the second operand to <code>TYPE_ASM_OP</code>. On systems that use ELF, the
+default (in <samp>config/elfos.h</samp>) is &lsquo;<samp>&quot;@%s&quot;</samp>&rsquo;; on other systems,
+the default is not to define this macro.
+</p>
+<p>Define this macro only if it is correct to use the default definition of
+<code>ASM_OUTPUT_TYPE_DIRECTIVE</code> for your system. If you need your own
+custom definition of this macro, or if you do not need explicit symbol
+types at all, do not define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fTYPE_005fDIRECTIVE"></a>Macro: <strong>ASM_OUTPUT_TYPE_DIRECTIVE</strong> <em>(<var>stream</var>, <var>type</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> a directive telling the assembler that the type of the
+symbol <var>name</var> is <var>type</var>. <var>type</var> is a C string; currently,
+that string is always either &lsquo;<samp>&quot;function&quot;</samp>&rsquo; or &lsquo;<samp>&quot;object&quot;</samp>&rsquo;, but
+you should not count on this.
+</p>
+<p>If you define <code>TYPE_ASM_OP</code> and <code>TYPE_OPERAND_FMT</code>, a default
+definition of this macro is provided.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fFUNCTION_005fNAME"></a>Macro: <strong>ASM_DECLARE_FUNCTION_NAME</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the name <var>name</var> of a
+function which is being defined. This macro is responsible for
+outputting the label definition (perhaps using
+<code>ASM_OUTPUT_FUNCTION_LABEL</code>). The argument <var>decl</var> is the
+<code>FUNCTION_DECL</code> tree node representing the function.
+</p>
+<p>If this macro is not defined, then the function name is defined in the
+usual manner as a label (by means of <code>ASM_OUTPUT_FUNCTION_LABEL</code>).
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_TYPE_DIRECTIVE</code> in the definition
+of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fFUNCTION_005fSIZE"></a>Macro: <strong>ASM_DECLARE_FUNCTION_SIZE</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the size of a function
+which is being defined. The argument <var>name</var> is the name of the
+function. The argument <var>decl</var> is the <code>FUNCTION_DECL</code> tree node
+representing the function.
+</p>
+<p>If this macro is not defined, then the function size is not defined.
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_MEASURED_SIZE</code> in the definition
+of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fCOLD_005fFUNCTION_005fNAME"></a>Macro: <strong>ASM_DECLARE_COLD_FUNCTION_NAME</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the name <var>name</var> of a
+cold function partition which is being defined. This macro is responsible
+for outputting the label definition (perhaps using
+<code>ASM_OUTPUT_FUNCTION_LABEL</code>). The argument <var>decl</var> is the
+<code>FUNCTION_DECL</code> tree node representing the function.
+</p>
+<p>If this macro is not defined, then the cold partition name is defined in the
+usual manner as a label (by means of <code>ASM_OUTPUT_LABEL</code>).
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_TYPE_DIRECTIVE</code> in the definition
+of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fCOLD_005fFUNCTION_005fSIZE"></a>Macro: <strong>ASM_DECLARE_COLD_FUNCTION_SIZE</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the size of a cold function
+partition which is being defined. The argument <var>name</var> is the name of the
+cold partition of the function. The argument <var>decl</var> is the
+<code>FUNCTION_DECL</code> tree node representing the function.
+</p>
+<p>If this macro is not defined, then the partition size is not defined.
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_MEASURED_SIZE</code> in the definition
+of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fOBJECT_005fNAME"></a>Macro: <strong>ASM_DECLARE_OBJECT_NAME</strong> <em>(<var>stream</var>, <var>name</var>, <var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the name <var>name</var> of an
+initialized variable which is being defined. This macro must output the
+label definition (perhaps using <code>ASM_OUTPUT_LABEL</code>). The argument
+<var>decl</var> is the <code>VAR_DECL</code> tree node representing the variable.
+</p>
+<p>If this macro is not defined, then the variable name is defined in the
+usual manner as a label (by means of <code>ASM_OUTPUT_LABEL</code>).
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_TYPE_DIRECTIVE</code> and/or
+<code>ASM_OUTPUT_SIZE_DIRECTIVE</code> in the definition of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fDECLARE_005fCONSTANT_005fNAME"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_DECLARE_CONSTANT_NAME</strong> <em>(FILE *<var>file</var>, const char *<var>name</var>, const_tree <var>expr</var>, HOST_WIDE_INT <var>size</var>)</em></dt>
+<dd><p>A target hook to output to the stdio stream <var>file</var> any text necessary
+for declaring the name <var>name</var> of a constant which is being defined. This
+target hook is responsible for outputting the label definition (perhaps using
+<code>assemble_label</code>). The argument <var>exp</var> is the value of the constant,
+and <var>size</var> is the size of the constant in bytes. The <var>name</var>
+will be an internal label.
+</p>
+<p>The default version of this target hook, define the <var>name</var> in the
+usual manner as a label (by means of <code>assemble_label</code>).
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_TYPE_DIRECTIVE</code> in this target hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fDECLARE_005fREGISTER_005fGLOBAL"></a>Macro: <strong>ASM_DECLARE_REGISTER_GLOBAL</strong> <em>(<var>stream</var>, <var>decl</var>, <var>regno</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for claiming a register <var>regno</var>
+for a global variable <var>decl</var> with name <var>name</var>.
+</p>
+<p>If you don&rsquo;t define this macro, that is equivalent to defining it to do
+nothing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fFINISH_005fDECLARE_005fOBJECT"></a>Macro: <strong>ASM_FINISH_DECLARE_OBJECT</strong> <em>(<var>stream</var>, <var>decl</var>, <var>toplevel</var>, <var>atend</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to finish up declaring a variable name
+once the compiler has processed its initializer fully and thus has had a
+chance to determine the size of an array when controlled by an
+initializer. This is used on systems where it&rsquo;s necessary to declare
+something about the size of the object.
+</p>
+<p>If you don&rsquo;t define this macro, that is equivalent to defining it to do
+nothing.
+</p>
+<p>You may wish to use <code>ASM_OUTPUT_SIZE_DIRECTIVE</code> and/or
+<code>ASM_OUTPUT_MEASURED_SIZE</code> in the definition of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fGLOBALIZE_005fLABEL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_GLOBALIZE_LABEL</strong> <em>(FILE *<var>stream</var>, const char *<var>name</var>)</em></dt>
+<dd><p>This target hook is a function to output to the stdio stream
+<var>stream</var> some commands that will make the label <var>name</var> global;
+that is, available for reference from other files.
+</p>
+<p>The default implementation relies on a proper definition of
+<code>GLOBAL_ASM_OP</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fGLOBALIZE_005fDECL_005fNAME"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_GLOBALIZE_DECL_NAME</strong> <em>(FILE *<var>stream</var>, tree <var>decl</var>)</em></dt>
+<dd><p>This target hook is a function to output to the stdio stream
+<var>stream</var> some commands that will make the name associated with <var>decl</var>
+global; that is, available for reference from other files.
+</p>
+<p>The default implementation uses the TARGET_ASM_GLOBALIZE_LABEL target hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fASSEMBLE_005fUNDEFINED_005fDECL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_ASSEMBLE_UNDEFINED_DECL</strong> <em>(FILE *<var>stream</var>, const char *<var>name</var>, const_tree <var>decl</var>)</em></dt>
+<dd><p>This target hook is a function to output to the stdio stream
+<var>stream</var> some commands that will declare the name associated with
+<var>decl</var> which is not defined in the current translation unit. Most
+assemblers do not require anything to be output in this case.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fWEAKEN_005fLABEL"></a>Macro: <strong>ASM_WEAKEN_LABEL</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> some commands that will make the label <var>name</var> weak;
+that is, available for reference from other files but only used if
+no other definition is available. Use the expression
+<code>assemble_name (<var>stream</var>, <var>name</var>)</code> to output the name
+itself; before and after that, output the additional assembler syntax
+for making that name weak, and a newline.
+</p>
+<p>If you don&rsquo;t define this macro or <code>ASM_WEAKEN_DECL</code>, GCC will not
+support weak symbols and you should not define the <code>SUPPORTS_WEAK</code>
+macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fWEAKEN_005fDECL"></a>Macro: <strong>ASM_WEAKEN_DECL</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>, <var>value</var>)</em></dt>
+<dd><p>Combines (and replaces) the function of <code>ASM_WEAKEN_LABEL</code> and
+<code>ASM_OUTPUT_WEAK_ALIAS</code>, allowing access to the associated function
+or variable decl. If <var>value</var> is not <code>NULL</code>, this C statement
+should output to the stdio stream <var>stream</var> assembler code which
+defines (equates) the weak symbol <var>name</var> to have the value
+<var>value</var>. If <var>value</var> is <code>NULL</code>, it should output commands
+to make <var>name</var> weak.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fWEAKREF"></a>Macro: <strong>ASM_OUTPUT_WEAKREF</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>, <var>value</var>)</em></dt>
+<dd><p>Outputs a directive that enables <var>name</var> to be used to refer to
+symbol <var>value</var> with weak-symbol semantics. <code>decl</code> is the
+declaration of <code>name</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SUPPORTS_005fWEAK"></a>Macro: <strong>SUPPORTS_WEAK</strong></dt>
+<dd><p>A preprocessor constant expression which evaluates to true if the target
+supports weak symbols.
+</p>
+<p>If you don&rsquo;t define this macro, <samp>defaults.h</samp> provides a default
+definition. If either <code>ASM_WEAKEN_LABEL</code> or <code>ASM_WEAKEN_DECL</code>
+is defined, the default definition is &lsquo;<samp>1</samp>&rsquo;; otherwise, it is &lsquo;<samp>0</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSUPPORTS_005fWEAK"></a>Macro: <strong>TARGET_SUPPORTS_WEAK</strong></dt>
+<dd><p>A C expression which evaluates to true if the target supports weak symbols.
+</p>
+<p>If you don&rsquo;t define this macro, <samp>defaults.h</samp> provides a default
+definition. The default definition is &lsquo;<samp>(SUPPORTS_WEAK)</samp>&rsquo;. Define
+this macro if you want to control weak symbol support with a compiler
+flag such as <samp>-melf</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAKE_005fDECL_005fONE_005fONLY"></a>Macro: <strong>MAKE_DECL_ONE_ONLY</strong> <em>(<var>decl</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to mark <var>decl</var> to be emitted as a
+public symbol such that extra copies in multiple translation units will
+be discarded by the linker. Define this macro if your object file
+format provides support for this concept, such as the &lsquo;<samp>COMDAT</samp>&rsquo;
+section flags in the Microsoft Windows PE/COFF format, and this support
+requires changes to <var>decl</var>, such as putting it in a separate section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SUPPORTS_005fONE_005fONLY"></a>Macro: <strong>SUPPORTS_ONE_ONLY</strong></dt>
+<dd><p>A C expression which evaluates to true if the target supports one-only
+semantics.
+</p>
+<p>If you don&rsquo;t define this macro, <samp>varasm.cc</samp> provides a default
+definition. If <code>MAKE_DECL_ONE_ONLY</code> is defined, the default
+definition is &lsquo;<samp>1</samp>&rsquo;; otherwise, it is &lsquo;<samp>0</samp>&rsquo;. Define this macro if
+you want to control one-only symbol support with a compiler flag, or if
+setting the <code>DECL_ONE_ONLY</code> flag is enough to mark a declaration to
+be emitted as one-only.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fASSEMBLE_005fVISIBILITY"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_ASSEMBLE_VISIBILITY</strong> <em>(tree <var>decl</var>, int <var>visibility</var>)</em></dt>
+<dd><p>This target hook is a function to output to <var>asm_out_file</var> some
+commands that will make the symbol(s) associated with <var>decl</var> have
+hidden, protected or internal visibility as specified by <var>visibility</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fWEAK_005fNOT_005fIN_005fARCHIVE_005fTOC"></a>Macro: <strong>TARGET_WEAK_NOT_IN_ARCHIVE_TOC</strong></dt>
+<dd><p>A C expression that evaluates to true if the target&rsquo;s linker expects
+that weak symbols do not appear in a static archive&rsquo;s table of contents.
+The default is <code>0</code>.
+</p>
+<p>Leaving weak symbols out of an archive&rsquo;s table of contents means that,
+if a symbol will only have a definition in one translation unit and
+will have undefined references from other translation units, that
+symbol should not be weak. Defining this macro to be nonzero will
+thus have the effect that certain symbols that would normally be weak
+(explicit template instantiations, and vtables for polymorphic classes
+with noninline key methods) will instead be nonweak.
+</p>
+<p>The C++ ABI requires this macro to be zero. Define this macro for
+targets where full C++ ABI compliance is impossible and where linker
+restrictions require weak symbols to be left out of a static archive&rsquo;s
+table of contents.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fEXTERNAL"></a>Macro: <strong>ASM_OUTPUT_EXTERNAL</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> any text necessary for declaring the name of an external
+symbol named <var>name</var> which is referenced in this compilation but
+not defined. The value of <var>decl</var> is the tree node for the
+declaration.
+</p>
+<p>This macro need not be defined if it does not need to output anything.
+The GNU assembler and most Unix assemblers don&rsquo;t require anything.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fEXTERNAL_005fLIBCALL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_EXTERNAL_LIBCALL</strong> <em>(rtx <var>symref</var>)</em></dt>
+<dd><p>This target hook is a function to output to <var>asm_out_file</var> an assembler
+pseudo-op to declare a library function name external. The name of the
+library function is given by <var>symref</var>, which is a <code>symbol_ref</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fMARK_005fDECL_005fPRESERVED"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_MARK_DECL_PRESERVED</strong> <em>(const char *<var>symbol</var>)</em></dt>
+<dd><p>This target hook is a function to output to <var>asm_out_file</var> an assembler
+directive to annotate <var>symbol</var> as used. The Darwin target uses the
+.no_dead_code_strip directive.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fLABELREF"></a>Macro: <strong>ASM_OUTPUT_LABELREF</strong> <em>(<var>stream</var>, <var>name</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> a reference in assembler syntax to a label named
+<var>name</var>. This should add &lsquo;<samp>_</samp>&rsquo; to the front of the name, if that
+is customary on your operating system, as it is in most Berkeley Unix
+systems. This macro is used in <code>assemble_name</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMANGLE_005fASSEMBLER_005fNAME"></a>Target Hook: <em>tree</em> <strong>TARGET_MANGLE_ASSEMBLER_NAME</strong> <em>(const char *<var>name</var>)</em></dt>
+<dd><p>Given a symbol <var>name</var>, perform same mangling as <code>varasm.cc</code>&rsquo;s
+<code>assemble_name</code>, but in memory rather than to a file stream, returning
+result as an <code>IDENTIFIER_NODE</code>. Required for correct LTO symtabs. The
+default implementation calls the <code>TARGET_STRIP_NAME_ENCODING</code> hook and
+then prepends the <code>USER_LABEL_PREFIX</code>, if any.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fSYMBOL_005fREF"></a>Macro: <strong>ASM_OUTPUT_SYMBOL_REF</strong> <em>(<var>stream</var>, <var>sym</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output a reference to
+<code>SYMBOL_REF</code> <var>sym</var>. If not defined, <code>assemble_name</code>
+will be used to output the name of the symbol. This macro may be used
+to modify the way a symbol is referenced depending on information
+encoded by <code>TARGET_ENCODE_SECTION_INFO</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fLABEL_005fREF"></a>Macro: <strong>ASM_OUTPUT_LABEL_REF</strong> <em>(<var>stream</var>, <var>buf</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output a reference to <var>buf</var>, the
+result of <code>ASM_GENERATE_INTERNAL_LABEL</code>. If not defined,
+<code>assemble_name</code> will be used to output the name of the symbol.
+This macro is not used by <code>output_asm_label</code>, or the <code>%l</code>
+specifier that calls it; the intention is that this macro should be set
+when it is necessary to output a label differently when its address is
+being taken.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fINTERNAL_005fLABEL"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_INTERNAL_LABEL</strong> <em>(FILE *<var>stream</var>, const char *<var>prefix</var>, unsigned long <var>labelno</var>)</em></dt>
+<dd><p>A function to output to the stdio stream <var>stream</var> a label whose
+name is made from the string <var>prefix</var> and the number <var>labelno</var>.
+</p>
+<p>It is absolutely essential that these labels be distinct from the labels
+used for user-level functions and variables. Otherwise, certain programs
+will have name conflicts with internal labels.
+</p>
+<p>It is desirable to exclude internal labels from the symbol table of the
+object file. Most assemblers have a naming convention for labels that
+should be excluded; on many systems, the letter &lsquo;<samp>L</samp>&rsquo; at the
+beginning of a label has this effect. You should find out what
+convention your system uses, and follow it.
+</p>
+<p>The default version of this function utilizes <code>ASM_GENERATE_INTERNAL_LABEL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDEBUG_005fLABEL"></a>Macro: <strong>ASM_OUTPUT_DEBUG_LABEL</strong> <em>(<var>stream</var>, <var>prefix</var>, <var>num</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> a debug info
+label whose name is made from the string <var>prefix</var> and the number
+<var>num</var>. This is useful for VLIW targets, where debug info labels
+may need to be treated differently than branch target labels. On some
+systems, branch target labels must be at the beginning of instruction
+bundles, but debug info labels can occur in the middle of instruction
+bundles.
+</p>
+<p>If this macro is not defined, then <code>(*targetm.asm_out.internal_label)</code> will be
+used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fGENERATE_005fINTERNAL_005fLABEL"></a>Macro: <strong>ASM_GENERATE_INTERNAL_LABEL</strong> <em>(<var>string</var>, <var>prefix</var>, <var>num</var>)</em></dt>
+<dd><p>A C statement to store into the string <var>string</var> a label whose name
+is made from the string <var>prefix</var> and the number <var>num</var>.
+</p>
+<p>This string, when output subsequently by <code>assemble_name</code>, should
+produce the output that <code>(*targetm.asm_out.internal_label)</code> would produce
+with the same <var>prefix</var> and <var>num</var>.
+</p>
+<p>If the string begins with &lsquo;<samp>*</samp>&rsquo;, then <code>assemble_name</code> will
+output the rest of the string unchanged. It is often convenient for
+<code>ASM_GENERATE_INTERNAL_LABEL</code> to use &lsquo;<samp>*</samp>&rsquo; in this way. If the
+string doesn&rsquo;t start with &lsquo;<samp>*</samp>&rsquo;, then <code>ASM_OUTPUT_LABELREF</code> gets
+to output the string, and may change it. (Of course,
+<code>ASM_OUTPUT_LABELREF</code> is also part of your machine description, so
+you should know what it does on your machine.)
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fFORMAT_005fPRIVATE_005fNAME"></a>Macro: <strong>ASM_FORMAT_PRIVATE_NAME</strong> <em>(<var>outvar</var>, <var>name</var>, <var>number</var>)</em></dt>
+<dd><p>A C expression to assign to <var>outvar</var> (which is a variable of type
+<code>char *</code>) a newly allocated string made from the string
+<var>name</var> and the number <var>number</var>, with some suitable punctuation
+added. Use <code>alloca</code> to get space for the string.
+</p>
+<p>The string will be used as an argument to <code>ASM_OUTPUT_LABELREF</code> to
+produce an assembler label for an internal static variable whose name is
+<var>name</var>. Therefore, the string must be such as to result in valid
+assembler code. The argument <var>number</var> is different each time this
+macro is executed; it prevents conflicts between similarly-named
+internal static variables in different scopes.
+</p>
+<p>Ideally this string should not be a valid C identifier, to prevent any
+conflict with the user&rsquo;s own symbols. Most assemblers allow periods
+or percent signs in assembler symbols; putting at least one of these
+between the name and the number will suffice.
+</p>
+<p>If this macro is not defined, a default definition will be provided
+which is correct for most systems.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDEF"></a>Macro: <strong>ASM_OUTPUT_DEF</strong> <em>(<var>stream</var>, <var>name</var>, <var>value</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> assembler code
+which defines (equates) the symbol <var>name</var> to have the value <var>value</var>.
+</p>
+<a name="index-SET_005fASM_005fOP"></a>
+<p>If <code>SET_ASM_OP</code> is defined, a default definition is provided which is
+correct for most systems.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fDEF_005fFROM_005fDECLS"></a>Macro: <strong>ASM_OUTPUT_DEF_FROM_DECLS</strong> <em>(<var>stream</var>, <var>decl_of_name</var>, <var>decl_of_value</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> assembler code
+which defines (equates) the symbol whose tree node is <var>decl_of_name</var>
+to have the value of the tree node <var>decl_of_value</var>. This macro will
+be used in preference to &lsquo;<samp>ASM_OUTPUT_DEF</samp>&rsquo; if it is defined and if
+the tree nodes are available.
+</p>
+<a name="index-SET_005fASM_005fOP-1"></a>
+<p>If <code>SET_ASM_OP</code> is defined, a default definition is provided which is
+correct for most systems.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDEFERRED_005fOUTPUT_005fDEFS"></a>Macro: <strong>TARGET_DEFERRED_OUTPUT_DEFS</strong> <em>(<var>decl_of_name</var>, <var>decl_of_value</var>)</em></dt>
+<dd><p>A C statement that evaluates to true if the assembler code which defines
+(equates) the symbol whose tree node is <var>decl_of_name</var> to have the value
+of the tree node <var>decl_of_value</var> should be emitted near the end of the
+current compilation unit. The default is to not defer output of defines.
+This macro affects defines output by &lsquo;<samp>ASM_OUTPUT_DEF</samp>&rsquo; and
+&lsquo;<samp>ASM_OUTPUT_DEF_FROM_DECLS</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fWEAK_005fALIAS"></a>Macro: <strong>ASM_OUTPUT_WEAK_ALIAS</strong> <em>(<var>stream</var>, <var>name</var>, <var>value</var>)</em></dt>
+<dd><p>A C statement to output to the stdio stream <var>stream</var> assembler code
+which defines (equates) the weak symbol <var>name</var> to have the value
+<var>value</var>. If <var>value</var> is <code>NULL</code>, it defines <var>name</var> as
+an undefined weak symbol.
+</p>
+<p>Define this macro if the target only supports weak aliases; define
+<code>ASM_OUTPUT_DEF</code> instead if possible.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OBJC_005fGEN_005fMETHOD_005fLABEL"></a>Macro: <strong>OBJC_GEN_METHOD_LABEL</strong> <em>(<var>buf</var>, <var>is_inst</var>, <var>class_name</var>, <var>cat_name</var>, <var>sel_name</var>)</em></dt>
+<dd><p>Define this macro to override the default assembler names used for
+Objective-C methods.
+</p>
+<p>The default name is a unique method number followed by the name of the
+class (e.g. &lsquo;<samp>_1_Foo</samp>&rsquo;). For methods in categories, the name of
+the category is also included in the assembler name (e.g.
+&lsquo;<samp>_1_Foo_Bar</samp>&rsquo;).
+</p>
+<p>These names are safe on most systems, but make debugging difficult since
+the method&rsquo;s selector is not present in the name. Therefore, particular
+systems define other ways of computing names.
+</p>
+<p><var>buf</var> is an expression of type <code>char *</code> which gives you a
+buffer in which to store the name; its length is as long as
+<var>class_name</var>, <var>cat_name</var> and <var>sel_name</var> put together, plus
+50 characters extra.
+</p>
+<p>The argument <var>is_inst</var> specifies whether the method is an instance
+method or a class method; <var>class_name</var> is the name of the class;
+<var>cat_name</var> is the name of the category (or <code>NULL</code> if the method is not
+in a category); and <var>sel_name</var> is the name of the selector.
+</p>
+<p>On systems where the assembler can handle quoted names, you can use this
+macro to provide more human-readable names.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Initialization.html#Initialization" accesskey="n" rel="next">Initialization</a>, Previous: <a href="Uninitialized-Data.html#Uninitialized-Data" accesskey="p" rel="previous">Uninitialized Data</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Language_002ddependent-trees.html b/share/doc/gccint/Language_002ddependent-trees.html
new file mode 100644
index 0000000..610c666
--- /dev/null
+++ b/share/doc/gccint/Language_002ddependent-trees.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Language-dependent trees</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Language-dependent trees">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Language-dependent trees">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="next" title="C and C++ Trees">
+<link href="Function-Properties.html#Function-Properties" rel="previous" title="Function Properties">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Language_002ddependent-trees"></a>
+<div class="header">
+<p>
+Next: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="n" rel="next">C and C++ Trees</a>, Previous: <a href="Functions.html#Functions" accesskey="p" rel="previous">Functions</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Language_002ddependent-trees-1"></a>
+<h3 class="section">11.9 Language-dependent trees</h3>
+<a name="index-language_002ddependent-trees"></a>
+
+<p>Front ends may wish to keep some state associated with various GENERIC
+trees while parsing. To support this, trees provide a set of flags
+that may be used by the front end. They are accessed using
+<code>TREE_LANG_FLAG_n</code> where &lsquo;<samp>n</samp>&rsquo; is currently 0 through 6.
+</p>
+<p>If necessary, a front end can use some language-dependent tree
+codes in its GENERIC representation, so long as it provides a
+hook for converting them to GIMPLE and doesn&rsquo;t expect them to
+work with any (hypothetical) optimizers that run before the
+conversion to GIMPLE. The intermediate representation used while
+parsing C and C++ looks very little like GENERIC, but the C and
+C++ gimplifier hooks are perfectly happy to take it as input and
+spit out GIMPLE.
+</p>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Languages.html b/share/doc/gccint/Languages.html
new file mode 100644
index 0000000..21fb0ac
--- /dev/null
+++ b/share/doc/gccint/Languages.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Languages</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Languages">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Languages">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Source-Tree.html#Source-Tree" rel="next" title="Source Tree">
+<link href="Miscellaneous-routines.html#Miscellaneous-routines" rel="previous" title="Miscellaneous routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Languages"></a>
+<div class="header">
+<p>
+Next: <a href="Source-Tree.html#Source-Tree" accesskey="n" rel="next">Source Tree</a>, Previous: <a href="Libgcc.html#Libgcc" accesskey="p" rel="previous">Libgcc</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Language-Front-Ends-in-GCC"></a>
+<h2 class="chapter">5 Language Front Ends in GCC</h2>
+
+<p>The interface to front ends for languages in GCC, and in particular
+the <code>tree</code> structure (see <a href="GENERIC.html#GENERIC">GENERIC</a>), was initially designed for
+C, and many aspects of it are still somewhat biased towards C and
+C-like languages. It is, however, reasonably well suited to other
+procedural languages, and front ends for many such languages have been
+written for GCC.
+</p>
+<p>Writing a compiler as a front end for GCC, rather than compiling
+directly to assembler or generating C code which is then compiled by
+GCC, has several advantages:
+</p>
+<ul>
+<li> GCC front ends benefit from the support for many different
+target machines already present in GCC.
+</li><li> GCC front ends benefit from all the optimizations in GCC. Some
+of these, such as alias analysis, may work better when GCC is
+compiling directly from source code than when it is compiling from
+generated C code.
+</li><li> Better debugging information is generated when compiling
+directly from source code than when going via intermediate generated C
+code.
+</li></ul>
+
+<p>Because of the advantages of writing a compiler as a GCC front end,
+GCC front ends have also been created for languages very different
+from those for which GCC was designed, such as the declarative
+logic/functional language Mercury. For these reasons, it may also be
+useful to implement compilers created for specialized purposes (for
+example, as part of a research project) as GCC front ends.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Late-IPA-passes.html b/share/doc/gccint/Late-IPA-passes.html
new file mode 100644
index 0000000..8b77ddb
--- /dev/null
+++ b/share/doc/gccint/Late-IPA-passes.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Late IPA passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Late IPA passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Late IPA passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="IPA-passes.html#IPA-passes" rel="up" title="IPA passes">
+<link href="Tree-SSA-passes.html#Tree-SSA-passes" rel="next" title="Tree SSA passes">
+<link href="Regular-IPA-passes.html#Regular-IPA-passes" rel="previous" title="Regular IPA passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Late-IPA-passes"></a>
+<div class="header">
+<p>
+Previous: <a href="Regular-IPA-passes.html#Regular-IPA-passes" accesskey="p" rel="previous">Regular IPA passes</a>, Up: <a href="IPA-passes.html#IPA-passes" accesskey="u" rel="up">IPA passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Late-IPA-passes-1"></a>
+<h4 class="subsection">9.4.3 Late IPA passes</h4>
+<a name="index-late-IPA-passes"></a>
+
+<p>Late IPA passes are simple IPA passes executed after
+the regular passes. In WHOPR mode the passes are executed after
+partitioning and thus see just parts of the compiled unit.
+</p>
+<ul>
+<li> Materialize all clones
+
+<p>Once all functions from compilation unit are in memory, produce all clones
+and update all calls. It is located in <samp>ipa.cc</samp> and is described by
+<code>pass_materialize_all_clones</code>.
+</p>
+</li><li> IPA points-to analysis
+
+<p>Points-to analysis; this is the same as the points-to-analysis pass
+run with the small IPA passes (see <a href="Small-IPA-passes.html#Small-IPA-passes">Small IPA passes</a>).
+</p>
+</li><li> OpenMP simd clone
+
+<p>This is the OpenMP constructs&rsquo; SIMD clone pass. It creates the appropriate
+SIMD clones for functions tagged as elemental SIMD functions.
+It is located in <samp>omp-simd-clone.cc</samp> and is described by
+<code>pass_omp_simd_clone</code>.
+</p>
+</li></ul>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Leaf-Functions.html b/share/doc/gccint/Leaf-Functions.html
new file mode 100644
index 0000000..09ac2f6
--- /dev/null
+++ b/share/doc/gccint/Leaf-Functions.html
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Leaf Functions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Leaf Functions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Leaf Functions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html#Registers" rel="up" title="Registers">
+<link href="Stack-Registers.html#Stack-Registers" rel="next" title="Stack Registers">
+<link href="Values-in-Registers.html#Values-in-Registers" rel="previous" title="Values in Registers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Leaf-Functions"></a>
+<div class="header">
+<p>
+Next: <a href="Stack-Registers.html#Stack-Registers" accesskey="n" rel="next">Stack Registers</a>, Previous: <a href="Values-in-Registers.html#Values-in-Registers" accesskey="p" rel="previous">Values in Registers</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Handling-Leaf-Functions"></a>
+<h4 class="subsection">18.7.4 Handling Leaf Functions</h4>
+
+<a name="index-leaf-functions"></a>
+<a name="index-functions_002c-leaf"></a>
+<p>On some machines, a leaf function (i.e., one which makes no calls) can run
+more efficiently if it does not make its own register window. Often this
+means it is required to receive its arguments in the registers where they
+are passed by the caller, instead of the registers where they would
+normally arrive.
+</p>
+<p>The special treatment for leaf functions generally applies only when
+other conditions are met; for example, often they may use only those
+registers for its own variables and temporaries. We use the term &ldquo;leaf
+function&rdquo; to mean a function that is suitable for this special
+handling, so that functions with no calls are not necessarily &ldquo;leaf
+functions&rdquo;.
+</p>
+<p>GCC assigns register numbers before it knows whether the function is
+suitable for leaf function treatment. So it needs to renumber the
+registers in order to output a leaf function. The following macros
+accomplish this.
+</p>
+<dl>
+<dt><a name="index-LEAF_005fREGISTERS"></a>Macro: <strong>LEAF_REGISTERS</strong></dt>
+<dd><p>Name of a char vector, indexed by hard register number, which
+contains 1 for a register that is allowable in a candidate for leaf
+function treatment.
+</p>
+<p>If leaf function treatment involves renumbering the registers, then the
+registers marked here should be the ones before renumbering&mdash;those that
+GCC would ordinarily allocate. The registers which will actually be
+used in the assembler code, after renumbering, should not be marked with 1
+in this vector.
+</p>
+<p>Define this macro only if the target machine offers a way to optimize
+the treatment of leaf functions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LEAF_005fREG_005fREMAP"></a>Macro: <strong>LEAF_REG_REMAP</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>A C expression whose value is the register number to which <var>regno</var>
+should be renumbered, when a function is treated as a leaf function.
+</p>
+<p>If <var>regno</var> is a register number which should not appear in a leaf
+function before renumbering, then the expression should yield -1, which
+will cause the compiler to abort.
+</p>
+<p>Define this macro only if the target machine offers a way to optimize the
+treatment of leaf functions, and registers need to be renumbered to do
+this.
+</p></dd></dl>
+
+<a name="index-current_005ffunction_005fis_005fleaf"></a>
+<a name="index-current_005ffunction_005fuses_005fonly_005fleaf_005fregs"></a>
+<p><code>TARGET_ASM_FUNCTION_PROLOGUE</code> and
+<code>TARGET_ASM_FUNCTION_EPILOGUE</code> must usually treat leaf functions
+specially. They can test the C variable <code>current_function_is_leaf</code>
+which is nonzero for leaf functions. <code>current_function_is_leaf</code> is
+set prior to local register allocation and is valid for the remaining
+compiler passes. They can also test the C variable
+<code>current_function_uses_only_leaf_regs</code> which is nonzero for leaf
+functions which only use leaf registers.
+<code>current_function_uses_only_leaf_regs</code> is valid after all passes
+that modify the instructions have been run and is only useful if
+<code>LEAF_REGISTERS</code> is defined.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack-Registers.html#Stack-Registers" accesskey="n" rel="next">Stack Registers</a>, Previous: <a href="Values-in-Registers.html#Values-in-Registers" accesskey="p" rel="previous">Values in Registers</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Libgcc.html b/share/doc/gccint/Libgcc.html
new file mode 100644
index 0000000..97ec8f4
--- /dev/null
+++ b/share/doc/gccint/Libgcc.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Libgcc</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Libgcc">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Libgcc">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Integer-library-routines.html#Integer-library-routines" rel="next" title="Integer library routines">
+<link href="Interface.html#Interface" rel="previous" title="Interface">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Libgcc"></a>
+<div class="header">
+<p>
+Next: <a href="Languages.html#Languages" accesskey="n" rel="next">Languages</a>, Previous: <a href="Interface.html#Interface" accesskey="p" rel="previous">Interface</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-GCC-low_002dlevel-runtime-library"></a>
+<h2 class="chapter">4 The GCC low-level runtime library</h2>
+
+<p>GCC provides a low-level runtime library, <samp>libgcc.a</samp> or
+<samp>libgcc_s.so.1</samp> on some platforms. GCC generates calls to
+routines in this library automatically, whenever it needs to perform
+some operation that is too complicated to emit inline code for.
+</p>
+<p>Most of the routines in <code>libgcc</code> handle arithmetic operations
+that the target processor cannot perform directly. This includes
+integer multiply and divide on some machines, and all floating-point
+and fixed-point operations on other machines. <code>libgcc</code> also includes
+routines for exception handling, and a handful of miscellaneous operations.
+</p>
+<p>Some of these routines can be defined in mostly machine-independent C.
+Others must be hand-written in assembly language for each processor
+that needs them.
+</p>
+<p>GCC will also generate calls to C library routines, such as
+<code>memcpy</code> and <code>memset</code>, in some cases. The set of routines
+that GCC may possibly use is documented in <a href="http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#Other-Builtins">Other
+Builtins</a> in <cite>Using the GNU Compiler Collection (GCC)</cite>.
+</p>
+<p>These routines take arguments and return values of a specific machine
+mode, not a specific C type. See <a href="Machine-Modes.html#Machine-Modes">Machine Modes</a>, for an explanation
+of this concept. For illustrative purposes, in this chapter the
+floating point type <code>float</code> is assumed to correspond to <code>SFmode</code>;
+<code>double</code> to <code>DFmode</code>; and <code>long&nbsp;double<!-- /@w --></code> to both
+<code>TFmode</code> and <code>XFmode</code>. Similarly, the integer types <code>int</code>
+and <code>unsigned&nbsp;int<!-- /@w --></code> correspond to <code>SImode</code>; <code>long</code> and
+<code>unsigned&nbsp;long<!-- /@w --></code> to <code>DImode</code>; and <code>long&nbsp;long<!-- /@w --></code> and
+<code>unsigned&nbsp;long&nbsp;long<!-- /@w --></code> to <code>TImode</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Integer-library-routines.html#Integer-library-routines" accesskey="1">Integer library routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Soft-float-library-routines.html#Soft-float-library-routines" accesskey="2">Soft float library routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Decimal-float-library-routines.html#Decimal-float-library-routines" accesskey="3">Decimal float library routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines" accesskey="4">Fixed-point fractional library routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exception-handling-routines.html#Exception-handling-routines" accesskey="5">Exception handling routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Miscellaneous-routines.html#Miscellaneous-routines" accesskey="6">Miscellaneous routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Languages.html#Languages" accesskey="n" rel="next">Languages</a>, Previous: <a href="Interface.html#Interface" accesskey="p" rel="previous">Interface</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Library-Calls.html b/share/doc/gccint/Library-Calls.html
new file mode 100644
index 0000000..242c8d4
--- /dev/null
+++ b/share/doc/gccint/Library-Calls.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Library Calls</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Library Calls">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Library Calls">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Addressing-Modes.html#Addressing-Modes" rel="next" title="Addressing Modes">
+<link href="Trampolines.html#Trampolines" rel="previous" title="Trampolines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Library-Calls"></a>
+<div class="header">
+<p>
+Next: <a href="Addressing-Modes.html#Addressing-Modes" accesskey="n" rel="next">Addressing Modes</a>, Previous: <a href="Trampolines.html#Trampolines" accesskey="p" rel="previous">Trampolines</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Implicit-Calls-to-Library-Routines"></a>
+<h3 class="section">18.12 Implicit Calls to Library Routines</h3>
+<a name="index-library-subroutine-names"></a>
+<a name="index-libgcc_002ea"></a>
+
+<p>Here is an explanation of implicit calls to library routines.
+</p>
+<dl>
+<dt><a name="index-DECLARE_005fLIBRARY_005fRENAMES"></a>Macro: <strong>DECLARE_LIBRARY_RENAMES</strong></dt>
+<dd><p>This macro, if defined, should expand to a piece of C code that will get
+expanded when compiling functions for libgcc.a. It can be used to
+provide alternate names for GCC&rsquo;s internal library functions if there
+are ABI-mandated names that the compiler should provide.
+</p></dd></dl>
+
+<a name="index-set_005foptab_005flibfunc"></a>
+<a name="index-init_005fone_005flibfunc"></a>
+<dl>
+<dt><a name="index-TARGET_005fINIT_005fLIBFUNCS"></a>Target Hook: <em>void</em> <strong>TARGET_INIT_LIBFUNCS</strong> <em>(void)</em></dt>
+<dd><p>This hook should declare additional library routines or rename
+existing ones, using the functions <code>set_optab_libfunc</code> and
+<code>init_one_libfunc</code> defined in <samp>optabs.cc</samp>.
+<code>init_optabs</code> calls this macro after initializing all the normal
+library routines.
+</p>
+<p>The default is to do nothing. Most ports don&rsquo;t need to define this hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBFUNC_005fGNU_005fPREFIX"></a>Target Hook: <em>bool</em> <strong>TARGET_LIBFUNC_GNU_PREFIX</strong></dt>
+<dd><p>If false (the default), internal library routines start with two
+underscores. If set to true, these routines start with <code>__gnu_</code>
+instead. E.g., <code>__muldi3</code> changes to <code>__gnu_muldi3</code>. This
+currently only affects functions defined in <samp>libgcc2.c</samp>. If this
+is set to true, the <samp>tm.h</samp> file must also
+<code>#define LIBGCC2_GNU_PREFIX</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FLOAT_005fLIB_005fCOMPARE_005fRETURNS_005fBOOL"></a>Macro: <strong>FLOAT_LIB_COMPARE_RETURNS_BOOL</strong> <em>(<var>mode</var>, <var>comparison</var>)</em></dt>
+<dd><p>This macro should return <code>true</code> if the library routine that
+implements the floating point comparison operator <var>comparison</var> in
+mode <var>mode</var> will return a boolean, and <var>false</var> if it will
+return a tristate.
+</p>
+<p>GCC&rsquo;s own floating point libraries return tristates from the
+comparison operators, so the default returns false always. Most ports
+don&rsquo;t need to define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIB_005fINT_005fCMP_005fBIASED"></a>Macro: <strong>TARGET_LIB_INT_CMP_BIASED</strong></dt>
+<dd><p>This macro should evaluate to <code>true</code> if the integer comparison
+functions (like <code>__cmpdi2</code>) return 0 to indicate that the first
+operand is smaller than the second, 1 to indicate that they are equal,
+and 2 to indicate that the first operand is greater than the second.
+If this macro evaluates to <code>false</code> the comparison functions return
+-1, 0, and 1 instead of 0, 1, and 2. If the target uses the routines
+in <samp>libgcc.a</samp>, you do not need to define this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAS_005fNO_005fHW_005fDIVIDE"></a>Macro: <strong>TARGET_HAS_NO_HW_DIVIDE</strong></dt>
+<dd><p>This macro should be defined if the target has no hardware divide
+instructions. If this macro is defined, GCC will use an algorithm which
+make use of simple logical and arithmetic operations for 64-bit
+division. If the macro is not defined, GCC will use an algorithm which
+make use of a 64-bit by 32-bit divide primitive.
+</p></dd></dl>
+
+<a name="index-EDOM_002c-implicit-usage"></a>
+<a name="index-matherr"></a>
+<dl>
+<dt><a name="index-TARGET_005fEDOM"></a>Macro: <strong>TARGET_EDOM</strong></dt>
+<dd><p>The value of <code>EDOM</code> on the target machine, as a C integer constant
+expression. If you don&rsquo;t define this macro, GCC does not attempt to
+deposit the value of <code>EDOM</code> into <code>errno</code> directly. Look in
+<samp>/usr/include/errno.h</samp> to find the value of <code>EDOM</code> on your
+system.
+</p>
+<p>If you do not define <code>TARGET_EDOM</code>, then compiled code reports
+domain errors by calling the library function and letting it report the
+error. If mathematical functions on your system use <code>matherr</code> when
+there is an error, then you should leave <code>TARGET_EDOM</code> undefined so
+that <code>matherr</code> is used normally.
+</p></dd></dl>
+
+<a name="index-errno_002c-implicit-usage"></a>
+<dl>
+<dt><a name="index-GEN_005fERRNO_005fRTX"></a>Macro: <strong>GEN_ERRNO_RTX</strong></dt>
+<dd><p>Define this macro as a C expression to create an rtl expression that
+refers to the global &ldquo;variable&rdquo; <code>errno</code>. (On certain systems,
+<code>errno</code> may not actually be a variable.) If you don&rsquo;t define this
+macro, a reasonable default is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBC_005fHAS_005fFUNCTION"></a>Target Hook: <em>bool</em> <strong>TARGET_LIBC_HAS_FUNCTION</strong> <em>(enum function_class <var>fn_class</var>, tree <var>type</var>)</em></dt>
+<dd><p>This hook determines whether a function from a class of functions
+<var>fn_class</var> is present in the target C library. If <var>type</var> is NULL,
+the caller asks for support for all standard (float, double, long double)
+types. If <var>type</var> is non-NULL, the caller asks for support for a
+specific type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBC_005fHAS_005fFAST_005fFUNCTION"></a>Target Hook: <em>bool</em> <strong>TARGET_LIBC_HAS_FAST_FUNCTION</strong> <em>(int <var>fcode</var>)</em></dt>
+<dd><p>This hook determines whether a function from a class of functions
+<code>(enum function_class)</code><var>fcode</var> has a fast implementation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NEXT_005fOBJC_005fRUNTIME"></a>Macro: <strong>NEXT_OBJC_RUNTIME</strong></dt>
+<dd><p>Set this macro to 1 to use the &quot;NeXT&quot; Objective-C message sending conventions
+by default. This calling convention involves passing the object, the selector
+and the method arguments all at once to the method-lookup library function.
+This is the usual setting when targeting Darwin/Mac OS X systems, which have
+the NeXT runtime installed.
+</p>
+<p>If the macro is set to 0, the &quot;GNU&quot; Objective-C message sending convention
+will be used by default. This convention passes just the object and the
+selector to the method-lookup function, which returns a pointer to the method.
+</p>
+<p>In either case, it remains possible to select code-generation for the alternate
+scheme, by means of compiler command line switches.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Addressing-Modes.html#Addressing-Modes" accesskey="n" rel="next">Addressing Modes</a>, Previous: <a href="Trampolines.html#Trampolines" accesskey="p" rel="previous">Trampolines</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Library-Files.html b/share/doc/gccint/Library-Files.html
new file mode 100644
index 0000000..32b59fd
--- /dev/null
+++ b/share/doc/gccint/Library-Files.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Library Files</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Library Files">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Library Files">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Headers.html#Headers" rel="next" title="Headers">
+<link href="Makefile.html#Makefile" rel="previous" title="Makefile">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Library-Files"></a>
+<div class="header">
+<p>
+Next: <a href="Headers.html#Headers" accesskey="n" rel="next">Headers</a>, Previous: <a href="Makefile.html#Makefile" accesskey="p" rel="previous">Makefile</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Library-Source-Files-and-Headers-under-the-gcc-Directory"></a>
+<h4 class="subsection">6.3.5 Library Source Files and Headers under the <samp>gcc</samp> Directory</h4>
+
+<p>FIXME: list here, with explanation, all the C source files and headers
+under the <samp>gcc</samp> directory that aren&rsquo;t built into the GCC
+executable but rather are part of runtime libraries and object files,
+such as <samp>crtstuff.c</samp> and <samp>unwind-dw2.c</samp>. See <a href="Headers.html#Headers">Headers Installed by GCC</a>, for more information about the
+<samp>ginclude</samp> directory.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Liveness-information.html b/share/doc/gccint/Liveness-information.html
new file mode 100644
index 0000000..4ffe083
--- /dev/null
+++ b/share/doc/gccint/Liveness-information.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Liveness information</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Liveness information">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Liveness information">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Control-Flow.html#Control-Flow" rel="up" title="Control Flow">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="next" title="Loop Analysis and Representation">
+<link href="Maintaining-the-CFG.html#Maintaining-the-CFG" rel="previous" title="Maintaining the CFG">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Liveness-information"></a>
+<div class="header">
+<p>
+Previous: <a href="Maintaining-the-CFG.html#Maintaining-the-CFG" accesskey="p" rel="previous">Maintaining the CFG</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Liveness-information-1"></a>
+<h3 class="section">15.5 Liveness information</h3>
+<a name="index-Liveness-representation"></a>
+<p>Liveness information is useful to determine whether some register is
+&ldquo;live&rdquo; at given point of program, i.e. that it contains a value that
+may be used at a later point in the program. This information is
+used, for instance, during register allocation, as the pseudo
+registers only need to be assigned to a unique hard register or to a
+stack slot if they are live. The hard registers and stack slots may
+be freely reused for other values when a register is dead.
+</p>
+<p>Liveness information is available in the back end starting with
+<code>pass_df_initialize</code> and ending with <code>pass_df_finish</code>. Three
+flavors of live analysis are available: With <code>LR</code>, it is possible
+to determine at any point <code>P</code> in the function if the register may be
+used on some path from <code>P</code> to the end of the function. With
+<code>UR</code>, it is possible to determine if there is a path from the
+beginning of the function to <code>P</code> that defines the variable.
+<code>LIVE</code> is the intersection of the <code>LR</code> and <code>UR</code> and a
+variable is live at <code>P</code> if there is both an assignment that reaches
+it from the beginning of the function and a use that can be reached on
+some path from <code>P</code> to the end of the function.
+</p>
+<p>In general <code>LIVE</code> is the most useful of the three. The macros
+<code>DF_[LR,UR,LIVE]_[IN,OUT]</code> can be used to access this information.
+The macros take a basic block number and return a bitmap that is indexed
+by the register number. This information is only guaranteed to be up to
+date after calls are made to <code>df_analyze</code>. See the file
+<code>df-core.cc</code> for details on using the dataflow.
+</p>
+
+<a name="index-REG_005fDEAD_002c-REG_005fUNUSED"></a>
+<p>The liveness information is stored partly in the RTL instruction stream
+and partly in the flow graph. Local information is stored in the
+instruction stream: Each instruction may contain <code>REG_DEAD</code> notes
+representing that the value of a given register is no longer needed, or
+<code>REG_UNUSED</code> notes representing that the value computed by the
+instruction is never used. The second is useful for instructions
+computing multiple values at once.
+</p>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Maintaining-the-CFG.html#Maintaining-the-CFG" accesskey="p" rel="previous">Maintaining the CFG</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Logical-Operators.html b/share/doc/gccint/Logical-Operators.html
new file mode 100644
index 0000000..8e2bb5c
--- /dev/null
+++ b/share/doc/gccint/Logical-Operators.html
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Logical Operators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Logical Operators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Logical Operators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Operands.html#Operands" rel="up" title="Operands">
+<link href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements" rel="next" title="Manipulating GIMPLE statements">
+<link href="Conditional-Expressions.html#Conditional-Expressions" rel="previous" title="Conditional Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Logical-Operators"></a>
+<div class="header">
+<p>
+Previous: <a href="Conditional-Expressions.html#Conditional-Expressions" accesskey="p" rel="previous">Conditional Expressions</a>, Up: <a href="Operands.html#Operands" accesskey="u" rel="up">Operands</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Logical-Operators-1"></a>
+<h4 class="subsection">12.6.4 Logical Operators</h4>
+<a name="index-Logical-Operators"></a>
+
+<p>Except when they appear in the condition operand of a
+<code>GIMPLE_COND</code>, logical &lsquo;and&rsquo; and &lsquo;or&rsquo; operators are simplified
+as follows: <code>a = b &amp;&amp; c</code> becomes
+</p>
+<div class="smallexample">
+<pre class="smallexample">T1 = (bool)b;
+if (T1 == true)
+ T1 = (bool)c;
+a = T1;
+</pre></div>
+
+<p>Note that <code>T1</code> in this example cannot be an expression temporary,
+because it has two different assignments.
+</p>
+<a name="Manipulating-operands"></a>
+<h4 class="subsection">12.6.5 Manipulating operands</h4>
+
+<p>All gimple operands are of type <code>tree</code>. But only certain
+types of trees are allowed to be used as operand tuples. Basic
+validation is controlled by the function
+<code>get_gimple_rhs_class</code>, which given a tree code, returns an
+<code>enum</code> with the following values of type <code>enum
+gimple_rhs_class</code>
+</p>
+<ul>
+<li> <code>GIMPLE_INVALID_RHS</code>
+The tree cannot be used as a GIMPLE operand.
+
+</li><li> <code>GIMPLE_TERNARY_RHS</code>
+The tree is a valid GIMPLE ternary operation.
+
+</li><li> <code>GIMPLE_BINARY_RHS</code>
+The tree is a valid GIMPLE binary operation.
+
+</li><li> <code>GIMPLE_UNARY_RHS</code>
+The tree is a valid GIMPLE unary operation.
+
+</li><li> <code>GIMPLE_SINGLE_RHS</code>
+The tree is a single object, that cannot be split into simpler
+operands (for instance, <code>SSA_NAME</code>, <code>VAR_DECL</code>, <code>COMPONENT_REF</code>, etc).
+
+<p>This operand class also acts as an escape hatch for tree nodes
+that may be flattened out into the operand vector, but would need
+more than two slots on the RHS. For instance, a <code>COND_EXPR</code>
+expression of the form <code>(a op b) ? x : y</code> could be flattened
+out on the operand vector using 4 slots, but it would also
+require additional processing to distinguish <code>c = a op b</code>
+from <code>c = a op b ? x : y</code>. In time, these special case tree
+expressions should be flattened into the operand vector.
+</p></li></ul>
+
+<p>For tree nodes in the categories <code>GIMPLE_TERNARY_RHS</code>,
+<code>GIMPLE_BINARY_RHS</code> and <code>GIMPLE_UNARY_RHS</code>, they cannot be
+stored inside tuples directly. They first need to be flattened and
+separated into individual components. For instance, given the GENERIC
+expression
+</p>
+<div class="smallexample">
+<pre class="smallexample">a = b + c
+</pre></div>
+
+<p>its tree representation is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">MODIFY_EXPR &lt;VAR_DECL &lt;a&gt;, PLUS_EXPR &lt;VAR_DECL &lt;b&gt;, VAR_DECL &lt;c&gt;&gt;&gt;
+</pre></div>
+
+<p>In this case, the GIMPLE form for this statement is logically
+identical to its GENERIC form but in GIMPLE, the <code>PLUS_EXPR</code>
+on the RHS of the assignment is not represented as a tree,
+instead the two operands are taken out of the <code>PLUS_EXPR</code> sub-tree
+and flattened into the GIMPLE tuple as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">GIMPLE_ASSIGN &lt;PLUS_EXPR, VAR_DECL &lt;a&gt;, VAR_DECL &lt;b&gt;, VAR_DECL &lt;c&gt;&gt;
+</pre></div>
+
+<a name="Operand-vector-allocation"></a>
+<h4 class="subsection">12.6.6 Operand vector allocation</h4>
+
+<p>The operand vector is stored at the bottom of the three tuple
+structures that accept operands. This means, that depending on
+the code of a given statement, its operand vector will be at
+different offsets from the base of the structure. To access
+tuple operands use the following accessors
+</p>
+<dl>
+<dt><a name="index-gimple_005fnum_005fops"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_num_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Returns the number of operands in statement G.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fop"></a>GIMPLE function: <em>tree</em> <strong>gimple_op</strong> <em>(gimple g, unsigned i)</em></dt>
+<dd><p>Returns operand <code>I</code> from statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fops"></a>GIMPLE function: <em>tree *</em> <strong>gimple_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Returns a pointer into the operand vector for statement <code>G</code>. This
+is computed using an internal table called <code>gimple_ops_offset_</code>[].
+This table is indexed by the gimple code of <code>G</code>.
+</p>
+<p>When the compiler is built, this table is filled-in using the
+sizes of the structures used by each statement code defined in
+gimple.def. Since the operand vector is at the bottom of the
+structure, for a gimple code <code>C</code> the offset is computed as sizeof
+(struct-of <code>C</code>) - sizeof (tree).
+</p>
+<p>This mechanism adds one memory indirection to every access when
+using <code>gimple_op</code>(), if this becomes a bottleneck, a pass can
+choose to memoize the result from <code>gimple_ops</code>() and use that to
+access the operands.
+</p></dd></dl>
+
+<a name="Operand-validation"></a>
+<h4 class="subsection">12.6.7 Operand validation</h4>
+
+<p>When adding a new operand to a gimple statement, the operand will
+be validated according to what each tuple accepts in its operand
+vector. These predicates are called by the
+<code>gimple_<var>name</var>_set_...()</code>. Each tuple will use one of the
+following predicates (Note, this list is not exhaustive):
+</p>
+<dl>
+<dt><a name="index-is_005fgimple_005fval"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_val</strong> <em>(tree t)</em></dt>
+<dd><p>Returns true if t is a &quot;GIMPLE value&quot;, which are all the
+non-addressable stack variables (variables for which
+<code>is_gimple_reg</code> returns true) and constants (expressions for which
+<code>is_gimple_min_invariant</code> returns true).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005faddressable"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_addressable</strong> <em>(tree t)</em></dt>
+<dd><p>Returns true if t is a symbol or memory reference whose address
+can be taken.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fasm_005fval"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_asm_val</strong> <em>(tree t)</em></dt>
+<dd><p>Similar to <code>is_gimple_val</code> but it also accepts hard registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fcall_005faddr"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_call_addr</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is a valid expression to use as the function
+called by a <code>GIMPLE_CALL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fmem_005fref_005faddr"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_mem_ref_addr</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is a valid expression to use as first operand
+of a <code>MEM_REF</code> expression.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fconstant"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_constant</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is a valid gimple constant.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fmin_005finvariant"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_min_invariant</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is a valid minimal invariant. This is different
+from constants, in that the specific value of t may not be known
+at compile time, but it is known that it doesn&rsquo;t change (e.g.,
+the address of a function local variable).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fip_005finvariant"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_ip_invariant</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is an interprocedural invariant. This means that t
+is a valid invariant in all functions (e.g. it can be an address of a
+global variable but not of a local one).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fip_005finvariant_005faddress"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_ip_invariant_address</strong> <em>(tree t)</em></dt>
+<dd><p>Return true if t is an <code>ADDR_EXPR</code> that does not change once the
+program is running (and which is valid in all functions).
+</p></dd></dl>
+
+
+<a name="Statement-validation"></a>
+<h4 class="subsection">12.6.8 Statement validation</h4>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fassign"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_assign</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if the code of g is <code>GIMPLE_ASSIGN</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fcall"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_call</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if the code of g is <code>GIMPLE_CALL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fdebug"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_debug</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if the code of g is <code>GIMPLE_DEBUG</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fassign_005fcast_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_assign_cast_p</strong> <em>(const_gimple g)</em></dt>
+<dd><p>Return true if g is a <code>GIMPLE_ASSIGN</code> that performs a type cast
+operation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbind_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_debug_bind_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if g is a <code>GIMPLE_DEBUG</code> that binds the value of an
+expression to a variable.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-is_005fgimple_005fomp"></a>GIMPLE function: <em>bool</em> <strong>is_gimple_omp</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if g is any of the OpenMP codes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fbegin_005fstmt_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_debug_begin_stmt_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if g is a <code>GIMPLE_DEBUG</code> that marks the beginning of
+a source statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005finline_005fentry_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_debug_inline_entry_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if g is a <code>GIMPLE_DEBUG</code> that marks the entry
+point of an inlined function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdebug_005fnonbind_005fmarker_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_debug_nonbind_marker_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if g is a <code>GIMPLE_DEBUG</code> that marks a program location,
+without any variable binding.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Conditional-Expressions.html#Conditional-Expressions" accesskey="p" rel="previous">Conditional Expressions</a>, Up: <a href="Operands.html#Operands" accesskey="u" rel="up">Operands</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Loop-Analysis-and-Representation.html b/share/doc/gccint/Loop-Analysis-and-Representation.html
new file mode 100644
index 0000000..a61abe5
--- /dev/null
+++ b/share/doc/gccint/Loop-Analysis-and-Representation.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Loop Analysis and Representation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Loop Analysis and Representation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Loop Analysis and Representation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Loop-representation.html#Loop-representation" rel="next" title="Loop representation">
+<link href="Liveness-information.html#Liveness-information" rel="previous" title="Liveness information">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Loop-Analysis-and-Representation"></a>
+<div class="header">
+<p>
+Next: <a href="Machine-Desc.html#Machine-Desc" accesskey="n" rel="next">Machine Desc</a>, Previous: <a href="Control-Flow.html#Control-Flow" accesskey="p" rel="previous">Control Flow</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Analysis-and-Representation-of-Loops"></a>
+<h2 class="chapter">16 Analysis and Representation of Loops</h2>
+
+<p>GCC provides extensive infrastructure for work with natural loops, i.e.,
+strongly connected components of CFG with only one entry block. This
+chapter describes representation of loops in GCC, both on GIMPLE and in
+RTL, as well as the interfaces to loop-related analyses (induction
+variable analysis and number of iterations analysis).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Loop-representation.html#Loop-representation" accesskey="1">Loop representation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representation and analysis of loops.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Loop-querying.html#Loop-querying" accesskey="2">Loop querying</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting information about loops.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Loop-manipulation.html#Loop-manipulation" accesskey="3">Loop manipulation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Loop manipulation functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="LCSSA.html#LCSSA" accesskey="4">LCSSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Loop-closed SSA form.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scalar-evolutions.html#Scalar-evolutions" accesskey="5">Scalar evolutions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Induction variables on GIMPLE.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="loop_002div.html#loop_002div" accesskey="6">loop-iv</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Induction variables on RTL.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Number-of-iterations.html#Number-of-iterations" accesskey="7">Number of iterations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Number of iterations analysis.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dependency-analysis.html#Dependency-analysis" accesskey="8">Dependency analysis</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Data dependency analysis.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Loop-manipulation.html b/share/doc/gccint/Loop-manipulation.html
new file mode 100644
index 0000000..4e23107
--- /dev/null
+++ b/share/doc/gccint/Loop-manipulation.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Loop manipulation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Loop manipulation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Loop manipulation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="LCSSA.html#LCSSA" rel="next" title="LCSSA">
+<link href="Loop-querying.html#Loop-querying" rel="previous" title="Loop querying">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Loop-manipulation"></a>
+<div class="header">
+<p>
+Next: <a href="LCSSA.html#LCSSA" accesskey="n" rel="next">LCSSA</a>, Previous: <a href="Loop-querying.html#Loop-querying" accesskey="p" rel="previous">Loop querying</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loop-manipulation-1"></a>
+<h3 class="section">16.3 Loop manipulation</h3>
+<a name="index-Loop-manipulation"></a>
+
+<p>The loops tree can be manipulated using the following functions:
+</p>
+<ul>
+<li> <code>flow_loop_tree_node_add</code>: Adds a node to the tree.
+</li><li> <code>flow_loop_tree_node_remove</code>: Removes a node from the tree.
+</li><li> <code>add_bb_to_loop</code>: Adds a basic block to a loop.
+</li><li> <code>remove_bb_from_loops</code>: Removes a basic block from loops.
+</li></ul>
+
+<p>Most low-level CFG functions update loops automatically. The following
+functions handle some more complicated cases of CFG manipulations:
+</p>
+<ul>
+<li> <code>remove_path</code>: Removes an edge and all blocks it dominates.
+</li><li> <code>split_loop_exit_edge</code>: Splits exit edge of the loop,
+ensuring that PHI node arguments remain in the loop (this ensures that
+loop-closed SSA form is preserved). Only useful on GIMPLE.
+</li></ul>
+
+<p>Finally, there are some higher-level loop transformations implemented.
+While some of them are written so that they should work on non-innermost
+loops, they are mostly untested in that case, and at the moment, they
+are only reliable for the innermost loops:
+</p>
+<ul>
+<li> <code>create_iv</code>: Creates a new induction variable. Only works on
+GIMPLE. <code>standard_iv_increment_position</code> can be used to find a
+suitable place for the iv increment.
+</li><li> <code>duplicate_loop_body_to_header_edge</code>,
+<code>tree_duplicate_loop_body_to_header_edge</code>: These functions (on RTL and
+on GIMPLE) duplicate the body of the loop prescribed number of times on
+one of the edges entering loop header, thus performing either loop
+unrolling or loop peeling. <code>can_duplicate_loop_p</code>
+(<code>can_unroll_loop_p</code> on GIMPLE) must be true for the duplicated
+loop.
+</li><li> <code>loop_version</code>: This function creates a copy of a loop, and
+a branch before them that selects one of them depending on the
+prescribed condition. This is useful for optimizations that need to
+verify some assumptions in runtime (one of the copies of the loop is
+usually left unchanged, while the other one is transformed in some way).
+</li><li> <code>tree_unroll_loop</code>: Unrolls the loop, including peeling the
+extra iterations to make the number of iterations divisible by unroll
+factor, updating the exit condition, and removing the exits that now
+cannot be taken. Works only on GIMPLE.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="LCSSA.html#LCSSA" accesskey="n" rel="next">LCSSA</a>, Previous: <a href="Loop-querying.html#Loop-querying" accesskey="p" rel="previous">Loop querying</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Loop-querying.html b/share/doc/gccint/Loop-querying.html
new file mode 100644
index 0000000..ad8006e
--- /dev/null
+++ b/share/doc/gccint/Loop-querying.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Loop querying</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Loop querying">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Loop querying">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Loop-manipulation.html#Loop-manipulation" rel="next" title="Loop manipulation">
+<link href="Loop-representation.html#Loop-representation" rel="previous" title="Loop representation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Loop-querying"></a>
+<div class="header">
+<p>
+Next: <a href="Loop-manipulation.html#Loop-manipulation" accesskey="n" rel="next">Loop manipulation</a>, Previous: <a href="Loop-representation.html#Loop-representation" accesskey="p" rel="previous">Loop representation</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loop-querying-1"></a>
+<h3 class="section">16.2 Loop querying</h3>
+<a name="index-Loop-querying"></a>
+
+<p>The functions to query the information about loops are declared in
+<samp>cfgloop.h</samp>. Some of the information can be taken directly from
+the structures. <code>loop_father</code> field of each basic block contains
+the innermost loop to that the block belongs. The most useful fields of
+loop structure (that are kept up-to-date at all times) are:
+</p>
+<ul>
+<li> <code>header</code>, <code>latch</code>: Header and latch basic blocks of the
+loop.
+</li><li> <code>num_nodes</code>: Number of basic blocks in the loop (including
+the basic blocks of the sub-loops).
+</li><li> <code>outer</code>, <code>inner</code>, <code>next</code>: The super-loop, the first
+sub-loop, and the sibling of the loop in the loops tree.
+</li></ul>
+
+<p>There are other fields in the loop structures, many of them used only by
+some of the passes, or not updated during CFG changes; in general, they
+should not be accessed directly.
+</p>
+<p>The most important functions to query loop structures are:
+</p>
+<ul>
+<li> <code>loop_depth</code>: The depth of the loop in the loops tree, i.e., the
+number of super-loops of the loop.
+</li><li> <code>flow_loops_dump</code>: Dumps the information about loops to a
+file.
+</li><li> <code>verify_loop_structure</code>: Checks consistency of the loop
+structures.
+</li><li> <code>loop_latch_edge</code>: Returns the latch edge of a loop.
+</li><li> <code>loop_preheader_edge</code>: If loops have preheaders, returns
+the preheader edge of a loop.
+</li><li> <code>flow_loop_nested_p</code>: Tests whether loop is a sub-loop of
+another loop.
+</li><li> <code>flow_bb_inside_loop_p</code>: Tests whether a basic block belongs
+to a loop (including its sub-loops).
+</li><li> <code>find_common_loop</code>: Finds the common super-loop of two loops.
+</li><li> <code>superloop_at_depth</code>: Returns the super-loop of a loop with
+the given depth.
+</li><li> <code>tree_num_loop_insns</code>, <code>num_loop_insns</code>: Estimates the
+number of insns in the loop, on GIMPLE and on RTL.
+</li><li> <code>loop_exit_edge_p</code>: Tests whether edge is an exit from a
+loop.
+</li><li> <code>mark_loop_exit_edges</code>: Marks all exit edges of all loops
+with <code>EDGE_LOOP_EXIT</code> flag.
+</li><li> <code>get_loop_body</code>, <code>get_loop_body_in_dom_order</code>,
+<code>get_loop_body_in_bfs_order</code>: Enumerates the basic blocks in the
+loop in depth-first search order in reversed CFG, ordered by dominance
+relation, and breath-first search order, respectively.
+</li><li> <code>single_exit</code>: Returns the single exit edge of the loop, or
+<code>NULL</code> if the loop has more than one exit. You can only use this
+function if <code>LOOPS_HAVE_RECORDED_EXITS</code> is used.
+</li><li> <code>get_loop_exit_edges</code>: Enumerates the exit edges of a loop.
+</li><li> <code>just_once_each_iteration_p</code>: Returns true if the basic block
+is executed exactly once during each iteration of a loop (that is, it
+does not belong to a sub-loop, and it dominates the latch of the loop).
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Loop-manipulation.html#Loop-manipulation" accesskey="n" rel="next">Loop manipulation</a>, Previous: <a href="Loop-representation.html#Loop-representation" accesskey="p" rel="previous">Loop representation</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Loop-representation.html b/share/doc/gccint/Loop-representation.html
new file mode 100644
index 0000000..c521e69
--- /dev/null
+++ b/share/doc/gccint/Loop-representation.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Loop representation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Loop representation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Loop representation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Loop-querying.html#Loop-querying" rel="next" title="Loop querying">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="previous" title="Loop Analysis and Representation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Loop-representation"></a>
+<div class="header">
+<p>
+Next: <a href="Loop-querying.html#Loop-querying" accesskey="n" rel="next">Loop querying</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loop-representation-1"></a>
+<h3 class="section">16.1 Loop representation</h3>
+<a name="index-Loop-representation"></a>
+<a name="index-Loop-analysis"></a>
+
+<p>This chapter describes the representation of loops in GCC, and functions
+that can be used to build, modify and analyze this representation. Most
+of the interfaces and data structures are declared in <samp>cfgloop.h</samp>.
+Loop structures are analyzed and this information disposed or updated
+at the discretion of individual passes. Still most of the generic
+CFG manipulation routines are aware of loop structures and try to
+keep them up-to-date. By this means an increasing part of the
+compilation pipeline is setup to maintain loop structure across
+passes to allow attaching meta information to individual loops
+for consumption by later passes.
+</p>
+<p>In general, a natural loop has one entry block (header) and possibly
+several back edges (latches) leading to the header from the inside of
+the loop. Loops with several latches may appear if several loops share
+a single header, or if there is a branching in the middle of the loop.
+The representation of loops in GCC however allows only loops with a
+single latch. During loop analysis, headers of such loops are split and
+forwarder blocks are created in order to disambiguate their structures.
+Heuristic based on profile information and structure of the induction
+variables in the loops is used to determine whether the latches
+correspond to sub-loops or to control flow in a single loop. This means
+that the analysis sometimes changes the CFG, and if you run it in the
+middle of an optimization pass, you must be able to deal with the new
+blocks. You may avoid CFG changes by passing
+<code>LOOPS_MAY_HAVE_MULTIPLE_LATCHES</code> flag to the loop discovery,
+note however that most other loop manipulation functions will not work
+correctly for loops with multiple latch edges (the functions that only
+query membership of blocks to loops and subloop relationships, or
+enumerate and test loop exits, can be expected to work).
+</p>
+<p>Body of the loop is the set of blocks that are dominated by its header,
+and reachable from its latch against the direction of edges in CFG. The
+loops are organized in a containment hierarchy (tree) such that all the
+loops immediately contained inside loop L are the children of L in the
+tree. This tree is represented by the <code>struct loops</code> structure.
+The root of this tree is a fake loop that contains all blocks in the
+function. Each of the loops is represented in a <code>struct loop</code>
+structure. Each loop is assigned an index (<code>num</code> field of the
+<code>struct loop</code> structure), and the pointer to the loop is stored in
+the corresponding field of the <code>larray</code> vector in the loops
+structure. The indices do not have to be continuous, there may be
+empty (<code>NULL</code>) entries in the <code>larray</code> created by deleting
+loops. Also, there is no guarantee on the relative order of a loop
+and its subloops in the numbering. The index of a loop never changes.
+</p>
+<p>The entries of the <code>larray</code> field should not be accessed directly.
+The function <code>get_loop</code> returns the loop description for a loop with
+the given index. <code>number_of_loops</code> function returns number of loops
+in the function. To traverse all loops, use a range-based for loop with
+class <code>loops_list</code> instance. The <code>flags</code> argument passed to the
+constructor function of class <code>loops_list</code> is used to determine the
+direction of traversal and the set of loops visited. Each loop is
+guaranteed to be visited exactly once, regardless of the changes to the
+loop tree, and the loops may be removed during the traversal. The newly
+created loops are never traversed, if they need to be visited, this must
+be done separately after their creation.
+</p>
+<p>Each basic block contains the reference to the innermost loop it belongs
+to (<code>loop_father</code>). For this reason, it is only possible to have
+one <code>struct loops</code> structure initialized at the same time for each
+CFG. The global variable <code>current_loops</code> contains the
+<code>struct loops</code> structure. Many of the loop manipulation functions
+assume that dominance information is up-to-date.
+</p>
+<p>The loops are analyzed through <code>loop_optimizer_init</code> function. The
+argument of this function is a set of flags represented in an integer
+bitmask. These flags specify what other properties of the loop
+structures should be calculated/enforced and preserved later:
+</p>
+<ul>
+<li> <code>LOOPS_MAY_HAVE_MULTIPLE_LATCHES</code>: If this flag is set, no
+changes to CFG will be performed in the loop analysis, in particular,
+loops with multiple latch edges will not be disambiguated. If a loop
+has multiple latches, its latch block is set to NULL. Most of
+the loop manipulation functions will not work for loops in this shape.
+No other flags that require CFG changes can be passed to
+loop_optimizer_init.
+</li><li> <code>LOOPS_HAVE_PREHEADERS</code>: Forwarder blocks are created in such
+a way that each loop has only one entry edge, and additionally, the
+source block of this entry edge has only one successor. This creates a
+natural place where the code can be moved out of the loop, and ensures
+that the entry edge of the loop leads from its immediate super-loop.
+</li><li> <code>LOOPS_HAVE_SIMPLE_LATCHES</code>: Forwarder blocks are created to
+force the latch block of each loop to have only one successor. This
+ensures that the latch of the loop does not belong to any of its
+sub-loops, and makes manipulation with the loops significantly easier.
+Most of the loop manipulation functions assume that the loops are in
+this shape. Note that with this flag, the &ldquo;normal&rdquo; loop without any
+control flow inside and with one exit consists of two basic blocks.
+</li><li> <code>LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS</code>: Basic blocks and
+edges in the strongly connected components that are not natural loops
+(have more than one entry block) are marked with
+<code>BB_IRREDUCIBLE_LOOP</code> and <code>EDGE_IRREDUCIBLE_LOOP</code> flags. The
+flag is not set for blocks and edges that belong to natural loops that
+are in such an irreducible region (but it is set for the entry and exit
+edges of such a loop, if they lead to/from this region).
+</li><li> <code>LOOPS_HAVE_RECORDED_EXITS</code>: The lists of exits are recorded
+and updated for each loop. This makes some functions (e.g.,
+<code>get_loop_exit_edges</code>) more efficient. Some functions (e.g.,
+<code>single_exit</code>) can be used only if the lists of exits are
+recorded.
+</li></ul>
+
+<p>These properties may also be computed/enforced later, using functions
+<code>create_preheaders</code>, <code>force_single_succ_latches</code>,
+<code>mark_irreducible_loops</code> and <code>record_loop_exits</code>.
+The properties can be queried using <code>loops_state_satisfies_p</code>.
+</p>
+<p>The memory occupied by the loops structures should be freed with
+<code>loop_optimizer_finalize</code> function. When loop structures are
+setup to be preserved across passes this function reduces the
+information to be kept up-to-date to a minimum (only
+<code>LOOPS_MAY_HAVE_MULTIPLE_LATCHES</code> set).
+</p>
+<p>The CFG manipulation functions in general do not update loop structures.
+Specialized versions that additionally do so are provided for the most
+common tasks. On GIMPLE, <code>cleanup_tree_cfg_loop</code> function can be
+used to cleanup CFG while updating the loops structures if
+<code>current_loops</code> is set.
+</p>
+<p>At the moment loop structure is preserved from the start of GIMPLE
+loop optimizations until the end of RTL loop optimizations. During
+this time a loop can be tracked by its <code>struct loop</code> and number.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Loop-querying.html#Loop-querying" accesskey="n" rel="next">Loop querying</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Looping-Patterns.html b/share/doc/gccint/Looping-Patterns.html
new file mode 100644
index 0000000..7fabd39
--- /dev/null
+++ b/share/doc/gccint/Looping-Patterns.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Looping Patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Looping Patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Looping Patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Insn-Canonicalizations.html#Insn-Canonicalizations" rel="next" title="Insn Canonicalizations">
+<link href="Jump-Patterns.html#Jump-Patterns" rel="previous" title="Jump Patterns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Looping-Patterns"></a>
+<div class="header">
+<p>
+Next: <a href="Insn-Canonicalizations.html#Insn-Canonicalizations" accesskey="n" rel="next">Insn Canonicalizations</a>, Previous: <a href="Jump-Patterns.html#Jump-Patterns" accesskey="p" rel="previous">Jump Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-Looping-Instruction-Patterns"></a>
+<h3 class="section">17.13 Defining Looping Instruction Patterns</h3>
+<a name="index-looping-instruction-patterns"></a>
+<a name="index-defining-looping-instruction-patterns"></a>
+
+<p>Some machines have special jump instructions that can be utilized to
+make loops more efficient. A common example is the 68000 &lsquo;<samp>dbra</samp>&rsquo;
+instruction which performs a decrement of a register and a branch if the
+result was greater than zero. Other machines, in particular digital
+signal processors (DSPs), have special block repeat instructions to
+provide low-overhead loop support. For example, the TI TMS320C3x/C4x
+DSPs have a block repeat instruction that loads special registers to
+mark the top and end of a loop and to count the number of loop
+iterations. This avoids the need for fetching and executing a
+&lsquo;<samp>dbra</samp>&rsquo;-like instruction and avoids pipeline stalls associated with
+the jump.
+</p>
+<p>GCC has two special named patterns to support low overhead looping.
+They are &lsquo;<samp>doloop_begin</samp>&rsquo; and &lsquo;<samp>doloop_end</samp>&rsquo;. These are emitted
+by the loop optimizer for certain well-behaved loops with a finite
+number of loop iterations using information collected during strength
+reduction.
+</p>
+<p>The &lsquo;<samp>doloop_end</samp>&rsquo; pattern describes the actual looping instruction
+(or the implicit looping operation) and the &lsquo;<samp>doloop_begin</samp>&rsquo; pattern
+is an optional companion pattern that can be used for initialization
+needed for some low-overhead looping instructions.
+</p>
+<p>Note that some machines require the actual looping instruction to be
+emitted at the top of the loop (e.g., the TMS320C3x/C4x DSPs). Emitting
+the true RTL for a looping instruction at the top of the loop can cause
+problems with flow analysis. So instead, a dummy <code>doloop</code> insn is
+emitted at the end of the loop. The machine dependent reorg pass checks
+for the presence of this <code>doloop</code> insn and then searches back to
+the top of the loop, where it inserts the true looping insn (provided
+there are no instructions in the loop which would cause problems). Any
+additional labels can be emitted at this point. In addition, if the
+desired special iteration counter register was not allocated, this
+machine dependent reorg pass could emit a traditional compare and jump
+instruction pair.
+</p>
+<p>For the &lsquo;<samp>doloop_end</samp>&rsquo; pattern, the loop optimizer allocates an
+additional pseudo register as an iteration counter. This pseudo
+register cannot be used within the loop (i.e., general induction
+variables cannot be derived from it), however, in many cases the loop
+induction variable may become redundant and removed by the flow pass.
+</p>
+<p>The &lsquo;<samp>doloop_end</samp>&rsquo; pattern must have a specific structure to be
+handled correctly by GCC. The example below is taken (slightly
+simplified) from the PDP-11 target:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_expand &quot;doloop_end&quot;
+ [(parallel [(set (pc)
+ (if_then_else
+ (ne (match_operand:HI 0 &quot;nonimmediate_operand&quot; &quot;+r,!m&quot;)
+ (const_int 1))
+ (label_ref (match_operand 1 &quot;&quot; &quot;&quot;))
+ (pc)))
+ (set (match_dup 0)
+ (plus:HI (match_dup 0)
+ (const_int -1)))])]
+ &quot;&quot;
+ &quot;{
+ if (GET_MODE (operands[0]) != HImode)
+ FAIL;
+ }&quot;)
+
+(define_insn &quot;doloop_end_insn&quot;
+ [(set (pc)
+ (if_then_else
+ (ne (match_operand:HI 0 &quot;nonimmediate_operand&quot; &quot;+r,!m&quot;)
+ (const_int 1))
+ (label_ref (match_operand 1 &quot;&quot; &quot;&quot;))
+ (pc)))
+ (set (match_dup 0)
+ (plus:HI (match_dup 0)
+ (const_int -1)))]
+ &quot;&quot;
+
+ {
+ if (which_alternative == 0)
+ return &quot;sob %0,%l1&quot;;
+
+ /* emulate sob */
+ output_asm_insn (&quot;dec %0&quot;, operands);
+ return &quot;bne %l1&quot;;
+ })
+</pre></div>
+
+<p>The first part of the pattern describes the branch condition. GCC
+supports three cases for the way the target machine handles the loop
+counter:
+</p><ul>
+<li> Loop terminates when the loop register decrements to zero. This
+is represented by a <code>ne</code> comparison of the register (its old value)
+with constant 1 (as in the example above).
+</li><li> Loop terminates when the loop register decrements to -1.
+This is represented by a <code>ne</code> comparison of the register with
+constant zero.
+</li><li> Loop terminates when the loop register decrements to a negative
+value. This is represented by a <code>ge</code> comparison of the register
+with constant zero. For this case, GCC will attach a <code>REG_NONNEG</code>
+note to the <code>doloop_end</code> insn if it can determine that the register
+will be non-negative.
+</li></ul>
+
+<p>Since the <code>doloop_end</code> insn is a jump insn that also has an output,
+the reload pass does not handle the output operand. Therefore, the
+constraint must allow for that operand to be in memory rather than a
+register. In the example shown above, that is handled (in the
+<code>doloop_end_insn</code> pattern) by using a loop instruction sequence
+that can handle memory operands when the memory alternative appears.
+</p>
+<p>GCC does not check the mode of the loop register operand when generating
+the <code>doloop_end</code> pattern. If the pattern is only valid for some
+modes but not others, the pattern should be a <code>define_expand</code>
+pattern that checks the operand mode in the preparation code, and issues
+<code>FAIL</code> if an unsupported mode is found. The example above does
+this, since the machine instruction to be used only exists for
+<code>HImode</code>.
+</p>
+<p>If the <code>doloop_end</code> pattern is a <code>define_expand</code>, there must
+also be a <code>define_insn</code> or <code>define_insn_and_split</code> matching
+the generated pattern. Otherwise, the compiler will fail during loop
+optimization.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Insn-Canonicalizations.html#Insn-Canonicalizations" accesskey="n" rel="next">Insn Canonicalizations</a>, Previous: <a href="Jump-Patterns.html#Jump-Patterns" accesskey="p" rel="previous">Jump Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/MIPS-Coprocessors.html b/share/doc/gccint/MIPS-Coprocessors.html
new file mode 100644
index 0000000..3e9c835
--- /dev/null
+++ b/share/doc/gccint/MIPS-Coprocessors.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: MIPS Coprocessors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: MIPS Coprocessors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: MIPS Coprocessors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="PCH-Target.html#PCH-Target" rel="next" title="PCH Target">
+<link href="Emulated-TLS.html#Emulated-TLS" rel="previous" title="Emulated TLS">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="MIPS-Coprocessors"></a>
+<div class="header">
+<p>
+Next: <a href="PCH-Target.html#PCH-Target" accesskey="n" rel="next">PCH Target</a>, Previous: <a href="Emulated-TLS.html#Emulated-TLS" accesskey="p" rel="previous">Emulated TLS</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-coprocessor-specifics-for-MIPS-targets_002e"></a>
+<h3 class="section">18.26 Defining coprocessor specifics for MIPS targets.</h3>
+<a name="index-MIPS-coprocessor_002ddefinition-macros"></a>
+
+<p>The MIPS specification allows MIPS implementations to have as many as 4
+coprocessors, each with as many as 32 private registers. GCC supports
+accessing these registers and transferring values between the registers
+and memory using asm-ized variables. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> register unsigned int cp0count asm (&quot;c0r1&quot;);
+ unsigned int d;
+
+ d = cp0count + 3;
+</pre></div>
+
+<p>(&ldquo;c0r1&rdquo; is the default name of register 1 in coprocessor 0; alternate
+names may be added as described below, or the default names may be
+overridden entirely in <code>SUBTARGET_CONDITIONAL_REGISTER_USAGE</code>.)
+</p>
+<p>Coprocessor registers are assumed to be epilogue-used; sets to them will
+be preserved even if it does not appear that the register is used again
+later in the function.
+</p>
+<p>Another note: according to the MIPS spec, coprocessor 1 (if present) is
+the FPU. One accesses COP1 registers through standard mips
+floating-point support; they are not included in this mechanism.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/MODE_005fCC-Condition-Codes.html b/share/doc/gccint/MODE_005fCC-Condition-Codes.html
new file mode 100644
index 0000000..39726dc
--- /dev/null
+++ b/share/doc/gccint/MODE_005fCC-Condition-Codes.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: MODE_CC Condition Codes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: MODE_CC Condition Codes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: MODE_CC Condition Codes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Condition-Code.html#Condition-Code" rel="up" title="Condition Code">
+<link href="Costs.html#Costs" rel="next" title="Costs">
+<link href="Condition-Code.html#Condition-Code" rel="previous" title="Condition Code">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="MODE_005fCC-Condition-Codes"></a>
+<div class="header">
+<p>
+Up: <a href="Condition-Code.html#Condition-Code" accesskey="u" rel="up">Condition Code</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Representation-of-condition-codes-using-registers"></a>
+<h4 class="subsection">18.15.1 Representation of condition codes using registers</h4>
+<a name="index-CCmode-1"></a>
+<a name="index-MODE_005fCC-1"></a>
+
+<dl>
+<dt><a name="index-SELECT_005fCC_005fMODE"></a>Macro: <strong>SELECT_CC_MODE</strong> <em>(<var>op</var>, <var>x</var>, <var>y</var>)</em></dt>
+<dd><p>On many machines, the condition code may be produced by other instructions
+than compares, for example the branch can use directly the condition
+code set by a subtract instruction. However, on some machines
+when the condition code is set this way some bits (such as the overflow
+bit) are not set in the same way as a test instruction, so that a different
+branch instruction must be used for some conditional branches. When
+this happens, use the machine mode of the condition code register to
+record different formats of the condition code register. Modes can
+also be used to record which compare instruction (e.g. a signed or an
+unsigned comparison) produced the condition codes.
+</p>
+<p>If other modes than <code>CCmode</code> are required, add them to
+<samp><var>machine</var>-modes.def</samp> and define <code>SELECT_CC_MODE</code> to choose
+a mode given an operand of a compare. This is needed because the modes
+have to be chosen not only during RTL generation but also, for example,
+by instruction combination. The result of <code>SELECT_CC_MODE</code> should
+be consistent with the mode used in the patterns; for example to support
+the case of the add on the SPARC discussed above, we have the pattern
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (reg:CCNZ 0)
+ (compare:CCNZ
+ (plus:SI (match_operand:SI 0 &quot;register_operand&quot; &quot;%r&quot;)
+ (match_operand:SI 1 &quot;arith_operand&quot; &quot;rI&quot;))
+ (const_int 0)))]
+ &quot;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>together with a <code>SELECT_CC_MODE</code> that returns <code>CCNZmode</code>
+for comparisons whose argument is a <code>plus</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define SELECT_CC_MODE(OP,X,Y) \
+ (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
+ ? ((OP == LT || OP == LE || OP == GT || OP == GE) \
+ ? CCFPEmode : CCFPmode) \
+ : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \
+ || GET_CODE (X) == NEG || GET_CODE (x) == ASHIFT) \
+ ? CCNZmode : CCmode))
+</pre></div>
+
+<p>Another reason to use modes is to retain information on which operands
+were used by the comparison; see <code>REVERSIBLE_CC_MODE</code> later in
+this section.
+</p>
+<p>You should define this macro if and only if you define extra CC modes
+in <samp><var>machine</var>-modes.def</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCANONICALIZE_005fCOMPARISON"></a>Target Hook: <em>void</em> <strong>TARGET_CANONICALIZE_COMPARISON</strong> <em>(int *<var>code</var>, rtx *<var>op0</var>, rtx *<var>op1</var>, bool <var>op0_preserve_value</var>)</em></dt>
+<dd><p>On some machines not all possible comparisons are defined, but you can
+convert an invalid comparison into a valid one. For example, the Alpha
+does not have a <code>GT</code> comparison, but you can use an <code>LT</code>
+comparison instead and swap the order of the operands.
+</p>
+<p>On such machines, implement this hook to do any required conversions.
+<var>code</var> is the initial comparison code and <var>op0</var> and <var>op1</var>
+are the left and right operands of the comparison, respectively. If
+<var>op0_preserve_value</var> is <code>true</code> the implementation is not
+allowed to change the value of <var>op0</var> since the value might be used
+in RTXs which aren&rsquo;t comparisons. E.g. the implementation is not
+allowed to swap operands in that case.
+</p>
+<p>GCC will not assume that the comparison resulting from this macro is
+valid but will see if the resulting insn matches a pattern in the
+<samp>md</samp> file.
+</p>
+<p>You need not to implement this hook if it would never change the
+comparison code or operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REVERSIBLE_005fCC_005fMODE"></a>Macro: <strong>REVERSIBLE_CC_MODE</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression whose value is one if it is always safe to reverse a
+comparison whose mode is <var>mode</var>. If <code>SELECT_CC_MODE</code>
+can ever return <var>mode</var> for a floating-point inequality comparison,
+then <code>REVERSIBLE_CC_MODE (<var>mode</var>)</code> must be zero.
+</p>
+<p>You need not define this macro if it would always returns zero or if the
+floating-point format is anything other than <code>IEEE_FLOAT_FORMAT</code>.
+For example, here is the definition used on the SPARC, where floating-point
+inequality comparisons are given either <code>CCFPEmode</code> or <code>CCFPmode</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define REVERSIBLE_CC_MODE(MODE) \
+ ((MODE) != CCFPEmode &amp;&amp; (MODE) != CCFPmode)
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-REVERSE_005fCONDITION"></a>Macro: <strong>REVERSE_CONDITION</strong> <em>(<var>code</var>, <var>mode</var>)</em></dt>
+<dd><p>A C expression whose value is reversed condition code of the <var>code</var> for
+comparison done in CC_MODE <var>mode</var>. The macro is used only in case
+<code>REVERSIBLE_CC_MODE (<var>mode</var>)</code> is nonzero. Define this macro in case
+machine has some non-standard way how to reverse certain conditionals. For
+instance in case all floating point conditions are non-trapping, compiler may
+freely convert unordered compares to ordered ones. Then definition may look
+like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define REVERSE_CONDITION(CODE, MODE) \
+ ((MODE) != CCFPmode ? reverse_condition (CODE) \
+ : reverse_condition_maybe_unordered (CODE))
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFIXED_005fCONDITION_005fCODE_005fREGS"></a>Target Hook: <em>bool</em> <strong>TARGET_FIXED_CONDITION_CODE_REGS</strong> <em>(unsigned int *<var>p1</var>, unsigned int *<var>p2</var>)</em></dt>
+<dd><p>On targets which use a hard
+register rather than a pseudo-register to hold condition codes, the
+regular CSE passes are often not able to identify cases in which the
+hard register is set to a common value. Use this hook to enable a
+small pass which optimizes such cases. This hook should return true
+to enable this pass, and it should set the integers to which its
+arguments point to the hard register numbers used for condition codes.
+When there is only one such register, as is true on most systems, the
+integer pointed to by <var>p2</var> should be set to
+<code>INVALID_REGNUM</code>.
+</p>
+<p>The default version of this hook returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCC_005fMODES_005fCOMPATIBLE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_CC_MODES_COMPATIBLE</strong> <em>(machine_mode <var>m1</var>, machine_mode <var>m2</var>)</em></dt>
+<dd><p>On targets which use multiple condition code modes in class
+<code>MODE_CC</code>, it is sometimes the case that a comparison can be
+validly done in more than one mode. On such a system, define this
+target hook to take two mode arguments and to return a mode in which
+both comparisons may be validly done. If there is no such mode,
+return <code>VOIDmode</code>.
+</p>
+<p>The default version of this hook checks whether the modes are the
+same. If they are, it returns that mode. If they are different, it
+returns <code>VOIDmode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFLAGS_005fREGNUM"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_FLAGS_REGNUM</strong></dt>
+<dd><p>If the target has a dedicated flags register, and it needs to use the
+post-reload comparison elimination pass, or the delay slot filler pass,
+then this value should be set appropriately.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Up: <a href="Condition-Code.html#Condition-Code" accesskey="u" rel="up">Condition Code</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Machine-Constraints.html b/share/doc/gccint/Machine-Constraints.html
new file mode 100644
index 0000000..0777b53
--- /dev/null
+++ b/share/doc/gccint/Machine-Constraints.html
@@ -0,0 +1,3282 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Machine Constraints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Machine Constraints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Machine Constraints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" rel="next" title="Disable Insn Alternatives">
+<link href="Modifiers.html#Modifiers" rel="previous" title="Modifiers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Machine-Constraints"></a>
+<div class="header">
+<p>
+Next: <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" accesskey="n" rel="next">Disable Insn Alternatives</a>, Previous: <a href="Modifiers.html#Modifiers" accesskey="p" rel="previous">Modifiers</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constraints-for-Particular-Machines"></a>
+<h4 class="subsection">17.8.5 Constraints for Particular Machines</h4>
+<a name="index-machine-specific-constraints"></a>
+<a name="index-constraints_002c-machine-specific"></a>
+
+<p>Whenever possible, you should use the general-purpose constraint letters
+in <code>asm</code> arguments, since they will convey meaning more readily to
+people reading your code. Failing that, use the constraint letters
+that usually have very similar meanings across architectures. The most
+commonly used constraints are &lsquo;<samp>m</samp>&rsquo; and &lsquo;<samp>r</samp>&rsquo; (for memory and
+general-purpose registers respectively; see <a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a>), and
+&lsquo;<samp>I</samp>&rsquo;, usually the letter indicating the most common
+immediate-constant format.
+</p>
+<p>Each architecture defines additional constraints. These constraints
+are used by the compiler itself for instruction generation, as well as
+for <code>asm</code> statements; therefore, some of the constraints are not
+particularly useful for <code>asm</code>. Here is a summary of some of the
+machine-dependent constraints available on some particular machines;
+it includes both constraints that are useful for <code>asm</code> and
+constraints that aren&rsquo;t. The compiler source file mentioned in the
+table heading for each architecture is the definitive reference for
+the meanings of that architecture&rsquo;s constraints.
+</p>
+<dl compact="compact">
+<dt><em>AArch64 family&mdash;<samp>config/aarch64/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>k</code></dt>
+<dd><p>The stack pointer register (<code>SP</code>)
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Floating point register, Advanced SIMD vector register or SVE vector register
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Like <code>w</code>, but restricted to registers 0 to 15 inclusive.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Like <code>w</code>, but restricted to registers 0 to 7 inclusive.
+</p>
+</dd>
+<dt><code>Upl</code></dt>
+<dd><p>One of the low eight SVE predicate registers (<code>P0</code> to <code>P7</code>)
+</p>
+</dd>
+<dt><code>Upa</code></dt>
+<dd><p>Any of the SVE predicate registers (<code>P0</code> to <code>P15</code>)
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Integer constant that is valid as an immediate operand in an <code>ADD</code>
+instruction
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer constant that is valid as an immediate operand in a <code>SUB</code>
+instruction (once negated)
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer constant that can be used with a 32-bit logical instruction
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer constant that can be used with a 64-bit logical instruction
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer constant that is valid as an immediate operand in a 32-bit <code>MOV</code>
+pseudo instruction. The <code>MOV</code> may be assembled to one of several different
+machine instructions depending on the value
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Integer constant that is valid as an immediate operand in a 64-bit <code>MOV</code>
+pseudo instruction
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>An absolute symbolic address or a label reference
+</p>
+</dd>
+<dt><code>Y</code></dt>
+<dd><p>Floating point constant zero
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>Integer constant zero
+</p>
+</dd>
+<dt><code>Ush</code></dt>
+<dd><p>The high part (bits 12 and upwards) of the pc-relative address of a symbol
+within 4GB of the instruction
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory address which uses a single base register with no offset
+</p>
+</dd>
+<dt><code>Ump</code></dt>
+<dd><p>A memory address suitable for a load/store pair instruction in SI, DI, SF and
+DF modes
+</p>
+</dd>
+</dl>
+
+
+</dd>
+<dt><em>AMD GCN &mdash;<samp>config/gcn/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>I</code></dt>
+<dd><p>Immediate integer in the range -16 to 64
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Immediate 16-bit signed integer
+</p>
+</dd>
+<dt><code>Kf</code></dt>
+<dd><p>Immediate constant -1
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Immediate 15-bit unsigned integer
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>Immediate constant that can be inlined in an instruction encoding: integer
+-16..64, or float 0.0, +/-0.5, +/-1.0, +/-2.0,
++/-4.0, 1.0/(2.0*PI)
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>Immediate 32-bit signed integer that can be attached to an instruction encoding
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>Immediate 32-bit integer in range -16..4294967295 (i.e. 32-bit unsigned
+integer or &lsquo;<samp>A</samp>&rsquo; constraint)
+</p>
+</dd>
+<dt><code>DA</code></dt>
+<dd><p>Immediate 64-bit constant that can be split into two &lsquo;<samp>A</samp>&rsquo; constants
+</p>
+</dd>
+<dt><code>DB</code></dt>
+<dd><p>Immediate 64-bit constant that can be split into two &lsquo;<samp>B</samp>&rsquo; constants
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Any <code>unspec</code>
+</p>
+</dd>
+<dt><code>Y</code></dt>
+<dd><p>Any <code>symbol_ref</code> or <code>label_ref</code>
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>VGPR register
+</p>
+</dd>
+<dt><code>Sg</code></dt>
+<dd><p>SGPR register
+</p>
+</dd>
+<dt><code>SD</code></dt>
+<dd><p>SGPR registers valid for instruction destinations, including VCC, M0 and EXEC
+</p>
+</dd>
+<dt><code>SS</code></dt>
+<dd><p>SGPR registers valid for instruction sources, including VCC, M0, EXEC and SCC
+</p>
+</dd>
+<dt><code>Sm</code></dt>
+<dd><p>SGPR registers valid as a source for scalar memory instructions (excludes M0
+and EXEC)
+</p>
+</dd>
+<dt><code>Sv</code></dt>
+<dd><p>SGPR registers valid as a source or destination for vector instructions
+(excludes EXEC)
+</p>
+</dd>
+<dt><code>ca</code></dt>
+<dd><p>All condition registers: SCC, VCCZ, EXECZ
+</p>
+</dd>
+<dt><code>cs</code></dt>
+<dd><p>Scalar condition register: SCC
+</p>
+</dd>
+<dt><code>cV</code></dt>
+<dd><p>Vector condition register: VCC, VCC_LO, VCC_HI
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>EXEC register (EXEC_LO and EXEC_HI)
+</p>
+</dd>
+<dt><code>RB</code></dt>
+<dd><p>Memory operand with address space suitable for <code>buffer_*</code> instructions
+</p>
+</dd>
+<dt><code>RF</code></dt>
+<dd><p>Memory operand with address space suitable for <code>flat_*</code> instructions
+</p>
+</dd>
+<dt><code>RS</code></dt>
+<dd><p>Memory operand with address space suitable for <code>s_*</code> instructions
+</p>
+</dd>
+<dt><code>RL</code></dt>
+<dd><p>Memory operand with address space suitable for <code>ds_*</code> LDS instructions
+</p>
+</dd>
+<dt><code>RG</code></dt>
+<dd><p>Memory operand with address space suitable for <code>ds_*</code> GDS instructions
+</p>
+</dd>
+<dt><code>RD</code></dt>
+<dd><p>Memory operand with address space suitable for any <code>ds_*</code> instructions
+</p>
+</dd>
+<dt><code>RM</code></dt>
+<dd><p>Memory operand with address space suitable for <code>global_*</code> instructions
+</p>
+</dd>
+</dl>
+
+
+</dd>
+<dt><em>ARC &mdash;<samp>config/arc/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>q</code></dt>
+<dd><p>Registers usable in ARCompact 16-bit instructions: <code>r0</code>-<code>r3</code>,
+<code>r12</code>-<code>r15</code>. This constraint can only match when the <samp>-mq</samp>
+option is in effect.
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Registers usable as base-regs of memory addresses in ARCompact 16-bit memory
+instructions: <code>r0</code>-<code>r3</code>, <code>r12</code>-<code>r15</code>, <code>sp</code>.
+This constraint can only match when the <samp>-mq</samp>
+option is in effect.
+</p></dd>
+<dt><code>D</code></dt>
+<dd><p>ARC FPX (dpfp) 64-bit registers. <code>D0</code>, <code>D1</code>.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A signed 12-bit integer constant.
+</p>
+</dd>
+<dt><code>Cal</code></dt>
+<dd><p>constant for arithmetic/logical operations. This might be any constant
+that can be put into a long immediate by the assmbler or linker without
+involving a PIC relocation.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>A 3-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A 6-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>CnL</code></dt>
+<dd><p>One&rsquo;s complement of a 6-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>CmL</code></dt>
+<dd><p>Two&rsquo;s complement of a 6-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>A 5-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>A 7-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>A 8-bit unsigned integer constant.
+</p>
+</dd>
+<dt><code>H</code></dt>
+<dd><p>Any const_double value.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>ARM family&mdash;<samp>config/arm/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>h</code></dt>
+<dd><p>In Thumb state, the core registers <code>r8</code>-<code>r15</code>.
+</p>
+</dd>
+<dt><code>k</code></dt>
+<dd><p>The stack pointer register.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>In Thumb State the core registers <code>r0</code>-<code>r7</code>. In ARM state this
+is an alias for the <code>r</code> constraint.
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>VFP floating-point registers <code>s0</code>-<code>s31</code>. Used for 32 bit values.
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>VFP floating-point registers <code>d0</code>-<code>d31</code> and the appropriate
+subset <code>d0</code>-<code>d15</code> based on command line options.
+Used for 64 bit values only. Not valid for Thumb1.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>The iWMMX co-processor registers.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>The iWMMX GR registers.
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>The floating-point constant 0.0
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Integer that is valid as an immediate operand in a data processing
+instruction. That is, an integer in the range 0 to 255 rotated by a
+multiple of 2
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer in the range -4095 to 4095
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer that satisfies constraint &lsquo;<samp>I</samp>&rsquo; when inverted (ones complement)
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer that satisfies constraint &lsquo;<samp>I</samp>&rsquo; when negated (twos complement)
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer in the range 0 to 32
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory reference where the exact address is in a single register
+(&lsquo;&lsquo;<samp>m</samp>&rsquo;&rsquo; is preferable for <code>asm</code> statements)
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>An item in the constant pool
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>A symbol in the text segment of the current file
+</p>
+</dd>
+<dt><code>Uv</code></dt>
+<dd><p>A memory reference suitable for VFP load/store insns (reg+constant offset)
+</p>
+</dd>
+<dt><code>Uy</code></dt>
+<dd><p>A memory reference suitable for iWMMXt load/store instructions.
+</p>
+</dd>
+<dt><code>Uq</code></dt>
+<dd><p>A memory reference suitable for the ARMv4 ldrsb instruction.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>AVR family&mdash;<samp>config/avr/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>l</code></dt>
+<dd><p>Registers from r0 to r15
+</p>
+</dd>
+<dt><code>a</code></dt>
+<dd><p>Registers from r16 to r23
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Registers from r16 to r31
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Registers from r24 to r31. These registers can be used in &lsquo;<samp>adiw</samp>&rsquo; command
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Pointer register (r26&ndash;r31)
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Base pointer register (r28&ndash;r31)
+</p>
+</dd>
+<dt><code>q</code></dt>
+<dd><p>Stack pointer register (SPH:SPL)
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>Temporary register r0
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Register pair X (r27:r26)
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Register pair Y (r29:r28)
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>Register pair Z (r31:r30)
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Constant greater than -1, less than 64
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Constant greater than -64, less than 1
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Constant integer 2
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Constant integer 0
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Constant that fits in 8 bits
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Constant integer -1
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Constant integer 8, 16, or 24
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>Constant integer 1
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>A floating point constant 0.0
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory address based on Y or Z pointer with displacement.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>Blackfin family&mdash;<samp>config/bfin/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>P register
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>D register
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>A call clobbered P register.
+</p>
+</dd>
+<dt><code>q<var>n</var></code></dt>
+<dd><p>A single register. If <var>n</var> is in the range 0 to 7, the corresponding D
+register. If it is <code>A</code>, then the register P0.
+</p>
+</dd>
+<dt><code>D</code></dt>
+<dd><p>Even-numbered D register
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>Odd-numbered D register
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Accumulator register.
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>Even-numbered accumulator register.
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>Odd-numbered accumulator register.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>I register
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>B register
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>M register
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Registers used for circular buffering, i.e. I, B, or L registers.
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>The CC register.
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>LT0 or LT1.
+</p>
+</dd>
+<dt><code>k</code></dt>
+<dd><p>LC0 or LC1.
+</p>
+</dd>
+<dt><code>u</code></dt>
+<dd><p>LB0 or LB1.
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Any D, P, B, M, I or L register.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Additional registers typically used only in prologues and epilogues: RETS,
+RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP.
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Any register except accumulators or CC.
+</p>
+</dd>
+<dt><code>Ksh</code></dt>
+<dd><p>Signed 16 bit integer (in the range -32768 to 32767)
+</p>
+</dd>
+<dt><code>Kuh</code></dt>
+<dd><p>Unsigned 16 bit integer (in the range 0 to 65535)
+</p>
+</dd>
+<dt><code>Ks7</code></dt>
+<dd><p>Signed 7 bit integer (in the range -64 to 63)
+</p>
+</dd>
+<dt><code>Ku7</code></dt>
+<dd><p>Unsigned 7 bit integer (in the range 0 to 127)
+</p>
+</dd>
+<dt><code>Ku5</code></dt>
+<dd><p>Unsigned 5 bit integer (in the range 0 to 31)
+</p>
+</dd>
+<dt><code>Ks4</code></dt>
+<dd><p>Signed 4 bit integer (in the range -8 to 7)
+</p>
+</dd>
+<dt><code>Ks3</code></dt>
+<dd><p>Signed 3 bit integer (in the range -3 to 4)
+</p>
+</dd>
+<dt><code>Ku3</code></dt>
+<dd><p>Unsigned 3 bit integer (in the range 0 to 7)
+</p>
+</dd>
+<dt><code>P<var>n</var></code></dt>
+<dd><p>Constant <var>n</var>, where <var>n</var> is a single-digit constant in the range 0 to 4.
+</p>
+</dd>
+<dt><code>PA</code></dt>
+<dd><p>An integer equal to one of the MACFLAG_XXX constants that is suitable for
+use with either accumulator.
+</p>
+</dd>
+<dt><code>PB</code></dt>
+<dd><p>An integer equal to one of the MACFLAG_XXX constants that is suitable for
+use only with accumulator A1.
+</p>
+</dd>
+<dt><code>M1</code></dt>
+<dd><p>Constant 255.
+</p>
+</dd>
+<dt><code>M2</code></dt>
+<dd><p>Constant 65535.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>An integer constant with exactly a single bit set.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>An integer constant with all bits set except exactly one.
+</p>
+</dd>
+<dt><code>H</code></dt>
+<dt><code>Q</code></dt>
+<dd><p>Any SYMBOL_REF.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>C-SKY&mdash;<samp>config/csky/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>The mini registers r0 - r7.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>The low registers r0 - r15.
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>C register.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>HI and LO registers.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>LO register.
+</p>
+</dd>
+<dt><code>h</code></dt>
+<dd><p>HI register.
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>Vector registers.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>Stack pointer register (SP).
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory address which uses a base register with a short offset
+or with a index register with its scale.
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A memory address which uses a base register with a index register
+with its scale.
+</p></dd>
+</dl>
+
+<p>The C-SKY back end supports a large set of additional constraints
+that are only useful for instruction selection or splitting rather
+than inline asm, such as constraints representing constant integer
+ranges accepted by particular instruction encodings.
+Refer to the source code for details.
+</p>
+</dd>
+<dt><em>Epiphany&mdash;<samp>config/epiphany/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>U16</code></dt>
+<dd><p>An unsigned 16-bit constant.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>An unsigned 5-bit constant.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A signed 11-bit constant.
+</p>
+</dd>
+<dt><code>Cm1</code></dt>
+<dd><p>A signed 11-bit constant added to -1.
+Can only match when the <samp>-m1reg-<var>reg</var></samp> option is active.
+</p>
+</dd>
+<dt><code>Cl1</code></dt>
+<dd><p>Left-shift of -1, i.e., a bit mask with a block of leading ones, the rest
+being a block of trailing zeroes.
+Can only match when the <samp>-m1reg-<var>reg</var></samp> option is active.
+</p>
+</dd>
+<dt><code>Cr1</code></dt>
+<dd><p>Right-shift of -1, i.e., a bit mask with a trailing block of ones, the
+rest being zeroes. Or to put it another way, one less than a power of two.
+Can only match when the <samp>-m1reg-<var>reg</var></samp> option is active.
+</p>
+</dd>
+<dt><code>Cal</code></dt>
+<dd><p>Constant for arithmetic/logical operations.
+This is like <code>i</code>, except that for position independent code,
+no symbols / expressions needing relocations are allowed.
+</p>
+</dd>
+<dt><code>Csy</code></dt>
+<dd><p>Symbolic constant for call/jump instruction.
+</p>
+</dd>
+<dt><code>Rcs</code></dt>
+<dd><p>The register class usable in short insns. This is a register class
+constraint, and can thus drive register allocation.
+This constraint won&rsquo;t match unless <samp>-mprefer-short-insn-regs</samp> is
+in effect.
+</p>
+</dd>
+<dt><code>Rsc</code></dt>
+<dd><p>The register class of registers that can be used to hold a
+sibcall call address. I.e., a caller-saved register.
+</p>
+</dd>
+<dt><code>Rct</code></dt>
+<dd><p>Core control register class.
+</p>
+</dd>
+<dt><code>Rgs</code></dt>
+<dd><p>The register group usable in short insns.
+This constraint does not use a register class, so that it only
+passively matches suitable registers, and doesn&rsquo;t drive register allocation.
+</p>
+</dd>
+<dt><code>Car</code></dt>
+<dd><p>Constant suitable for the addsi3_r pattern. This is a valid offset
+For byte, halfword, or word addressing.
+</p>
+</dd>
+<dt><code>Rra</code></dt>
+<dd><p>Matches the return address if it can be replaced with the link register.
+</p>
+</dd>
+<dt><code>Rcc</code></dt>
+<dd><p>Matches the integer condition code register.
+</p>
+</dd>
+<dt><code>Sra</code></dt>
+<dd><p>Matches the return address if it is in a stack slot.
+</p>
+</dd>
+<dt><code>Cfm</code></dt>
+<dd><p>Matches control register values to switch fp mode, which are encapsulated in
+<code>UNSPEC_FP_MODE</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>FRV&mdash;<samp>config/frv/frv.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Register in the class <code>ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>).
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Register in the class <code>EVEN_ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>).
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Register in the class <code>CC_REGS</code> (<code>fcc0</code> to <code>fcc3</code> and
+<code>icc0</code> to <code>icc3</code>).
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Register in the class <code>GPR_REGS</code> (<code>gr0</code> to <code>gr63</code>).
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Register in the class <code>EVEN_REGS</code> (<code>gr0</code> to <code>gr63</code>).
+Odd registers are excluded not in the class but through the use of a machine
+mode larger than 4 bytes.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Register in the class <code>FPR_REGS</code> (<code>fr0</code> to <code>fr63</code>).
+</p>
+</dd>
+<dt><code>h</code></dt>
+<dd><p>Register in the class <code>FEVEN_REGS</code> (<code>fr0</code> to <code>fr63</code>).
+Odd registers are excluded not in the class but through the use of a machine
+mode larger than 4 bytes.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>Register in the class <code>LR_REG</code> (the <code>lr</code> register).
+</p>
+</dd>
+<dt><code>q</code></dt>
+<dd><p>Register in the class <code>QUAD_REGS</code> (<code>gr2</code> to <code>gr63</code>).
+Register numbers not divisible by 4 are excluded not in the class but through
+the use of a machine mode larger than 8 bytes.
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>Register in the class <code>ICC_REGS</code> (<code>icc0</code> to <code>icc3</code>).
+</p>
+</dd>
+<dt><code>u</code></dt>
+<dd><p>Register in the class <code>FCC_REGS</code> (<code>fcc0</code> to <code>fcc3</code>).
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>Register in the class <code>ICR_REGS</code> (<code>cc4</code> to <code>cc7</code>).
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Register in the class <code>FCR_REGS</code> (<code>cc0</code> to <code>cc3</code>).
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Register in the class <code>QUAD_FPR_REGS</code> (<code>fr0</code> to <code>fr63</code>).
+Register numbers not divisible by 4 are excluded not in the class but through
+the use of a machine mode larger than 8 bytes.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>Register in the class <code>SPR_REGS</code> (<code>lcr</code> and <code>lr</code>).
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>Register in the class <code>QUAD_ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>).
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>Register in the class <code>ACCG_REGS</code> (<code>accg0</code> to <code>accg7</code>).
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>Register in the class <code>CR_REGS</code> (<code>cc0</code> to <code>cc7</code>).
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating point constant zero
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>6-bit signed integer constant
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>10-bit signed integer constant
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>16-bit signed integer constant
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>16-bit unsigned integer constant
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>12-bit signed integer constant that is negative&mdash;i.e. in the
+range of -2048 to -1
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Constant zero
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>12-bit signed integer constant that is greater than zero&mdash;i.e. in the
+range of 1 to 2047.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>FT32&mdash;<samp>config/ft32/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>A</code></dt>
+<dd><p>An absolute address
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>An offset address
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A register indirect memory operand
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>An offset address.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>An offset address.
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>The constant zero or one
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A 16-bit signed constant (-32768 &hellip; 32767)
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>A bitfield mask suitable for bext or bins
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>An inverted bitfield mask suitable for bext or bins
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A 16-bit unsigned constant, multiple of 4 (0 &hellip; 65532)
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>A 20-bit signed constant (-524288 &hellip; 524287)
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>A constant for a bitfield width (1 &hellip; 16)
+</p>
+</dd>
+<dt><code>KA</code></dt>
+<dd><p>A 10-bit signed constant (-512 &hellip; 511)
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>Hewlett-Packard PA-RISC&mdash;<samp>config/pa/pa.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>General register 1
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Floating point register
+</p>
+</dd>
+<dt><code>q</code></dt>
+<dd><p>Shift amount register
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Floating point register (deprecated)
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Upper floating point register (32-bit), floating point register (64-bit)
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>Any register
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Signed 11-bit integer constant
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Signed 14-bit integer constant
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer constant that can be deposited with a <code>zdepi</code> instruction
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Signed 5-bit integer constant
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer constant 0
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Integer constant that can be loaded with a <code>ldil</code> instruction
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Integer constant whose value plus one is a power of 2
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>Integer constant that can be used for <code>and</code> operations in <code>depi</code>
+and <code>extru</code> instructions
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Integer constant 31
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Integer constant 63
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating-point constant 0.0
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>A <code>lo_sum</code> data-linkage-table memory operand
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory operand that can be used as the destination operand of an
+integer store instruction
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>A scaled or unscaled indexed memory operand
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>A memory operand for floating-point loads and stores
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A register indirect memory operand
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>Intel IA-64&mdash;<samp>config/ia64/ia64.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>General register <code>r0</code> to <code>r3</code> for <code>addl</code> instruction
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Branch register
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Predicate register (&lsquo;<samp>c</samp>&rsquo; as in &ldquo;conditional&rdquo;)
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Application register residing in M-unit
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Application register residing in I-unit
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Floating-point register
+</p>
+</dd>
+<dt><code>m</code></dt>
+<dd><p>Memory operand. If used together with &lsquo;<samp>&lt;</samp>&rsquo; or &lsquo;<samp>&gt;</samp>&rsquo;,
+the operand can have postincrement and postdecrement which
+require printing with &lsquo;<samp>%Pn</samp>&rsquo; on IA-64.
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating-point constant 0.0 or 1.0
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>14-bit signed integer constant
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>22-bit signed integer constant
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>8-bit signed integer constant for logical instructions
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>8-bit adjusted signed integer constant for compare pseudo-ops
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>6-bit unsigned integer constant for shift counts
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>9-bit signed integer constant for load and store postincrements
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>The constant zero
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>0 or -1 for <code>dep</code> instruction
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Non-volatile memory for floating-point loads and stores
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>Integer constant in the range 1 to 4 for <code>shladd</code> instruction
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Memory operand except postincrement and postdecrement. This is
+now roughly the same as &lsquo;<samp>m</samp>&rsquo; when not used together with &lsquo;<samp>&lt;</samp>&rsquo;
+or &lsquo;<samp>&gt;</samp>&rsquo;.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>M32C&mdash;<samp>config/m32c/m32c.cc</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>Rsp</code></dt>
+<dt><code>Rfb</code></dt>
+<dt><code>Rsb</code></dt>
+<dd><p>&lsquo;<samp>$sp</samp>&rsquo;, &lsquo;<samp>$fb</samp>&rsquo;, &lsquo;<samp>$sb</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>Rcr</code></dt>
+<dd><p>Any control register, when they&rsquo;re 16 bits wide (nothing if control
+registers are 24 bits wide)
+</p>
+</dd>
+<dt><code>Rcl</code></dt>
+<dd><p>Any control register, when they&rsquo;re 24 bits wide.
+</p>
+</dd>
+<dt><code>R0w</code></dt>
+<dt><code>R1w</code></dt>
+<dt><code>R2w</code></dt>
+<dt><code>R3w</code></dt>
+<dd><p>$r0, $r1, $r2, $r3.
+</p>
+</dd>
+<dt><code>R02</code></dt>
+<dd><p>$r0 or $r2, or $r2r0 for 32 bit values.
+</p>
+</dd>
+<dt><code>R13</code></dt>
+<dd><p>$r1 or $r3, or $r3r1 for 32 bit values.
+</p>
+</dd>
+<dt><code>Rdi</code></dt>
+<dd><p>A register that can hold a 64 bit value.
+</p>
+</dd>
+<dt><code>Rhl</code></dt>
+<dd><p>$r0 or $r1 (registers with addressable high/low bytes)
+</p>
+</dd>
+<dt><code>R23</code></dt>
+<dd><p>$r2 or $r3
+</p>
+</dd>
+<dt><code>Raa</code></dt>
+<dd><p>Address registers
+</p>
+</dd>
+<dt><code>Raw</code></dt>
+<dd><p>Address registers when they&rsquo;re 16 bits wide.
+</p>
+</dd>
+<dt><code>Ral</code></dt>
+<dd><p>Address registers when they&rsquo;re 24 bits wide.
+</p>
+</dd>
+<dt><code>Rqi</code></dt>
+<dd><p>Registers that can hold QI values.
+</p>
+</dd>
+<dt><code>Rad</code></dt>
+<dd><p>Registers that can be used with displacements ($a0, $a1, $sb).
+</p>
+</dd>
+<dt><code>Rsi</code></dt>
+<dd><p>Registers that can hold 32 bit values.
+</p>
+</dd>
+<dt><code>Rhi</code></dt>
+<dd><p>Registers that can hold 16 bit values.
+</p>
+</dd>
+<dt><code>Rhc</code></dt>
+<dd><p>Registers chat can hold 16 bit values, including all control
+registers.
+</p>
+</dd>
+<dt><code>Rra</code></dt>
+<dd><p>$r0 through R1, plus $a0 and $a1.
+</p>
+</dd>
+<dt><code>Rfl</code></dt>
+<dd><p>The flags register.
+</p>
+</dd>
+<dt><code>Rmm</code></dt>
+<dd><p>The memory-based pseudo-registers $mem0 through $mem15.
+</p>
+</dd>
+<dt><code>Rpi</code></dt>
+<dd><p>Registers that can hold pointers (16 bit registers for r8c, m16c; 24
+bit registers for m32cm, m32c).
+</p>
+</dd>
+<dt><code>Rpa</code></dt>
+<dd><p>Matches multiple registers in a PARALLEL to form a larger register.
+Used to match function return values.
+</p>
+</dd>
+<dt><code>Is3</code></dt>
+<dd><p>-8 &hellip; 7
+</p>
+</dd>
+<dt><code>IS1</code></dt>
+<dd><p>-128 &hellip; 127
+</p>
+</dd>
+<dt><code>IS2</code></dt>
+<dd><p>-32768 &hellip; 32767
+</p>
+</dd>
+<dt><code>IU2</code></dt>
+<dd><p>0 &hellip; 65535
+</p>
+</dd>
+<dt><code>In4</code></dt>
+<dd><p>-8 &hellip; -1 or 1 &hellip; 8
+</p>
+</dd>
+<dt><code>In5</code></dt>
+<dd><p>-16 &hellip; -1 or 1 &hellip; 16
+</p>
+</dd>
+<dt><code>In6</code></dt>
+<dd><p>-32 &hellip; -1 or 1 &hellip; 32
+</p>
+</dd>
+<dt><code>IM2</code></dt>
+<dd><p>-65536 &hellip; -1
+</p>
+</dd>
+<dt><code>Ilb</code></dt>
+<dd><p>An 8 bit value with exactly one bit set.
+</p>
+</dd>
+<dt><code>Ilw</code></dt>
+<dd><p>A 16 bit value with exactly one bit set.
+</p>
+</dd>
+<dt><code>Sd</code></dt>
+<dd><p>The common src/dest memory addressing modes.
+</p>
+</dd>
+<dt><code>Sa</code></dt>
+<dd><p>Memory addressed using $a0 or $a1.
+</p>
+</dd>
+<dt><code>Si</code></dt>
+<dd><p>Memory addressed with immediate addresses.
+</p>
+</dd>
+<dt><code>Ss</code></dt>
+<dd><p>Memory addressed using the stack pointer ($sp).
+</p>
+</dd>
+<dt><code>Sf</code></dt>
+<dd><p>Memory addressed using the frame base register ($fb).
+</p>
+</dd>
+<dt><code>Ss</code></dt>
+<dd><p>Memory addressed using the small base register ($sb).
+</p>
+</dd>
+<dt><code>S1</code></dt>
+<dd><p>$r1h
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>LoongArch&mdash;<samp>config/loongarch/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>f</code></dt>
+<dd><p>A floating-point register (if available).
+</p></dd>
+<dt><code>k</code></dt>
+<dd><p>A memory operand whose address is formed by a base register and
+(optionally scaled) index register.
+</p></dd>
+<dt><code>l</code></dt>
+<dd><p>A signed 16-bit constant.
+</p></dd>
+<dt><code>m</code></dt>
+<dd><p>A memory operand whose address is formed by a base register and offset
+that is suitable for use in instructions with the same addressing mode
+as <code>st.w</code> and <code>ld.w</code>.
+</p></dd>
+<dt><code>I</code></dt>
+<dd><p>A signed 12-bit constant (for arithmetic instructions).
+</p></dd>
+<dt><code>K</code></dt>
+<dd><p>An unsigned 12-bit constant (for logic instructions).
+</p></dd>
+<dt><code>ZB</code></dt>
+<dd><p>An address that is held in a general-purpose register.
+The offset is zero.
+</p></dd>
+<dt><code>ZC</code></dt>
+<dd><p>A memory operand whose address is formed by a base register and offset
+that is suitable for use in instructions with the same addressing mode
+as <code>ll.w</code> and <code>sc.w</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>MicroBlaze&mdash;<samp>config/microblaze/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>d</code></dt>
+<dd><p>A general register (<code>r0</code> to <code>r31</code>).
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>A status register (<code>rmsr</code>, <code>$fcc1</code> to <code>$fcc7</code>).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>MIPS&mdash;<samp>config/mips/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>d</code></dt>
+<dd><p>A general-purpose register. This is equivalent to <code>r</code> unless
+generating MIPS16 code, in which case the MIPS16 register set is used.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>A floating-point register (if available).
+</p>
+</dd>
+<dt><code>h</code></dt>
+<dd><p>Formerly the <code>hi</code> register. This constraint is no longer supported.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>The <code>lo</code> register. Use this register to store values that are
+no bigger than a word.
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>The concatenated <code>hi</code> and <code>lo</code> registers. Use this register
+to store doubleword values.
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>A register suitable for use in an indirect jump. This will always be
+<code>$25</code> for <samp>-mabicalls</samp>.
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>Register <code>$3</code>. Do not use this constraint in new code;
+it is retained only for compatibility with glibc.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Equivalent to <code>r</code>; retained for backwards compatibility.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>A floating-point condition code register.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A signed 16-bit constant (for arithmetic instructions).
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer zero.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>An unsigned 16-bit constant (for logic instructions).
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A signed 32-bit constant in which the lower 16 bits are zero.
+Such constants can be loaded using <code>lui</code>.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>A constant that cannot be loaded using <code>lui</code>, <code>addiu</code>
+or <code>ori</code>.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>A constant in the range -65535 to -1 (inclusive).
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>A signed 15-bit constant.
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>A constant in the range 1 to 65535 (inclusive).
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating-point zero.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>An address that can be used in a non-macro load or store.
+</p>
+</dd>
+<dt><code>ZC</code></dt>
+<dd><p>A memory operand whose address is formed by a base register and offset
+that is suitable for use in instructions with the same addressing mode
+as <code>ll</code> and <code>sc</code>.
+</p>
+</dd>
+<dt><code>ZD</code></dt>
+<dd><p>An address suitable for a <code>prefetch</code> instruction, or for any other
+instruction with the same addressing mode as <code>prefetch</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>Motorola 680x0&mdash;<samp>config/m68k/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Address register
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Data register
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>68881 floating-point register, if available
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Integer in the range 1 to 8
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>16-bit signed number
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Signed number whose magnitude is greater than 0x80
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer in the range -8 to -1
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Signed number whose magnitude is greater than 0x100
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>16 (for rotate using swap)
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>Numbers that mov3q can handle
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating point constant that is not a 68881 constant
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Operands that satisfy &rsquo;m&rsquo; when -mpcrel is in effect
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>Operands that satisfy &rsquo;s&rsquo; when -mpcrel is not in effect
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Address register indirect addressing mode
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Register offset addressing
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>const_call_operand
+</p>
+</dd>
+<dt><code>Cs</code></dt>
+<dd><p>symbol_ref or const
+</p>
+</dd>
+<dt><code>Ci</code></dt>
+<dd><p>const_int
+</p>
+</dd>
+<dt><code>C0</code></dt>
+<dd><p>const_int 0
+</p>
+</dd>
+<dt><code>Cj</code></dt>
+<dd><p>Range of signed numbers that don&rsquo;t fit in 16 bits
+</p>
+</dd>
+<dt><code>Cmvq</code></dt>
+<dd><p>Integers valid for mvq
+</p>
+</dd>
+<dt><code>Capsw</code></dt>
+<dd><p>Integers valid for a moveq followed by a swap
+</p>
+</dd>
+<dt><code>Cmvz</code></dt>
+<dd><p>Integers valid for mvz
+</p>
+</dd>
+<dt><code>Cmvs</code></dt>
+<dd><p>Integers valid for mvs
+</p>
+</dd>
+<dt><code>Ap</code></dt>
+<dd><p>push_operand
+</p>
+</dd>
+<dt><code>Ac</code></dt>
+<dd><p>Non-register operands allowed in clr
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>Moxie&mdash;<samp>config/moxie/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>A</code></dt>
+<dd><p>An absolute address
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>An offset address
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A register indirect memory operand
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A constant in the range of 0 to 255.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>A constant in the range of 0 to -255.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>MSP430&ndash;<samp>config/msp430/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>R12</code></dt>
+<dd><p>Register R12.
+</p>
+</dd>
+<dt><code>R13</code></dt>
+<dd><p>Register R13.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer constant 1.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer constant -1^20..1^19.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer constant 1-4.
+</p>
+</dd>
+<dt><code>Ya</code></dt>
+<dd><p>Memory references which do not require an extended MOVX instruction.
+</p>
+</dd>
+<dt><code>Yl</code></dt>
+<dd><p>Memory reference, labels only.
+</p>
+</dd>
+<dt><code>Ys</code></dt>
+<dd><p>Memory reference, stack only.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>NDS32&mdash;<samp>config/nds32/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>w</code></dt>
+<dd><p>LOW register class $r0 to $r7 constraint for V3/V3M ISA.
+</p></dd>
+<dt><code>l</code></dt>
+<dd><p>LOW register class $r0 to $r7.
+</p></dd>
+<dt><code>d</code></dt>
+<dd><p>MIDDLE register class $r0 to $r11, $r16 to $r19.
+</p></dd>
+<dt><code>h</code></dt>
+<dd><p>HIGH register class $r12 to $r14, $r20 to $r31.
+</p></dd>
+<dt><code>t</code></dt>
+<dd><p>Temporary assist register $ta (i.e. $r15).
+</p></dd>
+<dt><code>k</code></dt>
+<dd><p>Stack register $sp.
+</p></dd>
+<dt><code>Iu03</code></dt>
+<dd><p>Unsigned immediate 3-bit value.
+</p></dd>
+<dt><code>In03</code></dt>
+<dd><p>Negative immediate 3-bit value in the range of -7&ndash;0.
+</p></dd>
+<dt><code>Iu04</code></dt>
+<dd><p>Unsigned immediate 4-bit value.
+</p></dd>
+<dt><code>Is05</code></dt>
+<dd><p>Signed immediate 5-bit value.
+</p></dd>
+<dt><code>Iu05</code></dt>
+<dd><p>Unsigned immediate 5-bit value.
+</p></dd>
+<dt><code>In05</code></dt>
+<dd><p>Negative immediate 5-bit value in the range of -31&ndash;0.
+</p></dd>
+<dt><code>Ip05</code></dt>
+<dd><p>Unsigned immediate 5-bit value for movpi45 instruction with range 16&ndash;47.
+</p></dd>
+<dt><code>Iu06</code></dt>
+<dd><p>Unsigned immediate 6-bit value constraint for addri36.sp instruction.
+</p></dd>
+<dt><code>Iu08</code></dt>
+<dd><p>Unsigned immediate 8-bit value.
+</p></dd>
+<dt><code>Iu09</code></dt>
+<dd><p>Unsigned immediate 9-bit value.
+</p></dd>
+<dt><code>Is10</code></dt>
+<dd><p>Signed immediate 10-bit value.
+</p></dd>
+<dt><code>Is11</code></dt>
+<dd><p>Signed immediate 11-bit value.
+</p></dd>
+<dt><code>Is15</code></dt>
+<dd><p>Signed immediate 15-bit value.
+</p></dd>
+<dt><code>Iu15</code></dt>
+<dd><p>Unsigned immediate 15-bit value.
+</p></dd>
+<dt><code>Ic15</code></dt>
+<dd><p>A constant which is not in the range of imm15u but ok for bclr instruction.
+</p></dd>
+<dt><code>Ie15</code></dt>
+<dd><p>A constant which is not in the range of imm15u but ok for bset instruction.
+</p></dd>
+<dt><code>It15</code></dt>
+<dd><p>A constant which is not in the range of imm15u but ok for btgl instruction.
+</p></dd>
+<dt><code>Ii15</code></dt>
+<dd><p>A constant whose compliment value is in the range of imm15u
+and ok for bitci instruction.
+</p></dd>
+<dt><code>Is16</code></dt>
+<dd><p>Signed immediate 16-bit value.
+</p></dd>
+<dt><code>Is17</code></dt>
+<dd><p>Signed immediate 17-bit value.
+</p></dd>
+<dt><code>Is19</code></dt>
+<dd><p>Signed immediate 19-bit value.
+</p></dd>
+<dt><code>Is20</code></dt>
+<dd><p>Signed immediate 20-bit value.
+</p></dd>
+<dt><code>Ihig</code></dt>
+<dd><p>The immediate value that can be simply set high 20-bit.
+</p></dd>
+<dt><code>Izeb</code></dt>
+<dd><p>The immediate value 0xff.
+</p></dd>
+<dt><code>Izeh</code></dt>
+<dd><p>The immediate value 0xffff.
+</p></dd>
+<dt><code>Ixls</code></dt>
+<dd><p>The immediate value 0x01.
+</p></dd>
+<dt><code>Ix11</code></dt>
+<dd><p>The immediate value 0x7ff.
+</p></dd>
+<dt><code>Ibms</code></dt>
+<dd><p>The immediate value with power of 2.
+</p></dd>
+<dt><code>Ifex</code></dt>
+<dd><p>The immediate value with power of 2 minus 1.
+</p></dd>
+<dt><code>U33</code></dt>
+<dd><p>Memory constraint for 333 format.
+</p></dd>
+<dt><code>U45</code></dt>
+<dd><p>Memory constraint for 45 format.
+</p></dd>
+<dt><code>U37</code></dt>
+<dd><p>Memory constraint for 37 format.
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>Nios II family&mdash;<samp>config/nios2/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>I</code></dt>
+<dd><p>Integer that is valid as an immediate operand in an
+instruction taking a signed 16-bit number. Range
+-32768 to 32767.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer that is valid as an immediate operand in an
+instruction taking an unsigned 16-bit number. Range
+0 to 65535.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer that is valid as an immediate operand in an
+instruction taking only the upper 16-bits of a
+32-bit number. Range 32-bit numbers with the lower
+16-bits being 0.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer that is valid as an immediate operand for a
+shift instruction. Range 0 to 31.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer that is valid as an immediate operand for
+only the value 0. Can be used in conjunction with
+the format modifier <code>z</code> to use <code>r0</code>
+instead of <code>0</code> in the assembly output.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Integer that is valid as an immediate operand for
+a custom instruction opcode. Range 0 to 255.
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>An immediate operand for R2 andchi/andci instructions.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Matches immediates which are addresses in the small
+data section and therefore can be added to <code>gp</code>
+as a 16-bit immediate to re-create their 32-bit value.
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Matches constants suitable as an operand for the rdprs and
+cache instructions.
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>A memory operand suitable for Nios II R2 load/store
+exclusive instructions.
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>A memory operand suitable for load/store IO and cache
+instructions.
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>A <code>const</code> wrapped <code>UNSPEC</code> expression,
+representing a supported PIC or TLS relocation.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>OpenRISC&mdash;<samp>config/or1k/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>I</code></dt>
+<dd><p>Integer that is valid as an immediate operand in an
+instruction taking a signed 16-bit number. Range
+-32768 to 32767.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer that is valid as an immediate operand in an
+instruction taking an unsigned 16-bit number. Range
+0 to 65535.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Signed 16-bit constant shifted left 16 bits. (Used with <code>l.movhi</code>)
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Zero
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Register usable for sibcalls.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>PDP-11&mdash;<samp>config/pdp11/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Floating point registers AC0 through AC3. These can be loaded from/to
+memory with a single instruction.
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Odd numbered general registers (R1, R3, R5). These are used for
+16-bit multiply operations.
+</p>
+</dd>
+<dt><code>D</code></dt>
+<dd><p>A memory reference that is encoded within the opcode, but not
+auto-increment or auto-decrement.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Any of the floating point registers (AC0 through AC5).
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating point constant 0.
+</p>
+</dd>
+<dt><code>h</code></dt>
+<dd><p>Floating point registers AC4 and AC5. These cannot be loaded from/to
+memory with a single instruction.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>An integer constant that fits in 16 bits.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>An integer constant whose low order 16 bits are zero.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>An integer constant that does not meet the constraints for codes
+&lsquo;<samp>I</samp>&rsquo; or &lsquo;<samp>J</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>The integer constant 1.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>The integer constant -1.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>The integer constant 0.
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Integer constants 0 through 3; shifts by these
+amounts are handled as multiple single-bit shifts rather than a single
+variable-length shift.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory reference which requires an additional word (address or
+offset) after the opcode.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>A memory reference that is encoded within the opcode.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>PowerPC and IBM RS6000&mdash;<samp>config/rs6000/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>r</code></dt>
+<dd><p>A general purpose register (GPR), <code>r0</code>&hellip;<code>r31</code>.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>A base register. Like <code>r</code>, but <code>r0</code> is not allowed, so
+<code>r1</code>&hellip;<code>r31</code>.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>A floating point register (FPR), <code>f0</code>&hellip;<code>f31</code>.
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>A floating point register. This is the same as <code>f</code> nowadays;
+historically <code>f</code> was for single-precision and <code>d</code> was for
+double-precision floating point.
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>An Altivec vector register (VR), <code>v0</code>&hellip;<code>v31</code>.
+</p>
+</dd>
+<dt><code>wa</code></dt>
+<dd><p>A VSX register (VSR), <code>vs0</code>&hellip;<code>vs63</code>. This is either an
+FPR (<code>vs0</code>&hellip;<code>vs31</code> are <code>f0</code>&hellip;<code>f31</code>) or a VR
+(<code>vs32</code>&hellip;<code>vs63</code> are <code>v0</code>&hellip;<code>v31</code>).
+</p>
+<p>When using <code>wa</code>, you should use the <code>%x</code> output modifier, so that
+the correct register number is printed. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">asm (&quot;xvadddp %x0,%x1,%x2&quot;
+ : &quot;=wa&quot; (v1)
+ : &quot;wa&quot; (v2), &quot;wa&quot; (v3));
+</pre></div>
+
+<p>You should not use <code>%x</code> for <code>v</code> operands:
+</p>
+<div class="smallexample">
+<pre class="smallexample">asm (&quot;xsaddqp %0,%1,%2&quot;
+ : &quot;=v&quot; (v1)
+ : &quot;v&quot; (v2), &quot;v&quot; (v3));
+</pre></div>
+
+</dd>
+<dt><code>h</code></dt>
+<dd><p>A special register (<code>vrsave</code>, <code>ctr</code>, or <code>lr</code>).
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>The count register, <code>ctr</code>.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>The link register, <code>lr</code>.
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Condition register field 0, <code>cr0</code>.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Any condition register field, <code>cr0</code>&hellip;<code>cr7</code>.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>The carry bit, <code>XER[CA]</code>.
+</p>
+</dd>
+<dt><code>we</code></dt>
+<dd><p>Like <code>wa</code>, if <samp>-mpower9-vector</samp> and <samp>-m64</samp> are used;
+otherwise, <code>NO_REGS</code>.
+</p>
+</dd>
+<dt><code>wn</code></dt>
+<dd><p>No register (<code>NO_REGS</code>).
+</p>
+</dd>
+<dt><code>wr</code></dt>
+<dd><p>Like <code>r</code>, if <samp>-mpowerpc64</samp> is used; otherwise, <code>NO_REGS</code>.
+</p>
+</dd>
+<dt><code>wx</code></dt>
+<dd><p>Like <code>d</code>, if <samp>-mpowerpc-gfxopt</samp> is used; otherwise, <code>NO_REGS</code>.
+</p>
+</dd>
+<dt><code>wA</code></dt>
+<dd><p>Like <code>b</code>, if <samp>-mpowerpc64</samp> is used; otherwise, <code>NO_REGS</code>.
+</p>
+</dd>
+<dt><code>wB</code></dt>
+<dd><p>Signed 5-bit constant integer that can be loaded into an Altivec register.
+</p>
+</dd>
+<dt><code>wE</code></dt>
+<dd><p>Vector constant that can be loaded with the XXSPLTIB instruction.
+</p>
+</dd>
+<dt><code>wF</code></dt>
+<dd><p>Memory operand suitable for power8 GPR load fusion.
+</p>
+</dd>
+<dt><code>wL</code></dt>
+<dd><p>Int constant that is the element number mfvsrld accesses in a vector.
+</p>
+</dd>
+<dt><code>wM</code></dt>
+<dd><p>Match vector constant with all 1&rsquo;s if the XXLORC instruction is available.
+</p>
+</dd>
+<dt><code>wO</code></dt>
+<dd><p>Memory operand suitable for the ISA 3.0 vector d-form instructions.
+</p>
+</dd>
+<dt><code>wQ</code></dt>
+<dd><p>Memory operand suitable for the load/store quad instructions.
+</p>
+</dd>
+<dt><code>wS</code></dt>
+<dd><p>Vector constant that can be loaded with XXSPLTIB &amp; sign extension.
+</p>
+</dd>
+<dt><code>wY</code></dt>
+<dd><p>A memory operand for a DS-form instruction.
+</p>
+</dd>
+<dt><code>wZ</code></dt>
+<dd><p>An indexed or indirect memory operand, ignoring the bottom 4 bits.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A signed 16-bit constant.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>An unsigned 16-bit constant shifted left 16 bits (use <code>L</code> instead
+for <code>SImode</code> constants).
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>An unsigned 16-bit constant.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A signed 16-bit constant shifted left 16 bits.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>An integer constant greater than 31.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>An exact power of 2.
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>The integer constant zero.
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>A constant whose negation is a signed 16-bit constant.
+</p>
+</dd>
+<dt><code>eI</code></dt>
+<dd><p>A signed 34-bit integer constant if prefixed instructions are supported.
+</p>
+</dd>
+<dt><code>eP</code></dt>
+<dd><p>A scalar floating point constant or a vector constant that can be
+loaded to a VSX register with one prefixed instruction.
+</p>
+</dd>
+<dt><code>eQ</code></dt>
+<dd><p>An IEEE 128-bit constant that can be loaded into a VSX register with
+the <code>lxvkq</code> instruction.
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>A floating point constant that can be loaded into a register with one
+instruction per word.
+</p>
+</dd>
+<dt><code>H</code></dt>
+<dd><p>A floating point constant that can be loaded into a register using
+three instructions.
+</p>
+</dd>
+<dt><code>m</code></dt>
+<dd><p>A memory operand.
+Normally, <code>m</code> does not allow addresses that update the base register.
+If the <code>&lt;</code> or <code>&gt;</code> constraint is also used, they are allowed and
+therefore on PowerPC targets in that case it is only safe
+to use <code>m&lt;&gt;</code> in an <code>asm</code> statement if that <code>asm</code> statement
+accesses the operand exactly once. The <code>asm</code> statement must also
+use <code>%U<var>&lt;opno&gt;</var></code> as a placeholder for the &ldquo;update&rdquo; flag in the
+corresponding load or store instruction. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">asm (&quot;st%U0 %1,%0&quot; : &quot;=m&lt;&gt;&quot; (mem) : &quot;r&quot; (val));
+</pre></div>
+
+<p>is correct but:
+</p>
+<div class="smallexample">
+<pre class="smallexample">asm (&quot;st %1,%0&quot; : &quot;=m&lt;&gt;&quot; (mem) : &quot;r&quot; (val));
+</pre></div>
+
+<p>is not.
+</p>
+</dd>
+<dt><code>es</code></dt>
+<dd><p>A &ldquo;stable&rdquo; memory operand; that is, one which does not include any
+automodification of the base register. This used to be useful when
+<code>m</code> allowed automodification of the base register, but as those
+are now only allowed when <code>&lt;</code> or <code>&gt;</code> is used, <code>es</code> is
+basically the same as <code>m</code> without <code>&lt;</code> and <code>&gt;</code>.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory operand addressed by just a base register.
+</p>
+</dd>
+<dt><code>Y</code></dt>
+<dd><p>A memory operand for a DQ-form instruction.
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>A memory operand accessed with indexed or indirect addressing.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>An AIX TOC entry.
+</p>
+</dd>
+<dt><code>a</code></dt>
+<dd><p>An indexed or indirect address.
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>A V.4 small data reference.
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A vector constant that does not require memory.
+</p>
+</dd>
+<dt><code>j</code></dt>
+<dd><p>The zero vector constant.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>PRU&mdash;<samp>config/pru/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>I</code></dt>
+<dd><p>An unsigned 8-bit integer constant.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>An unsigned 16-bit integer constant.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>An unsigned 5-bit integer constant (for shift counts).
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>A text segment (program memory) constant label.
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>Integer constant zero.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>RL78&mdash;<samp>config/rl78/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>Int3</code></dt>
+<dd><p>An integer constant in the range 1 &hellip; 7.
+</p></dd>
+<dt><code>Int8</code></dt>
+<dd><p>An integer constant in the range 0 &hellip; 255.
+</p></dd>
+<dt><code>J</code></dt>
+<dd><p>An integer constant in the range -255 &hellip; 0
+</p></dd>
+<dt><code>K</code></dt>
+<dd><p>The integer constant 1.
+</p></dd>
+<dt><code>L</code></dt>
+<dd><p>The integer constant -1.
+</p></dd>
+<dt><code>M</code></dt>
+<dd><p>The integer constant 0.
+</p></dd>
+<dt><code>N</code></dt>
+<dd><p>The integer constant 2.
+</p></dd>
+<dt><code>O</code></dt>
+<dd><p>The integer constant -2.
+</p></dd>
+<dt><code>P</code></dt>
+<dd><p>An integer constant in the range 1 &hellip; 15.
+</p></dd>
+<dt><code>Qbi</code></dt>
+<dd><p>The built-in compare types&ndash;eq, ne, gtu, ltu, geu, and leu.
+</p></dd>
+<dt><code>Qsc</code></dt>
+<dd><p>The synthetic compare types&ndash;gt, lt, ge, and le.
+</p></dd>
+<dt><code>Wab</code></dt>
+<dd><p>A memory reference with an absolute address.
+</p></dd>
+<dt><code>Wbc</code></dt>
+<dd><p>A memory reference using <code>BC</code> as a base register, with an optional offset.
+</p></dd>
+<dt><code>Wca</code></dt>
+<dd><p>A memory reference using <code>AX</code>, <code>BC</code>, <code>DE</code>, or <code>HL</code> for the address, for calls.
+</p></dd>
+<dt><code>Wcv</code></dt>
+<dd><p>A memory reference using any 16-bit register pair for the address, for calls.
+</p></dd>
+<dt><code>Wd2</code></dt>
+<dd><p>A memory reference using <code>DE</code> as a base register, with an optional offset.
+</p></dd>
+<dt><code>Wde</code></dt>
+<dd><p>A memory reference using <code>DE</code> as a base register, without any offset.
+</p></dd>
+<dt><code>Wfr</code></dt>
+<dd><p>Any memory reference to an address in the far address space.
+</p></dd>
+<dt><code>Wh1</code></dt>
+<dd><p>A memory reference using <code>HL</code> as a base register, with an optional one-byte offset.
+</p></dd>
+<dt><code>Whb</code></dt>
+<dd><p>A memory reference using <code>HL</code> as a base register, with <code>B</code> or <code>C</code> as the index register.
+</p></dd>
+<dt><code>Whl</code></dt>
+<dd><p>A memory reference using <code>HL</code> as a base register, without any offset.
+</p></dd>
+<dt><code>Ws1</code></dt>
+<dd><p>A memory reference using <code>SP</code> as a base register, with an optional one-byte offset.
+</p></dd>
+<dt><code>Y</code></dt>
+<dd><p>Any memory reference to an address in the near address space.
+</p></dd>
+<dt><code>A</code></dt>
+<dd><p>The <code>AX</code> register.
+</p></dd>
+<dt><code>B</code></dt>
+<dd><p>The <code>BC</code> register.
+</p></dd>
+<dt><code>D</code></dt>
+<dd><p>The <code>DE</code> register.
+</p></dd>
+<dt><code>R</code></dt>
+<dd><p><code>A</code> through <code>L</code> registers.
+</p></dd>
+<dt><code>S</code></dt>
+<dd><p>The <code>SP</code> register.
+</p></dd>
+<dt><code>T</code></dt>
+<dd><p>The <code>HL</code> register.
+</p></dd>
+<dt><code>Z08W</code></dt>
+<dd><p>The 16-bit <code>R8</code> register.
+</p></dd>
+<dt><code>Z10W</code></dt>
+<dd><p>The 16-bit <code>R10</code> register.
+</p></dd>
+<dt><code>Zint</code></dt>
+<dd><p>The registers reserved for interrupts (<code>R24</code> to <code>R31</code>).
+</p></dd>
+<dt><code>a</code></dt>
+<dd><p>The <code>A</code> register.
+</p></dd>
+<dt><code>b</code></dt>
+<dd><p>The <code>B</code> register.
+</p></dd>
+<dt><code>c</code></dt>
+<dd><p>The <code>C</code> register.
+</p></dd>
+<dt><code>d</code></dt>
+<dd><p>The <code>D</code> register.
+</p></dd>
+<dt><code>e</code></dt>
+<dd><p>The <code>E</code> register.
+</p></dd>
+<dt><code>h</code></dt>
+<dd><p>The <code>H</code> register.
+</p></dd>
+<dt><code>l</code></dt>
+<dd><p>The <code>L</code> register.
+</p></dd>
+<dt><code>v</code></dt>
+<dd><p>The virtual registers.
+</p></dd>
+<dt><code>w</code></dt>
+<dd><p>The <code>PSW</code> register.
+</p></dd>
+<dt><code>x</code></dt>
+<dd><p>The <code>X</code> register.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>RISC-V&mdash;<samp>config/riscv/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>f</code></dt>
+<dd><p>A floating-point register (if available).
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>An I-type 12-bit signed immediate.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer zero.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>A 5-bit unsigned immediate for CSR access instructions.
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>An address that is held in a general-purpose register.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>A constraint that matches an absolute symbolic address.
+</p>
+</dd>
+<dt><code>vr</code></dt>
+<dd><p>A vector register (if available)..
+</p>
+</dd>
+<dt><code>vd</code></dt>
+<dd><p>A vector register, excluding v0 (if available).
+</p>
+</dd>
+<dt><code>vm</code></dt>
+<dd><p>A vector register, only v0 (if available).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>RX&mdash;<samp>config/rx/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>Q</code></dt>
+<dd><p>An address which does not involve register indirect addressing or
+pre/post increment/decrement addressing.
+</p>
+</dd>
+<dt><code>Symbol</code></dt>
+<dd><p>A symbol reference.
+</p>
+</dd>
+<dt><code>Int08</code></dt>
+<dd><p>A constant in the range -256 to 255, inclusive.
+</p>
+</dd>
+<dt><code>Sint08</code></dt>
+<dd><p>A constant in the range -128 to 127, inclusive.
+</p>
+</dd>
+<dt><code>Sint16</code></dt>
+<dd><p>A constant in the range -32768 to 32767, inclusive.
+</p>
+</dd>
+<dt><code>Sint24</code></dt>
+<dd><p>A constant in the range -8388608 to 8388607, inclusive.
+</p>
+</dd>
+<dt><code>Uint04</code></dt>
+<dd><p>A constant in the range 0 to 15, inclusive.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>S/390 and zSeries&mdash;<samp>config/s390/s390.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Address register (general purpose register except r0)
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Condition code register
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Data register (arbitrary general purpose register)
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Floating-point register
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Unsigned 8-bit constant (0&ndash;255)
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Unsigned 12-bit constant (0&ndash;4095)
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Signed 16-bit constant (-32768&ndash;32767)
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Value appropriate as displacement.
+</p><dl compact="compact">
+<dt><code>(0..4095)</code></dt>
+<dd><p>for short displacement
+</p></dd>
+<dt><code>(-524288..524287)</code></dt>
+<dd><p>for long displacement
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Constant integer with a value of 0x7fffffff.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Multiple letter constraint followed by 4 parameter letters.
+</p><dl compact="compact">
+<dt><code>0..9:</code></dt>
+<dd><p>number of the part counting from most to least significant
+</p></dd>
+<dt><code>H,Q:</code></dt>
+<dd><p>mode of the part
+</p></dd>
+<dt><code>D,S,H:</code></dt>
+<dd><p>mode of the containing operand
+</p></dd>
+<dt><code>0,F:</code></dt>
+<dd><p>value of the other parts (F&mdash;all bits set)
+</p></dd>
+</dl>
+<p>The constraint matches if the specified part of a constant
+has a value different from its other parts.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Memory reference without index register and with short displacement.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>Memory reference with index register and short displacement.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Memory reference without index register but with long displacement.
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>Memory reference with index register and long displacement.
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Pointer with short displacement.
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>Pointer with long displacement.
+</p>
+</dd>
+<dt><code>Y</code></dt>
+<dd><p>Shift count operand.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>SPARC&mdash;<samp>config/sparc/sparc.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>f</code></dt>
+<dd><p>Floating-point register on the SPARC-V8 architecture and
+lower floating-point register on the SPARC-V9 architecture.
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Floating-point register. It is equivalent to &lsquo;<samp>f</samp>&rsquo; on the
+SPARC-V8 architecture and contains both lower and upper
+floating-point registers on the SPARC-V9 architecture.
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Floating-point condition code register.
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Lower floating-point register. It is only valid on the SPARC-V9
+architecture when the Visual Instruction Set is available.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Floating-point register. It is only valid on the SPARC-V9 architecture
+when the Visual Instruction Set is available.
+</p>
+</dd>
+<dt><code>h</code></dt>
+<dd><p>64-bit global or out register for the SPARC-V8+ architecture.
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>The constant all-ones, for floating-point.
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>Signed 5-bit constant
+</p>
+</dd>
+<dt><code>D</code></dt>
+<dd><p>A vector constant
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Signed 13-bit constant
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Zero
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>32-bit constant with the low 12 bits clear (a constant that can be
+loaded with the <code>sethi</code> instruction)
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A constant in the range supported by <code>movcc</code> instructions (11-bit
+signed immediate)
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>A constant in the range supported by <code>movrcc</code> instructions (10-bit
+signed immediate)
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Same as &lsquo;<samp>K</samp>&rsquo;, except that it verifies that bits that are not in the
+lower 32-bit range are all zero. Must be used instead of &lsquo;<samp>K</samp>&rsquo; for
+modes wider than <code>SImode</code>
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>The constant 4096
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating-point zero
+</p>
+</dd>
+<dt><code>H</code></dt>
+<dd><p>Signed 13-bit constant, sign-extended to 32 or 64 bits
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>The constant -1
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Floating-point constant whose integral representation can
+be moved into an integer register using a single sethi
+instruction
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>Floating-point constant whose integral representation can
+be moved into an integer register using a single mov
+instruction
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>Floating-point constant whose integral representation can
+be moved into an integer register using a high/lo_sum
+instruction sequence
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>Memory address aligned to an 8-byte boundary
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>Even register
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>Memory address for &lsquo;<samp>e</samp>&rsquo; constraint registers
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Memory address with only a base register
+</p>
+</dd>
+<dt><code>Y</code></dt>
+<dd><p>Vector zero
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>TI C6X family&mdash;<samp>config/c6x/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Register file A (A0&ndash;A31).
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Register file B (B0&ndash;B31).
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>Predicate registers in register file A (A0&ndash;A2 on C64X and
+higher, A1 and A2 otherwise).
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>Predicate registers in register file B (B0&ndash;B2).
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>A call-used register in register file B (B0&ndash;B9, B16&ndash;B31).
+</p>
+</dd>
+<dt><code>Da</code></dt>
+<dd><p>Register file A, excluding predicate registers (A3&ndash;A31,
+plus A0 if not C64X or higher).
+</p>
+</dd>
+<dt><code>Db</code></dt>
+<dd><p>Register file B, excluding predicate registers (B3&ndash;B31).
+</p>
+</dd>
+<dt><code>Iu4</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 15.
+</p>
+</dd>
+<dt><code>Iu5</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 31.
+</p>
+</dd>
+<dt><code>In5</code></dt>
+<dd><p>Integer constant in the range -31 &hellip; 0.
+</p>
+</dd>
+<dt><code>Is5</code></dt>
+<dd><p>Integer constant in the range -16 &hellip; 15.
+</p>
+</dd>
+<dt><code>I5x</code></dt>
+<dd><p>Integer constant that can be the operand of an ADDA or a SUBA insn.
+</p>
+</dd>
+<dt><code>IuB</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 65535.
+</p>
+</dd>
+<dt><code>IsB</code></dt>
+<dd><p>Integer constant in the range -32768 &hellip; 32767.
+</p>
+</dd>
+<dt><code>IsC</code></dt>
+<dd><p>Integer constant in the range <em>-2^{20}</em> &hellip; <em>2^{20} - 1</em>.
+</p>
+</dd>
+<dt><code>Jc</code></dt>
+<dd><p>Integer constant that is a valid mask for the clr instruction.
+</p>
+</dd>
+<dt><code>Js</code></dt>
+<dd><p>Integer constant that is a valid mask for the set instruction.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Memory location with A base register.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>Memory location with B base register.
+</p>
+</dd>
+<dt><code>S0</code></dt>
+<dd><p>On C64x+ targets, a GP-relative small data reference.
+</p>
+</dd>
+<dt><code>S1</code></dt>
+<dd><p>Any kind of <code>SYMBOL_REF</code>, for use in a call address.
+</p>
+</dd>
+<dt><code>Si</code></dt>
+<dd><p>Any kind of immediate operand, unless it matches the S0 constraint.
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>Memory location with B base register, but not using a long offset.
+</p>
+</dd>
+<dt><code>W</code></dt>
+<dd><p>A memory operand with an address that cannot be used in an unaligned access.
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>Register B14 (aka DP).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>Visium&mdash;<samp>config/visium/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>b</code></dt>
+<dd><p>EAM register <code>mdb</code>
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>EAM register <code>mdc</code>
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Floating point register
+</p>
+</dd>
+<dt><code>k</code></dt>
+<dd><p>Register for sibcall optimization
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>General register, but not <code>r29</code>, <code>r30</code> and <code>r31</code>
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>Register <code>r1</code>
+</p>
+</dd>
+<dt><code>u</code></dt>
+<dd><p>Register <code>r2</code>
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>Register <code>r3</code>
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Floating-point constant 0.0
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer constant in the range 0 .. 65535 (16-bit immediate)
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer constant in the range 1 .. 31 (5-bit immediate)
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Integer constant in the range -65535 .. -1 (16-bit negative immediate)
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>Integer constant -1
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Integer constant 0
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>Integer constant 32
+</p></dd>
+</dl>
+
+</dd>
+<dt><em>x86 family&mdash;<samp>config/i386/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>R</code></dt>
+<dd><p>Legacy register&mdash;the eight integer registers available on all
+i386 processors (<code>a</code>, <code>b</code>, <code>c</code>, <code>d</code>,
+<code>si</code>, <code>di</code>, <code>bp</code>, <code>sp</code>).
+</p>
+</dd>
+<dt><code>q</code></dt>
+<dd><p>Any register accessible as <code><var>r</var>l</code>. In 32-bit mode, <code>a</code>,
+<code>b</code>, <code>c</code>, and <code>d</code>; in 64-bit mode, any integer register.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>Any register accessible as <code><var>r</var>h</code>: <code>a</code>, <code>b</code>,
+<code>c</code>, and <code>d</code>.
+</p>
+</dd>
+<dt><code>l</code></dt>
+<dd><p>Any register that can be used as the index in a base+index memory
+access: that is, any general register except the stack pointer.
+</p>
+</dd>
+<dt><code>a</code></dt>
+<dd><p>The <code>a</code> register.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>The <code>b</code> register.
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>The <code>c</code> register.
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>The <code>d</code> register.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>The <code>si</code> register.
+</p>
+</dd>
+<dt><code>D</code></dt>
+<dd><p>The <code>di</code> register.
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>The <code>a</code> and <code>d</code> registers. This class is used for instructions
+that return double word results in the <code>ax:dx</code> register pair. Single
+word values will be allocated either in <code>ax</code> or <code>dx</code>.
+For example on i386 the following implements <code>rdtsc</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">unsigned long long rdtsc (void)
+{
+ unsigned long long tick;
+ __asm__ __volatile__(&quot;rdtsc&quot;:&quot;=A&quot;(tick));
+ return tick;
+}
+</pre></div>
+
+<p>This is not correct on x86-64 as it would allocate tick in either <code>ax</code>
+or <code>dx</code>. You have to use the following variant instead:
+</p>
+<div class="smallexample">
+<pre class="smallexample">unsigned long long rdtsc (void)
+{
+ unsigned int tickl, tickh;
+ __asm__ __volatile__(&quot;rdtsc&quot;:&quot;=a&quot;(tickl),&quot;=d&quot;(tickh));
+ return ((unsigned long long)tickh &lt;&lt; 32)|tickl;
+}
+</pre></div>
+
+</dd>
+<dt><code>U</code></dt>
+<dd><p>The call-clobbered integer registers.
+</p>
+</dd>
+<dt><code>f</code></dt>
+<dd><p>Any 80387 floating-point (stack) register.
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>Top of 80387 floating-point stack (<code>%st(0)</code>).
+</p>
+</dd>
+<dt><code>u</code></dt>
+<dd><p>Second from top of 80387 floating-point stack (<code>%st(1)</code>).
+</p>
+</dd>
+<dt><code>Yk</code></dt>
+<dd><p>Any mask register that can be used as a predicate, i.e. <code>k1-k7</code>.
+</p>
+</dd>
+<dt><code>k</code></dt>
+<dd><p>Any mask register.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>Any MMX register.
+</p>
+</dd>
+<dt><code>x</code></dt>
+<dd><p>Any SSE register.
+</p>
+</dd>
+<dt><code>v</code></dt>
+<dd><p>Any EVEX encodable SSE register (<code>%xmm0-%xmm31</code>).
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>Any bound register.
+</p>
+</dd>
+<dt><code>Yz</code></dt>
+<dd><p>First SSE register (<code>%xmm0</code>).
+</p>
+</dd>
+<dt><code>Yi</code></dt>
+<dd><p>Any SSE register, when SSE2 and inter-unit moves are enabled.
+</p>
+</dd>
+<dt><code>Yj</code></dt>
+<dd><p>Any SSE register, when SSE2 and inter-unit moves from vector registers are enabled.
+</p>
+</dd>
+<dt><code>Ym</code></dt>
+<dd><p>Any MMX register, when inter-unit moves are enabled.
+</p>
+</dd>
+<dt><code>Yn</code></dt>
+<dd><p>Any MMX register, when inter-unit moves from vector registers are enabled.
+</p>
+</dd>
+<dt><code>Yp</code></dt>
+<dd><p>Any integer register when <code>TARGET_PARTIAL_REG_STALL</code> is disabled.
+</p>
+</dd>
+<dt><code>Ya</code></dt>
+<dd><p>Any integer register when zero extensions with <code>AND</code> are disabled.
+</p>
+</dd>
+<dt><code>Yb</code></dt>
+<dd><p>Any register that can be used as the GOT base when calling<br>
+<code>___tls_get_addr</code>: that is, any general register except <code>a</code>
+and <code>sp</code> registers, for <samp>-fno-plt</samp> if linker supports it.
+Otherwise, <code>b</code> register.
+</p>
+</dd>
+<dt><code>Yf</code></dt>
+<dd><p>Any x87 register when 80387 floating-point arithmetic is enabled.
+</p>
+</dd>
+<dt><code>Yr</code></dt>
+<dd><p>Lower SSE register when avoiding REX prefix and all SSE registers otherwise.
+</p>
+</dd>
+<dt><code>Yv</code></dt>
+<dd><p>For AVX512VL, any EVEX-encodable SSE register (<code>%xmm0-%xmm31</code>),
+otherwise any SSE register.
+</p>
+</dd>
+<dt><code>Yh</code></dt>
+<dd><p>Any EVEX-encodable SSE register, that has number factor of four.
+</p>
+</dd>
+<dt><code>Bf</code></dt>
+<dd><p>Flags register operand.
+</p>
+</dd>
+<dt><code>Bg</code></dt>
+<dd><p>GOT memory operand.
+</p>
+</dd>
+<dt><code>Bm</code></dt>
+<dd><p>Vector memory operand.
+</p>
+</dd>
+<dt><code>Bc</code></dt>
+<dd><p>Constant memory operand.
+</p>
+</dd>
+<dt><code>Bn</code></dt>
+<dd><p>Memory operand without REX prefix.
+</p>
+</dd>
+<dt><code>Bs</code></dt>
+<dd><p>Sibcall memory operand.
+</p>
+</dd>
+<dt><code>Bw</code></dt>
+<dd><p>Call memory operand.
+</p>
+</dd>
+<dt><code>Bz</code></dt>
+<dd><p>Constant call address operand.
+</p>
+</dd>
+<dt><code>BC</code></dt>
+<dd><p>SSE constant -1 operand.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 31, for 32-bit shifts.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 63, for 64-bit shifts.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Signed 8-bit integer constant.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p><code>0xFF</code> or <code>0xFFFF</code>, for andsi as a zero-extending move.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>0, 1, 2, or 3 (shifts for the <code>lea</code> instruction).
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>Unsigned 8-bit integer constant (for <code>in</code> and <code>out</code>
+instructions).
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>Integer constant in the range 0 &hellip; 127, for 128-bit shifts.
+</p>
+</dd>
+<dt><code>G</code></dt>
+<dd><p>Standard 80387 floating point constant.
+</p>
+</dd>
+<dt><code>C</code></dt>
+<dd><p>SSE constant zero operand.
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>32-bit signed integer constant, or a symbolic reference known
+to fit that range (for immediate operands in sign-extending x86-64
+instructions).
+</p>
+</dd>
+<dt><code>We</code></dt>
+<dd><p>32-bit signed integer constant, or a symbolic reference known
+to fit that range (for sign-extending conversion operations that
+require non-<code>VOIDmode</code> immediate operands).
+</p>
+</dd>
+<dt><code>Wz</code></dt>
+<dd><p>32-bit unsigned integer constant, or a symbolic reference known
+to fit that range (for zero-extending conversion operations that
+require non-<code>VOIDmode</code> immediate operands).
+</p>
+</dd>
+<dt><code>Wd</code></dt>
+<dd><p>128-bit integer constant where both the high and low 64-bit word
+satisfy the <code>e</code> constraint.
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>32-bit unsigned integer constant, or a symbolic reference known
+to fit that range (for immediate operands in zero-extending x86-64
+instructions).
+</p>
+</dd>
+<dt><code>Tv</code></dt>
+<dd><p>VSIB address operand.
+</p>
+</dd>
+<dt><code>Ts</code></dt>
+<dd><p>Address operand without segment register.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>Xstormy16&mdash;<samp>config/stormy16/stormy16.h</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>Register r0.
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>Register r1.
+</p>
+</dd>
+<dt><code>c</code></dt>
+<dd><p>Register r2.
+</p>
+</dd>
+<dt><code>d</code></dt>
+<dd><p>Register r8.
+</p>
+</dd>
+<dt><code>e</code></dt>
+<dd><p>Registers r0 through r7.
+</p>
+</dd>
+<dt><code>t</code></dt>
+<dd><p>Registers r0 and r1.
+</p>
+</dd>
+<dt><code>y</code></dt>
+<dd><p>The carry register.
+</p>
+</dd>
+<dt><code>z</code></dt>
+<dd><p>Registers r8 and r9.
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>A constant between 0 and 3 inclusive.
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>A constant that has exactly one bit set.
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>A constant that has exactly one bit clear.
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>A constant between 0 and 255 inclusive.
+</p>
+</dd>
+<dt><code>M</code></dt>
+<dd><p>A constant between -255 and 0 inclusive.
+</p>
+</dd>
+<dt><code>N</code></dt>
+<dd><p>A constant between -3 and 0 inclusive.
+</p>
+</dd>
+<dt><code>O</code></dt>
+<dd><p>A constant between 1 and 4 inclusive.
+</p>
+</dd>
+<dt><code>P</code></dt>
+<dd><p>A constant between -4 and -1 inclusive.
+</p>
+</dd>
+<dt><code>Q</code></dt>
+<dd><p>A memory reference that is a stack push.
+</p>
+</dd>
+<dt><code>R</code></dt>
+<dd><p>A memory reference that is a stack pop.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>A memory reference that refers to a constant address of known value.
+</p>
+</dd>
+<dt><code>T</code></dt>
+<dd><p>The register indicated by Rx (not implemented yet).
+</p>
+</dd>
+<dt><code>U</code></dt>
+<dd><p>A constant that is not between 2 and 15 inclusive.
+</p>
+</dd>
+<dt><code>Z</code></dt>
+<dd><p>The constant 0.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt><em>Xtensa&mdash;<samp>config/xtensa/constraints.md</samp></em></dt>
+<dd><dl compact="compact">
+<dt><code>a</code></dt>
+<dd><p>General-purpose 32-bit register
+</p>
+</dd>
+<dt><code>b</code></dt>
+<dd><p>One-bit boolean register
+</p>
+</dd>
+<dt><code>A</code></dt>
+<dd><p>MAC16 40-bit accumulator register
+</p>
+</dd>
+<dt><code>I</code></dt>
+<dd><p>Signed 12-bit integer constant, for use in MOVI instructions
+</p>
+</dd>
+<dt><code>J</code></dt>
+<dd><p>Signed 8-bit integer constant, for use in ADDI instructions
+</p>
+</dd>
+<dt><code>K</code></dt>
+<dd><p>Integer constant valid for BccI instructions
+</p>
+</dd>
+<dt><code>L</code></dt>
+<dd><p>Unsigned constant valid for BccUI instructions
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives" accesskey="n" rel="next">Disable Insn Alternatives</a>, Previous: <a href="Modifiers.html#Modifiers" accesskey="p" rel="previous">Modifiers</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Machine-Desc.html b/share/doc/gccint/Machine-Desc.html
new file mode 100644
index 0000000..54c290b
--- /dev/null
+++ b/share/doc/gccint/Machine-Desc.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Machine Desc</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Machine Desc">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Machine Desc">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Overview.html#Overview" rel="next" title="Overview">
+<link href="Dependency-analysis.html#Dependency-analysis" rel="previous" title="Dependency analysis">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Machine-Desc"></a>
+<div class="header">
+<p>
+Next: <a href="Target-Macros.html#Target-Macros" accesskey="n" rel="next">Target Macros</a>, Previous: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="p" rel="previous">Loop Analysis and Representation</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Machine-Descriptions"></a>
+<h2 class="chapter">17 Machine Descriptions</h2>
+<a name="index-machine-descriptions"></a>
+
+<p>A machine description has two parts: a file of instruction patterns
+(<samp>.md</samp> file) and a C header file of macro definitions.
+</p>
+<p>The <samp>.md</samp> file for a target machine contains a pattern for each
+instruction that the target machine supports (or at least each instruction
+that is worth telling the compiler about). It may also contain comments.
+A semicolon causes the rest of the line to be a comment, unless the semicolon
+is inside a quoted string.
+</p>
+<p>See the next chapter for information on the C header file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Overview.html#Overview" accesskey="1">Overview</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the machine description is used.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Patterns.html#Patterns" accesskey="2">Patterns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to write instruction patterns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Example.html#Example" accesskey="3">Example</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An explained example of a <code>define_insn</code> pattern.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-Template.html#RTL-Template" accesskey="4">RTL Template</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The RTL template defines what insns match a pattern.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Output-Template.html#Output-Template" accesskey="5">Output Template</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The output template says how to make assembler code
+ from such an insn.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Output-Statement.html#Output-Statement" accesskey="6">Output Statement</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">For more generality, write C code to output
+ the assembler code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Predicates.html#Predicates" accesskey="7">Predicates</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling what kinds of operands can be used
+ for an insn.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constraints.html#Constraints" accesskey="8">Constraints</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fine-tuning operand selection.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Standard-Names.html#Standard-Names" accesskey="9">Standard Names</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Names mark patterns to use for code generation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pattern-Ordering.html#Pattern-Ordering">Pattern Ordering</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When the order of patterns makes a difference.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dependent-Patterns.html#Dependent-Patterns">Dependent Patterns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Having one pattern may make you need another.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Jump-Patterns.html#Jump-Patterns">Jump Patterns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special considerations for patterns for jump insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Looping-Patterns.html#Looping-Patterns">Looping Patterns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to define patterns for special looping insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Insn-Canonicalizations.html#Insn-Canonicalizations">Insn Canonicalizations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Canonicalization of Instructions
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating a sequence of several RTL insns
+ for a standard operation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Splitting Instructions into Multiple Instructions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Including-Patterns.html#Including-Patterns">Including Patterns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Including Patterns in Machine Descriptions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Peephole-Definitions.html#Peephole-Definitions">Peephole Definitions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining machine-specific peephole optimizations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying the value of attributes for generated insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Execution.html#Conditional-Execution">Conditional Execution</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating <code>define_insn</code> patterns for
+ predication.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Define-Subst.html#Define-Subst">Define Subst</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generating <code>define_insn</code> and <code>define_expand</code>
+ patterns from other patterns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constant-Definitions.html#Constant-Definitions">Constant Definitions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining symbolic constants that can be used in the
+ md file.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Iterators.html#Iterators">Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using iterators to generate patterns from a template.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Target-Macros.html#Target-Macros" accesskey="n" rel="next">Target Macros</a>, Previous: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="p" rel="previous">Loop Analysis and Representation</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Machine-Modes.html b/share/doc/gccint/Machine-Modes.html
new file mode 100644
index 0000000..d7593db
--- /dev/null
+++ b/share/doc/gccint/Machine-Modes.html
@@ -0,0 +1,765 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Machine Modes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Machine Modes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Machine Modes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Constants.html#Constants" rel="next" title="Constants">
+<link href="Flags.html#Flags" rel="previous" title="Flags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Machine-Modes"></a>
+<div class="header">
+<p>
+Next: <a href="Constants.html#Constants" accesskey="n" rel="next">Constants</a>, Previous: <a href="Flags.html#Flags" accesskey="p" rel="previous">Flags</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Machine-Modes-1"></a>
+<h3 class="section">14.6 Machine Modes</h3>
+<a name="index-machine-modes"></a>
+
+<a name="index-machine_005fmode"></a>
+<p>A machine mode describes a size of data object and the representation used
+for it. In the C code, machine modes are represented by an enumeration
+type, <code>machine_mode</code>, defined in <samp>machmode.def</samp>. Each RTL
+expression has room for a machine mode and so do certain kinds of tree
+expressions (declarations and types, to be precise).
+</p>
+<p>In debugging dumps and machine descriptions, the machine mode of an RTL
+expression is written after the expression code with a colon to separate
+them. The letters &lsquo;<samp>mode</samp>&rsquo; which appear at the end of each machine mode
+name are omitted. For example, <code>(reg:SI 38)</code> is a <code>reg</code>
+expression with machine mode <code>SImode</code>. If the mode is
+<code>VOIDmode</code>, it is not written at all.
+</p>
+<p>Here is a table of machine modes. The term &ldquo;byte&rdquo; below refers to an
+object of <code>BITS_PER_UNIT</code> bits (see <a href="Storage-Layout.html#Storage-Layout">Storage Layout</a>).
+</p>
+<dl compact="compact">
+<dd><a name="index-BImode"></a>
+</dd>
+<dt><code>BImode</code></dt>
+<dd><p>&ldquo;Bit&rdquo; mode represents a single bit, for predicate registers.
+</p>
+<a name="index-QImode"></a>
+</dd>
+<dt><code>QImode</code></dt>
+<dd><p>&ldquo;Quarter-Integer&rdquo; mode represents a single byte treated as an integer.
+</p>
+<a name="index-HImode"></a>
+</dd>
+<dt><code>HImode</code></dt>
+<dd><p>&ldquo;Half-Integer&rdquo; mode represents a two-byte integer.
+</p>
+<a name="index-PSImode"></a>
+</dd>
+<dt><code>PSImode</code></dt>
+<dd><p>&ldquo;Partial Single Integer&rdquo; mode represents an integer which occupies
+four bytes but which doesn&rsquo;t really use all four. On some machines,
+this is the right mode to use for pointers.
+</p>
+<a name="index-SImode"></a>
+</dd>
+<dt><code>SImode</code></dt>
+<dd><p>&ldquo;Single Integer&rdquo; mode represents a four-byte integer.
+</p>
+<a name="index-PDImode"></a>
+</dd>
+<dt><code>PDImode</code></dt>
+<dd><p>&ldquo;Partial Double Integer&rdquo; mode represents an integer which occupies
+eight bytes but which doesn&rsquo;t really use all eight. On some machines,
+this is the right mode to use for certain pointers.
+</p>
+<a name="index-DImode"></a>
+</dd>
+<dt><code>DImode</code></dt>
+<dd><p>&ldquo;Double Integer&rdquo; mode represents an eight-byte integer.
+</p>
+<a name="index-TImode"></a>
+</dd>
+<dt><code>TImode</code></dt>
+<dd><p>&ldquo;Tetra Integer&rdquo; (?) mode represents a sixteen-byte integer.
+</p>
+<a name="index-OImode"></a>
+</dd>
+<dt><code>OImode</code></dt>
+<dd><p>&ldquo;Octa Integer&rdquo; (?) mode represents a thirty-two-byte integer.
+</p>
+<a name="index-XImode"></a>
+</dd>
+<dt><code>XImode</code></dt>
+<dd><p>&ldquo;Hexadeca Integer&rdquo; (?) mode represents a sixty-four-byte integer.
+</p>
+<a name="index-QFmode"></a>
+</dd>
+<dt><code>QFmode</code></dt>
+<dd><p>&ldquo;Quarter-Floating&rdquo; mode represents a quarter-precision (single byte)
+floating point number.
+</p>
+<a name="index-HFmode"></a>
+</dd>
+<dt><code>HFmode</code></dt>
+<dd><p>&ldquo;Half-Floating&rdquo; mode represents a half-precision (two byte) floating
+point number.
+</p>
+<a name="index-TQFmode"></a>
+</dd>
+<dt><code>TQFmode</code></dt>
+<dd><p>&ldquo;Three-Quarter-Floating&rdquo; (?) mode represents a three-quarter-precision
+(three byte) floating point number.
+</p>
+<a name="index-SFmode"></a>
+</dd>
+<dt><code>SFmode</code></dt>
+<dd><p>&ldquo;Single Floating&rdquo; mode represents a four byte floating point number.
+In the common case, of a processor with IEEE arithmetic and 8-bit bytes,
+this is a single-precision IEEE floating point number; it can also be
+used for double-precision (on processors with 16-bit bytes) and
+single-precision VAX and IBM types.
+</p>
+<a name="index-DFmode"></a>
+</dd>
+<dt><code>DFmode</code></dt>
+<dd><p>&ldquo;Double Floating&rdquo; mode represents an eight byte floating point number.
+In the common case, of a processor with IEEE arithmetic and 8-bit bytes,
+this is a double-precision IEEE floating point number.
+</p>
+<a name="index-XFmode"></a>
+</dd>
+<dt><code>XFmode</code></dt>
+<dd><p>&ldquo;Extended Floating&rdquo; mode represents an IEEE extended floating point
+number. This mode only has 80 meaningful bits (ten bytes). Some
+processors require such numbers to be padded to twelve bytes, others
+to sixteen; this mode is used for either.
+</p>
+<a name="index-SDmode"></a>
+</dd>
+<dt><code>SDmode</code></dt>
+<dd><p>&ldquo;Single Decimal Floating&rdquo; mode represents a four byte decimal
+floating point number (as distinct from conventional binary floating
+point).
+</p>
+<a name="index-DDmode"></a>
+</dd>
+<dt><code>DDmode</code></dt>
+<dd><p>&ldquo;Double Decimal Floating&rdquo; mode represents an eight byte decimal
+floating point number.
+</p>
+<a name="index-TDmode"></a>
+</dd>
+<dt><code>TDmode</code></dt>
+<dd><p>&ldquo;Tetra Decimal Floating&rdquo; mode represents a sixteen byte decimal
+floating point number all 128 of whose bits are meaningful.
+</p>
+<a name="index-TFmode"></a>
+</dd>
+<dt><code>TFmode</code></dt>
+<dd><p>&ldquo;Tetra Floating&rdquo; mode represents a sixteen byte floating point number
+all 128 of whose bits are meaningful. One common use is the
+IEEE quad-precision format.
+</p>
+<a name="index-QQmode"></a>
+</dd>
+<dt><code>QQmode</code></dt>
+<dd><p>&ldquo;Quarter-Fractional&rdquo; mode represents a single byte treated as a signed
+fractional number. The default format is &ldquo;s.7&rdquo;.
+</p>
+<a name="index-HQmode"></a>
+</dd>
+<dt><code>HQmode</code></dt>
+<dd><p>&ldquo;Half-Fractional&rdquo; mode represents a two-byte signed fractional number.
+The default format is &ldquo;s.15&rdquo;.
+</p>
+<a name="index-SQmode"></a>
+</dd>
+<dt><code>SQmode</code></dt>
+<dd><p>&ldquo;Single Fractional&rdquo; mode represents a four-byte signed fractional number.
+The default format is &ldquo;s.31&rdquo;.
+</p>
+<a name="index-DQmode"></a>
+</dd>
+<dt><code>DQmode</code></dt>
+<dd><p>&ldquo;Double Fractional&rdquo; mode represents an eight-byte signed fractional number.
+The default format is &ldquo;s.63&rdquo;.
+</p>
+<a name="index-TQmode"></a>
+</dd>
+<dt><code>TQmode</code></dt>
+<dd><p>&ldquo;Tetra Fractional&rdquo; mode represents a sixteen-byte signed fractional number.
+The default format is &ldquo;s.127&rdquo;.
+</p>
+<a name="index-UQQmode"></a>
+</dd>
+<dt><code>UQQmode</code></dt>
+<dd><p>&ldquo;Unsigned Quarter-Fractional&rdquo; mode represents a single byte treated as an
+unsigned fractional number. The default format is &ldquo;.8&rdquo;.
+</p>
+<a name="index-UHQmode"></a>
+</dd>
+<dt><code>UHQmode</code></dt>
+<dd><p>&ldquo;Unsigned Half-Fractional&rdquo; mode represents a two-byte unsigned fractional
+number. The default format is &ldquo;.16&rdquo;.
+</p>
+<a name="index-USQmode"></a>
+</dd>
+<dt><code>USQmode</code></dt>
+<dd><p>&ldquo;Unsigned Single Fractional&rdquo; mode represents a four-byte unsigned fractional
+number. The default format is &ldquo;.32&rdquo;.
+</p>
+<a name="index-UDQmode"></a>
+</dd>
+<dt><code>UDQmode</code></dt>
+<dd><p>&ldquo;Unsigned Double Fractional&rdquo; mode represents an eight-byte unsigned
+fractional number. The default format is &ldquo;.64&rdquo;.
+</p>
+<a name="index-UTQmode"></a>
+</dd>
+<dt><code>UTQmode</code></dt>
+<dd><p>&ldquo;Unsigned Tetra Fractional&rdquo; mode represents a sixteen-byte unsigned
+fractional number. The default format is &ldquo;.128&rdquo;.
+</p>
+<a name="index-HAmode"></a>
+</dd>
+<dt><code>HAmode</code></dt>
+<dd><p>&ldquo;Half-Accumulator&rdquo; mode represents a two-byte signed accumulator.
+The default format is &ldquo;s8.7&rdquo;.
+</p>
+<a name="index-SAmode"></a>
+</dd>
+<dt><code>SAmode</code></dt>
+<dd><p>&ldquo;Single Accumulator&rdquo; mode represents a four-byte signed accumulator.
+The default format is &ldquo;s16.15&rdquo;.
+</p>
+<a name="index-DAmode"></a>
+</dd>
+<dt><code>DAmode</code></dt>
+<dd><p>&ldquo;Double Accumulator&rdquo; mode represents an eight-byte signed accumulator.
+The default format is &ldquo;s32.31&rdquo;.
+</p>
+<a name="index-TAmode"></a>
+</dd>
+<dt><code>TAmode</code></dt>
+<dd><p>&ldquo;Tetra Accumulator&rdquo; mode represents a sixteen-byte signed accumulator.
+The default format is &ldquo;s64.63&rdquo;.
+</p>
+<a name="index-UHAmode"></a>
+</dd>
+<dt><code>UHAmode</code></dt>
+<dd><p>&ldquo;Unsigned Half-Accumulator&rdquo; mode represents a two-byte unsigned accumulator.
+The default format is &ldquo;8.8&rdquo;.
+</p>
+<a name="index-USAmode"></a>
+</dd>
+<dt><code>USAmode</code></dt>
+<dd><p>&ldquo;Unsigned Single Accumulator&rdquo; mode represents a four-byte unsigned
+accumulator. The default format is &ldquo;16.16&rdquo;.
+</p>
+<a name="index-UDAmode"></a>
+</dd>
+<dt><code>UDAmode</code></dt>
+<dd><p>&ldquo;Unsigned Double Accumulator&rdquo; mode represents an eight-byte unsigned
+accumulator. The default format is &ldquo;32.32&rdquo;.
+</p>
+<a name="index-UTAmode"></a>
+</dd>
+<dt><code>UTAmode</code></dt>
+<dd><p>&ldquo;Unsigned Tetra Accumulator&rdquo; mode represents a sixteen-byte unsigned
+accumulator. The default format is &ldquo;64.64&rdquo;.
+</p>
+<a name="index-CCmode"></a>
+</dd>
+<dt><code>CCmode</code></dt>
+<dd><p>&ldquo;Condition Code&rdquo; mode represents the value of a condition code, which
+is a machine-specific set of bits used to represent the result of a
+comparison operation. Other machine-specific modes may also be used for
+the condition code. (see <a href="Condition-Code.html#Condition-Code">Condition Code</a>).
+</p>
+<a name="index-BLKmode"></a>
+</dd>
+<dt><code>BLKmode</code></dt>
+<dd><p>&ldquo;Block&rdquo; mode represents values that are aggregates to which none of
+the other modes apply. In RTL, only memory references can have this mode,
+and only if they appear in string-move or vector instructions. On machines
+which have no such instructions, <code>BLKmode</code> will not appear in RTL.
+</p>
+<a name="index-VOIDmode"></a>
+</dd>
+<dt><code>VOIDmode</code></dt>
+<dd><p>Void mode means the absence of a mode or an unspecified mode.
+For example, RTL expressions of code <code>const_int</code> have mode
+<code>VOIDmode</code> because they can be taken to have whatever mode the context
+requires. In debugging dumps of RTL, <code>VOIDmode</code> is expressed by
+the absence of any mode.
+</p>
+<a name="index-QCmode"></a>
+<a name="index-HCmode"></a>
+<a name="index-SCmode"></a>
+<a name="index-DCmode"></a>
+<a name="index-XCmode"></a>
+<a name="index-TCmode"></a>
+</dd>
+<dt><code>QCmode, HCmode, SCmode, DCmode, XCmode, TCmode</code></dt>
+<dd><p>These modes stand for a complex number represented as a pair of floating
+point values. The floating point values are in <code>QFmode</code>,
+<code>HFmode</code>, <code>SFmode</code>, <code>DFmode</code>, <code>XFmode</code>, and
+<code>TFmode</code>, respectively.
+</p>
+<a name="index-CQImode"></a>
+<a name="index-CHImode"></a>
+<a name="index-CSImode"></a>
+<a name="index-CDImode"></a>
+<a name="index-CTImode"></a>
+<a name="index-COImode"></a>
+<a name="index-CPSImode"></a>
+</dd>
+<dt><code>CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode</code></dt>
+<dd><p>These modes stand for a complex number represented as a pair of integer
+values. The integer values are in <code>QImode</code>, <code>HImode</code>,
+<code>SImode</code>, <code>DImode</code>, <code>TImode</code>, <code>OImode</code>, and <code>PSImode</code>,
+respectively.
+</p>
+<a name="index-BND32mode"></a>
+<a name="index-BND64mode"></a>
+</dd>
+<dt><code>BND32mode BND64mode</code></dt>
+<dd><p>These modes stand for bounds for pointer of 32 and 64 bit size respectively.
+Mode size is double pointer mode size.
+</p></dd>
+</dl>
+
+<p>The machine description defines <code>Pmode</code> as a C macro which expands
+into the machine mode used for addresses. Normally this is the mode
+whose size is <code>BITS_PER_WORD</code>, <code>SImode</code> on 32-bit machines.
+</p>
+<p>The only modes which a machine description <i>must</i> support are
+<code>QImode</code>, and the modes corresponding to <code>BITS_PER_WORD</code>,
+<code>FLOAT_TYPE_SIZE</code> and <code>DOUBLE_TYPE_SIZE</code>.
+The compiler will attempt to use <code>DImode</code> for 8-byte structures and
+unions, but this can be prevented by overriding the definition of
+<code>MAX_FIXED_MODE_SIZE</code>. Alternatively, you can have the compiler
+use <code>TImode</code> for 16-byte structures and unions. Likewise, you can
+arrange for the C type <code>short int</code> to avoid using <code>HImode</code>.
+</p>
+<a name="index-mode-classes"></a>
+<p>Very few explicit references to machine modes remain in the compiler and
+these few references will soon be removed. Instead, the machine modes
+are divided into mode classes. These are represented by the enumeration
+type <code>enum mode_class</code> defined in <samp>machmode.h</samp>. The possible
+mode classes are:
+</p>
+<dl compact="compact">
+<dd><a name="index-MODE_005fINT"></a>
+</dd>
+<dt><code>MODE_INT</code></dt>
+<dd><p>Integer modes. By default these are <code>BImode</code>, <code>QImode</code>,
+<code>HImode</code>, <code>SImode</code>, <code>DImode</code>, <code>TImode</code>, and
+<code>OImode</code>.
+</p>
+<a name="index-MODE_005fPARTIAL_005fINT"></a>
+</dd>
+<dt><code>MODE_PARTIAL_INT</code></dt>
+<dd><p>The &ldquo;partial integer&rdquo; modes, <code>PQImode</code>, <code>PHImode</code>,
+<code>PSImode</code> and <code>PDImode</code>.
+</p>
+<a name="index-MODE_005fFLOAT"></a>
+</dd>
+<dt><code>MODE_FLOAT</code></dt>
+<dd><p>Floating point modes. By default these are <code>QFmode</code>,
+<code>HFmode</code>, <code>TQFmode</code>, <code>SFmode</code>, <code>DFmode</code>,
+<code>XFmode</code> and <code>TFmode</code>.
+</p>
+<a name="index-MODE_005fDECIMAL_005fFLOAT"></a>
+</dd>
+<dt><code>MODE_DECIMAL_FLOAT</code></dt>
+<dd><p>Decimal floating point modes. By default these are <code>SDmode</code>,
+<code>DDmode</code> and <code>TDmode</code>.
+</p>
+<a name="index-MODE_005fFRACT"></a>
+</dd>
+<dt><code>MODE_FRACT</code></dt>
+<dd><p>Signed fractional modes. By default these are <code>QQmode</code>, <code>HQmode</code>,
+<code>SQmode</code>, <code>DQmode</code> and <code>TQmode</code>.
+</p>
+<a name="index-MODE_005fUFRACT"></a>
+</dd>
+<dt><code>MODE_UFRACT</code></dt>
+<dd><p>Unsigned fractional modes. By default these are <code>UQQmode</code>, <code>UHQmode</code>,
+<code>USQmode</code>, <code>UDQmode</code> and <code>UTQmode</code>.
+</p>
+<a name="index-MODE_005fACCUM"></a>
+</dd>
+<dt><code>MODE_ACCUM</code></dt>
+<dd><p>Signed accumulator modes. By default these are <code>HAmode</code>,
+<code>SAmode</code>, <code>DAmode</code> and <code>TAmode</code>.
+</p>
+<a name="index-MODE_005fUACCUM"></a>
+</dd>
+<dt><code>MODE_UACCUM</code></dt>
+<dd><p>Unsigned accumulator modes. By default these are <code>UHAmode</code>,
+<code>USAmode</code>, <code>UDAmode</code> and <code>UTAmode</code>.
+</p>
+<a name="index-MODE_005fCOMPLEX_005fINT"></a>
+</dd>
+<dt><code>MODE_COMPLEX_INT</code></dt>
+<dd><p>Complex integer modes. (These are not currently implemented).
+</p>
+<a name="index-MODE_005fCOMPLEX_005fFLOAT"></a>
+</dd>
+<dt><code>MODE_COMPLEX_FLOAT</code></dt>
+<dd><p>Complex floating point modes. By default these are <code>QCmode</code>,
+<code>HCmode</code>, <code>SCmode</code>, <code>DCmode</code>, <code>XCmode</code>, and
+<code>TCmode</code>.
+</p>
+<a name="index-MODE_005fCC"></a>
+</dd>
+<dt><code>MODE_CC</code></dt>
+<dd><p>Modes representing condition code values. These are <code>CCmode</code> plus
+any <code>CC_MODE</code> modes listed in the <samp><var>machine</var>-modes.def</samp>.
+See <a href="Jump-Patterns.html#Jump-Patterns">Jump Patterns</a>,
+also see <a href="Condition-Code.html#Condition-Code">Condition Code</a>.
+</p>
+<a name="index-MODE_005fPOINTER_005fBOUNDS"></a>
+</dd>
+<dt><code>MODE_POINTER_BOUNDS</code></dt>
+<dd><p>Pointer bounds modes. Used to represent values of pointer bounds type.
+Operations in these modes may be executed as NOPs depending on hardware
+features and environment setup.
+</p>
+<a name="index-MODE_005fOPAQUE"></a>
+</dd>
+<dt><code>MODE_OPAQUE</code></dt>
+<dd><p>This is a mode class for modes that don&rsquo;t want to provide operations
+other than register moves, memory moves, loads, stores, and
+<code>unspec</code>s. They have a size and precision and that&rsquo;s all.
+</p>
+<a name="index-MODE_005fRANDOM"></a>
+</dd>
+<dt><code>MODE_RANDOM</code></dt>
+<dd><p>This is a catchall mode class for modes which don&rsquo;t fit into the above
+classes. Currently <code>VOIDmode</code> and <code>BLKmode</code> are in
+<code>MODE_RANDOM</code>.
+</p></dd>
+</dl>
+
+<a name="index-machine-mode-wrapper-classes"></a>
+<p><code>machmode.h</code> also defines various wrapper classes that combine a
+<code>machine_mode</code> with a static assertion that a particular
+condition holds. The classes are:
+</p>
+<dl compact="compact">
+<dd><a name="index-scalar_005fint_005fmode"></a>
+</dd>
+<dt><code>scalar_int_mode</code></dt>
+<dd><p>A mode that has class <code>MODE_INT</code> or <code>MODE_PARTIAL_INT</code>.
+</p>
+<a name="index-scalar_005ffloat_005fmode"></a>
+</dd>
+<dt><code>scalar_float_mode</code></dt>
+<dd><p>A mode that has class <code>MODE_FLOAT</code> or <code>MODE_DECIMAL_FLOAT</code>.
+</p>
+<a name="index-scalar_005fmode"></a>
+</dd>
+<dt><code>scalar_mode</code></dt>
+<dd><p>A mode that holds a single numerical value. In practice this means
+that the mode is a <code>scalar_int_mode</code>, is a <code>scalar_float_mode</code>,
+or has class <code>MODE_FRACT</code>, <code>MODE_UFRACT</code>, <code>MODE_ACCUM</code>,
+<code>MODE_UACCUM</code> or <code>MODE_POINTER_BOUNDS</code>.
+</p>
+<a name="index-complex_005fmode"></a>
+</dd>
+<dt><code>complex_mode</code></dt>
+<dd><p>A mode that has class <code>MODE_COMPLEX_INT</code> or <code>MODE_COMPLEX_FLOAT</code>.
+</p>
+<a name="index-fixed_005fsize_005fmode"></a>
+</dd>
+<dt><code>fixed_size_mode</code></dt>
+<dd><p>A mode whose size is known at compile time.
+</p></dd>
+</dl>
+
+<p>Named modes use the most constrained of the available wrapper classes,
+if one exists, otherwise they use <code>machine_mode</code>. For example,
+<code>QImode</code> is a <code>scalar_int_mode</code>, <code>SFmode</code> is a
+<code>scalar_float_mode</code> and <code>BLKmode</code> is a plain
+<code>machine_mode</code>. It is possible to refer to any mode as a raw
+<code>machine_mode</code> by adding the <code>E_</code> prefix, where <code>E</code>
+stands for &ldquo;enumeration&rdquo;. For example, the raw <code>machine_mode</code>
+names of the modes just mentioned are <code>E_QImode</code>, <code>E_SFmode</code>
+and <code>E_BLKmode</code> respectively.
+</p>
+<p>The wrapper classes implicitly convert to <code>machine_mode</code> and to any
+wrapper class that represents a more general condition; for example
+<code>scalar_int_mode</code> and <code>scalar_float_mode</code> both convert
+to <code>scalar_mode</code> and all three convert to <code>fixed_size_mode</code>.
+The classes act like <code>machine_mode</code>s that accept only certain
+named modes.
+</p>
+<a name="index-opt_005fmode"></a>
+<p><samp>machmode.h</samp> also defines a template class <code>opt_mode&lt;<var>T</var>&gt;</code>
+that holds a <code>T</code> or nothing, where <code>T</code> can be either
+<code>machine_mode</code> or one of the wrapper classes above. The main
+operations on an <code>opt_mode&lt;<var>T</var>&gt;</code> <var>x</var> are as follows:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp><var>x</var>.exists ()</samp>&rsquo;</dt>
+<dd><p>Return true if <var>x</var> holds a mode rather than nothing.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>x</var>.exists (&amp;<var>y</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>x</var> holds a mode rather than nothing, storing the
+mode in <var>y</var> if so. <var>y</var> must be assignment-compatible with <var>T</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>x</var>.require ()</samp>&rsquo;</dt>
+<dd><p>Assert that <var>x</var> holds a mode rather than nothing and return that mode.
+</p>
+</dd>
+<dt>&lsquo;<samp><var>x</var> = <var>y</var></samp>&rsquo;</dt>
+<dd><p>Set <var>x</var> to <var>y</var>, where <var>y</var> is a <var>T</var> or implicitly converts
+to a <var>T</var>.
+</p></dd>
+</dl>
+
+<p>The default constructor sets an <code>opt_mode&lt;<var>T</var>&gt;</code> to nothing.
+There is also a constructor that takes an initial value of type <var>T</var>.
+</p>
+<p>It is possible to use the <samp>is-a.h</samp> accessors on a <code>machine_mode</code>
+or machine mode wrapper <var>x</var>:
+</p>
+<dl compact="compact">
+<dd><a name="index-is_005fa"></a>
+</dd>
+<dt>&lsquo;<samp>is_a &lt;<var>T</var>&gt; (<var>x</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>x</var> meets the conditions for wrapper class <var>T</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>is_a &lt;<var>T</var>&gt; (<var>x</var>, &amp;<var>y</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>x</var> meets the conditions for wrapper class <var>T</var>,
+storing it in <var>y</var> if so. <var>y</var> must be assignment-compatible with
+<var>T</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>as_a &lt;<var>T</var>&gt; (<var>x</var>)</samp>&rsquo;</dt>
+<dd><p>Assert that <var>x</var> meets the conditions for wrapper class <var>T</var>
+and return it as a <var>T</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>dyn_cast &lt;<var>T</var>&gt; (<var>x</var>)</samp>&rsquo;</dt>
+<dd><p>Return an <code>opt_mode&lt;<var>T</var>&gt;</code> that holds <var>x</var> if <var>x</var> meets
+the conditions for wrapper class <var>T</var> and that holds nothing otherwise.
+</p></dd>
+</dl>
+
+<p>The purpose of these wrapper classes is to give stronger static type
+checking. For example, if a function takes a <code>scalar_int_mode</code>,
+a caller that has a general <code>machine_mode</code> must either check or
+assert that the code is indeed a scalar integer first, using one of
+the functions above.
+</p>
+<p>The wrapper classes are normal C++ classes, with user-defined
+constructors. Sometimes it is useful to have a POD version of
+the same type, particularly if the type appears in a <code>union</code>.
+The template class <code>pod_mode&lt;<var>T</var>&gt;</code> provides a POD version
+of wrapper class <var>T</var>. It is assignment-compatible with <var>T</var>
+and implicitly converts to both <code>machine_mode</code> and <var>T</var>.
+</p>
+<p>Here are some C macros that relate to machine modes:
+</p>
+<dl compact="compact">
+<dd><a name="index-GET_005fMODE"></a>
+</dd>
+<dt><code>GET_MODE (<var>x</var>)</code></dt>
+<dd><p>Returns the machine mode of the RTX <var>x</var>.
+</p>
+<a name="index-PUT_005fMODE"></a>
+</dd>
+<dt><code>PUT_MODE (<var>x</var>, <var>newmode</var>)</code></dt>
+<dd><p>Alters the machine mode of the RTX <var>x</var> to be <var>newmode</var>.
+</p>
+<a name="index-NUM_005fMACHINE_005fMODES"></a>
+</dd>
+<dt><code>NUM_MACHINE_MODES</code></dt>
+<dd><p>Stands for the number of machine modes available on the target
+machine. This is one greater than the largest numeric value of any
+machine mode.
+</p>
+<a name="index-GET_005fMODE_005fNAME"></a>
+</dd>
+<dt><code>GET_MODE_NAME (<var>m</var>)</code></dt>
+<dd><p>Returns the name of mode <var>m</var> as a string.
+</p>
+<a name="index-GET_005fMODE_005fCLASS"></a>
+</dd>
+<dt><code>GET_MODE_CLASS (<var>m</var>)</code></dt>
+<dd><p>Returns the mode class of mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fWIDER_005fMODE"></a>
+</dd>
+<dt><code>GET_MODE_WIDER_MODE (<var>m</var>)</code></dt>
+<dd><p>Returns the next wider natural mode. For example, the expression
+<code>GET_MODE_WIDER_MODE (QImode)</code> returns <code>HImode</code>.
+</p>
+<a name="index-GET_005fMODE_005fSIZE"></a>
+</dd>
+<dt><code>GET_MODE_SIZE (<var>m</var>)</code></dt>
+<dd><p>Returns the size in bytes of a datum of mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fBITSIZE"></a>
+</dd>
+<dt><code>GET_MODE_BITSIZE (<var>m</var>)</code></dt>
+<dd><p>Returns the size in bits of a datum of mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fIBIT"></a>
+</dd>
+<dt><code>GET_MODE_IBIT (<var>m</var>)</code></dt>
+<dd><p>Returns the number of integral bits of a datum of fixed-point mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fFBIT"></a>
+</dd>
+<dt><code>GET_MODE_FBIT (<var>m</var>)</code></dt>
+<dd><p>Returns the number of fractional bits of a datum of fixed-point mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fMASK"></a>
+</dd>
+<dt><code>GET_MODE_MASK (<var>m</var>)</code></dt>
+<dd><p>Returns a bitmask containing 1 for all bits in a word that fit within
+mode <var>m</var>. This macro can only be used for modes whose bitsize is
+less than or equal to <code>HOST_BITS_PER_INT</code>.
+</p>
+<a name="index-GET_005fMODE_005fALIGNMENT"></a>
+</dd>
+<dt><code>GET_MODE_ALIGNMENT (<var>m</var>)</code></dt>
+<dd><p>Return the required alignment, in bits, for an object of mode <var>m</var>.
+</p>
+<a name="index-GET_005fMODE_005fUNIT_005fSIZE"></a>
+</dd>
+<dt><code>GET_MODE_UNIT_SIZE (<var>m</var>)</code></dt>
+<dd><p>Returns the size in bytes of the subunits of a datum of mode <var>m</var>.
+This is the same as <code>GET_MODE_SIZE</code> except in the case of complex
+modes. For them, the unit size is the size of the real or imaginary
+part.
+</p>
+<a name="index-GET_005fMODE_005fNUNITS"></a>
+</dd>
+<dt><code>GET_MODE_NUNITS (<var>m</var>)</code></dt>
+<dd><p>Returns the number of units contained in a mode, i.e.,
+<code>GET_MODE_SIZE</code> divided by <code>GET_MODE_UNIT_SIZE</code>.
+</p>
+<a name="index-GET_005fCLASS_005fNARROWEST_005fMODE"></a>
+</dd>
+<dt><code>GET_CLASS_NARROWEST_MODE (<var>c</var>)</code></dt>
+<dd><p>Returns the narrowest mode in mode class <var>c</var>.
+</p></dd>
+</dl>
+
+<p>The following 3 variables are defined on every target. They can be
+used to allocate buffers that are guaranteed to be large enough to
+hold any value that can be represented on the target. The first two
+can be overridden by defining them in the target&rsquo;s mode.def file,
+however, the value must be a constant that can determined very early
+in the compilation process. The third symbol cannot be overridden.
+</p>
+<dl compact="compact">
+<dd><a name="index-BITS_005fPER_005fUNIT"></a>
+</dd>
+<dt><code>BITS_PER_UNIT</code></dt>
+<dd><p>The number of bits in an addressable storage unit (byte). If you do
+not define this, the default is 8.
+</p>
+<a name="index-MAX_005fBITSIZE_005fMODE_005fANY_005fINT"></a>
+</dd>
+<dt><code>MAX_BITSIZE_MODE_ANY_INT</code></dt>
+<dd><p>The maximum bitsize of any mode that is used in integer math. This
+should be overridden by the target if it uses large integers as
+containers for larger vectors but otherwise never uses the contents to
+compute integer values.
+</p>
+<a name="index-MAX_005fBITSIZE_005fMODE_005fANY_005fMODE"></a>
+</dd>
+<dt><code>MAX_BITSIZE_MODE_ANY_MODE</code></dt>
+<dd><p>The bitsize of the largest mode on the target. The default value is
+the largest mode size given in the mode definition file, which is
+always correct for targets whose modes have a fixed size. Targets
+that might increase the size of a mode beyond this default should define
+<code>MAX_BITSIZE_MODE_ANY_MODE</code> to the actual upper limit in
+<samp><var>machine</var>-modes.def</samp>.
+</p></dd>
+</dl>
+
+<a name="index-byte_005fmode"></a>
+<a name="index-word_005fmode"></a>
+<p>The global variables <code>byte_mode</code> and <code>word_mode</code> contain modes
+whose classes are <code>MODE_INT</code> and whose bitsizes are either
+<code>BITS_PER_UNIT</code> or <code>BITS_PER_WORD</code>, respectively. On 32-bit
+machines, these are <code>QImode</code> and <code>SImode</code>, respectively.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Constants.html#Constants" accesskey="n" rel="next">Constants</a>, Previous: <a href="Flags.html#Flags" accesskey="p" rel="previous">Flags</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Machine_002dIndependent-Predicates.html b/share/doc/gccint/Machine_002dIndependent-Predicates.html
new file mode 100644
index 0000000..92c4929
--- /dev/null
+++ b/share/doc/gccint/Machine_002dIndependent-Predicates.html
@@ -0,0 +1,242 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Machine-Independent Predicates</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Machine-Independent Predicates">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Machine-Independent Predicates">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Predicates.html#Predicates" rel="up" title="Predicates">
+<link href="Defining-Predicates.html#Defining-Predicates" rel="next" title="Defining Predicates">
+<link href="Predicates.html#Predicates" rel="previous" title="Predicates">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Machine_002dIndependent-Predicates"></a>
+<div class="header">
+<p>
+Next: <a href="Defining-Predicates.html#Defining-Predicates" accesskey="n" rel="next">Defining Predicates</a>, Up: <a href="Predicates.html#Predicates" accesskey="u" rel="up">Predicates</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Machine_002dIndependent-Predicates-1"></a>
+<h4 class="subsection">17.7.1 Machine-Independent Predicates</h4>
+<a name="index-machine_002dindependent-predicates"></a>
+<a name="index-generic-predicates"></a>
+
+<p>These are the generic predicates available to all back ends. They are
+defined in <samp>recog.cc</samp>. The first category of predicates allow
+only constant, or <em>immediate</em>, operands.
+</p>
+<dl>
+<dt><a name="index-immediate_005foperand"></a>Function: <strong>immediate_operand</strong></dt>
+<dd><p>This predicate allows any sort of constant that fits in <var>mode</var>.
+It is an appropriate choice for instructions that take operands that
+must be constant.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-const_005fint_005foperand"></a>Function: <strong>const_int_operand</strong></dt>
+<dd><p>This predicate allows any <code>CONST_INT</code> expression that fits in
+<var>mode</var>. It is an appropriate choice for an immediate operand that
+does not allow a symbol or label.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-const_005fdouble_005foperand"></a>Function: <strong>const_double_operand</strong></dt>
+<dd><p>This predicate accepts any <code>CONST_DOUBLE</code> expression that has
+exactly <var>mode</var>. If <var>mode</var> is <code>VOIDmode</code>, it will also
+accept <code>CONST_INT</code>. It is intended for immediate floating point
+constants.
+</p></dd></dl>
+
+<p>The second category of predicates allow only some kind of machine
+register.
+</p>
+<dl>
+<dt><a name="index-register_005foperand"></a>Function: <strong>register_operand</strong></dt>
+<dd><p>This predicate allows any <code>REG</code> or <code>SUBREG</code> expression that
+is valid for <var>mode</var>. It is often suitable for arithmetic
+instruction operands on a RISC machine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-pmode_005fregister_005foperand"></a>Function: <strong>pmode_register_operand</strong></dt>
+<dd><p>This is a slight variant on <code>register_operand</code> which works around
+a limitation in the machine-description reader.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_operand <var>n</var> &quot;pmode_register_operand&quot; <var>constraint</var>)
+</pre></div>
+
+<p>means exactly what
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_operand:P <var>n</var> &quot;register_operand&quot; <var>constraint</var>)
+</pre></div>
+
+<p>would mean, if the machine-description reader accepted &lsquo;<samp>:P</samp>&rsquo;
+mode suffixes. Unfortunately, it cannot, because <code>Pmode</code> is an
+alias for some other mode, and might vary with machine-specific
+options. See <a href="Misc.html#Misc">Misc</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-scratch_005foperand"></a>Function: <strong>scratch_operand</strong></dt>
+<dd><p>This predicate allows hard registers and <code>SCRATCH</code> expressions,
+but not pseudo-registers. It is used internally by <code>match_scratch</code>;
+it should not be used directly.
+</p></dd></dl>
+
+<p>The third category of predicates allow only some kind of memory reference.
+</p>
+<dl>
+<dt><a name="index-memory_005foperand"></a>Function: <strong>memory_operand</strong></dt>
+<dd><p>This predicate allows any valid reference to a quantity of mode
+<var>mode</var> in memory, as determined by the weak form of
+<code>GO_IF_LEGITIMATE_ADDRESS</code> (see <a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-address_005foperand"></a>Function: <strong>address_operand</strong></dt>
+<dd><p>This predicate is a little unusual; it allows any operand that is a
+valid expression for the <em>address</em> of a quantity of mode
+<var>mode</var>, again determined by the weak form of
+<code>GO_IF_LEGITIMATE_ADDRESS</code>. To first order, if
+&lsquo;<samp>(mem:<var>mode</var>&nbsp;(<var>exp</var>))<!-- /@w --></samp>&rsquo; is acceptable to
+<code>memory_operand</code>, then <var>exp</var> is acceptable to
+<code>address_operand</code>. Note that <var>exp</var> does not necessarily have
+the mode <var>mode</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-indirect_005foperand"></a>Function: <strong>indirect_operand</strong></dt>
+<dd><p>This is a stricter form of <code>memory_operand</code> which allows only
+memory references with a <code>general_operand</code> as the address
+expression. New uses of this predicate are discouraged, because
+<code>general_operand</code> is very permissive, so it&rsquo;s hard to tell what
+an <code>indirect_operand</code> does or does not allow. If a target has
+different requirements for memory operands for different instructions,
+it is better to define target-specific predicates which enforce the
+hardware&rsquo;s requirements explicitly.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-push_005foperand"></a>Function: <strong>push_operand</strong></dt>
+<dd><p>This predicate allows a memory reference suitable for pushing a value
+onto the stack. This will be a <code>MEM</code> which refers to
+<code>stack_pointer_rtx</code>, with a side effect in its address expression
+(see <a href="Incdec.html#Incdec">Incdec</a>); which one is determined by the
+<code>STACK_PUSH_CODE</code> macro (see <a href="Frame-Layout.html#Frame-Layout">Frame Layout</a>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-pop_005foperand"></a>Function: <strong>pop_operand</strong></dt>
+<dd><p>This predicate allows a memory reference suitable for popping a value
+off the stack. Again, this will be a <code>MEM</code> referring to
+<code>stack_pointer_rtx</code>, with a side effect in its address
+expression. However, this time <code>STACK_POP_CODE</code> is expected.
+</p></dd></dl>
+
+<p>The fourth category of predicates allow some combination of the above
+operands.
+</p>
+<dl>
+<dt><a name="index-nonmemory_005foperand"></a>Function: <strong>nonmemory_operand</strong></dt>
+<dd><p>This predicate allows any immediate or register operand valid for <var>mode</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-nonimmediate_005foperand"></a>Function: <strong>nonimmediate_operand</strong></dt>
+<dd><p>This predicate allows any register or memory operand valid for <var>mode</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-general_005foperand"></a>Function: <strong>general_operand</strong></dt>
+<dd><p>This predicate allows any immediate, register, or memory operand
+valid for <var>mode</var>.
+</p></dd></dl>
+
+<p>Finally, there are two generic operator predicates.
+</p>
+<dl>
+<dt><a name="index-comparison_005foperator"></a>Function: <strong>comparison_operator</strong></dt>
+<dd><p>This predicate matches any expression which performs an arithmetic
+comparison in <var>mode</var>; that is, <code>COMPARISON_P</code> is true for the
+expression code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ordered_005fcomparison_005foperator"></a>Function: <strong>ordered_comparison_operator</strong></dt>
+<dd><p>This predicate matches any expression which performs an arithmetic
+comparison in <var>mode</var> and whose expression code is valid for integer
+modes; that is, the expression code will be one of <code>eq</code>, <code>ne</code>,
+<code>lt</code>, <code>ltu</code>, <code>le</code>, <code>leu</code>, <code>gt</code>, <code>gtu</code>,
+<code>ge</code>, <code>geu</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Defining-Predicates.html#Defining-Predicates" accesskey="n" rel="next">Defining Predicates</a>, Up: <a href="Predicates.html#Predicates" accesskey="u" rel="up">Predicates</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Macros-and-Functions.html b/share/doc/gccint/Macros-and-Functions.html
new file mode 100644
index 0000000..7550b32
--- /dev/null
+++ b/share/doc/gccint/Macros-and-Functions.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Macros and Functions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Macros and Functions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Macros and Functions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-overview.html#Tree-overview" rel="up" title="Tree overview">
+<link href="Identifiers.html#Identifiers" rel="next" title="Identifiers">
+<link href="Tree-overview.html#Tree-overview" rel="previous" title="Tree overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Macros-and-Functions"></a>
+<div class="header">
+<p>
+Next: <a href="Identifiers.html#Identifiers" accesskey="n" rel="next">Identifiers</a>, Up: <a href="Tree-overview.html#Tree-overview" accesskey="u" rel="up">Tree overview</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Trees"></a>
+<h4 class="subsection">11.2.1 Trees</h4>
+<a name="index-tree-1"></a>
+<a name="index-TREE_005fCHAIN"></a>
+<a name="index-TREE_005fTYPE"></a>
+
+<p>All GENERIC trees have two fields in common. First, <code>TREE_CHAIN</code>
+is a pointer that can be used as a singly-linked list to other trees.
+The other is <code>TREE_TYPE</code>. Many trees store the type of an
+expression or declaration in this field.
+</p>
+<p>These are some other functions for handling trees:
+</p>
+<dl compact="compact">
+<dt><code>tree_size</code>
+<a name="index-tree_005fsize"></a>
+</dt>
+<dd><p>Return the number of bytes a tree takes.
+</p>
+</dd>
+<dt><code>build0</code>
+<a name="index-build0"></a>
+</dt>
+<dt><code>build1</code>
+<a name="index-build1"></a>
+</dt>
+<dt><code>build2</code>
+<a name="index-build2"></a>
+</dt>
+<dt><code>build3</code>
+<a name="index-build3"></a>
+</dt>
+<dt><code>build4</code>
+<a name="index-build4"></a>
+</dt>
+<dt><code>build5</code>
+<a name="index-build5"></a>
+</dt>
+<dt><code>build6</code>
+<a name="index-build6"></a>
+</dt>
+<dd>
+<p>These functions build a tree and supply values to put in each
+parameter. The basic signature is &lsquo;<samp>code,&nbsp;type,&nbsp;[operands]<!-- /@w --></samp>&rsquo;.
+<code>code</code> is the <code>TREE_CODE</code>, and <code>type</code> is a tree
+representing the <code>TREE_TYPE</code>. These are followed by the
+operands, each of which is also a tree.
+</p>
+</dd>
+</dl>
+
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Macros-for-Initialization.html b/share/doc/gccint/Macros-for-Initialization.html
new file mode 100644
index 0000000..cc2dc50
--- /dev/null
+++ b/share/doc/gccint/Macros-for-Initialization.html
@@ -0,0 +1,264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Macros for Initialization</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Macros for Initialization">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Macros for Initialization">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Instruction-Output.html#Instruction-Output" rel="next" title="Instruction Output">
+<link href="Initialization.html#Initialization" rel="previous" title="Initialization">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Macros-for-Initialization"></a>
+<div class="header">
+<p>
+Next: <a href="Instruction-Output.html#Instruction-Output" accesskey="n" rel="next">Instruction Output</a>, Previous: <a href="Initialization.html#Initialization" accesskey="p" rel="previous">Initialization</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-Controlling-Initialization-Routines"></a>
+<h4 class="subsection">18.20.6 Macros Controlling Initialization Routines</h4>
+
+<p>Here are the macros that control how the compiler handles initialization
+and termination functions:
+</p>
+<dl>
+<dt><a name="index-INIT_005fSECTION_005fASM_005fOP-1"></a>Macro: <strong>INIT_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C string constant, including spacing, for the assembler
+operation to identify the following data as initialization code. If not
+defined, GCC will assume such a section does not exist. When you are
+using special sections for initialization and termination functions, this
+macro also controls how <samp>crtstuff.c</samp> and <samp>libgcc2.c</samp> arrange to
+run the initialization functions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HAS_005fINIT_005fSECTION"></a>Macro: <strong>HAS_INIT_SECTION</strong></dt>
+<dd><p>If defined, <code>main</code> will not call <code>__main</code> as described above.
+This macro should be defined for systems that control start-up code
+on a symbol-by-symbol basis, such as OSF/1, and should not
+be defined explicitly for systems that support <code>INIT_SECTION_ASM_OP</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LD_005fINIT_005fSWITCH"></a>Macro: <strong>LD_INIT_SWITCH</strong></dt>
+<dd><p>If defined, a C string constant for a switch that tells the linker that
+the following symbol is an initialization routine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LD_005fFINI_005fSWITCH"></a>Macro: <strong>LD_FINI_SWITCH</strong></dt>
+<dd><p>If defined, a C string constant for a switch that tells the linker that
+the following symbol is a finalization routine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-COLLECT_005fSHARED_005fINIT_005fFUNC"></a>Macro: <strong>COLLECT_SHARED_INIT_FUNC</strong> <em>(<var>stream</var>, <var>func</var>)</em></dt>
+<dd><p>If defined, a C statement that will write a function that can be
+automatically called when a shared library is loaded. The function
+should call <var>func</var>, which takes no arguments. If not defined, and
+the object format requires an explicit initialization function, then a
+function called <code>_GLOBAL__DI</code> will be generated.
+</p>
+<p>This function and the following one are used by collect2 when linking a
+shared library that needs constructors or destructors, or has DWARF2
+exception tables embedded in the code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-COLLECT_005fSHARED_005fFINI_005fFUNC"></a>Macro: <strong>COLLECT_SHARED_FINI_FUNC</strong> <em>(<var>stream</var>, <var>func</var>)</em></dt>
+<dd><p>If defined, a C statement that will write a function that can be
+automatically called when a shared library is unloaded. The function
+should call <var>func</var>, which takes no arguments. If not defined, and
+the object format requires an explicit finalization function, then a
+function called <code>_GLOBAL__DD</code> will be generated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INVOKE_005f_005fmain"></a>Macro: <strong>INVOKE__main</strong></dt>
+<dd><p>If defined, <code>main</code> will call <code>__main</code> despite the presence of
+<code>INIT_SECTION_ASM_OP</code>. This macro should be defined for systems
+where the init section is not actually run automatically, but is still
+useful for collecting the lists of constructors and destructors.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SUPPORTS_005fINIT_005fPRIORITY"></a>Macro: <strong>SUPPORTS_INIT_PRIORITY</strong></dt>
+<dd><p>If nonzero, the C++ <code>init_priority</code> attribute is supported and the
+compiler should emit instructions to control the order of initialization
+of objects. If zero, the compiler will issue an error message upon
+encountering an <code>init_priority</code> attribute.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fCTORS_005fDTORS"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_CTORS_DTORS</strong></dt>
+<dd><p>This value is true if the target supports some &ldquo;native&rdquo; method of
+collecting constructors and destructors to be run at startup and exit.
+It is false if we must use <code>collect2</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDTORS_005fFROM_005fCXA_005fATEXIT"></a>Target Hook: <em>bool</em> <strong>TARGET_DTORS_FROM_CXA_ATEXIT</strong></dt>
+<dd><p>This value is true if the target wants destructors to be queued to be
+run from __cxa_atexit. If this is the case then, for each priority level,
+a new constructor will be entered that registers the destructors for that
+level with __cxa_atexit (and there will be no destructors emitted).
+It is false the method implied by <code>have_ctors_dtors</code> is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fCONSTRUCTOR"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_CONSTRUCTOR</strong> <em>(rtx <var>symbol</var>, int <var>priority</var>)</em></dt>
+<dd><p>If defined, a function that outputs assembler code to arrange to call
+the function referenced by <var>symbol</var> at initialization time.
+</p>
+<p>Assume that <var>symbol</var> is a <code>SYMBOL_REF</code> for a function taking
+no arguments and with no return value. If the target supports initialization
+priorities, <var>priority</var> is a value between 0 and <code>MAX_INIT_PRIORITY</code>;
+otherwise it must be <code>DEFAULT_INIT_PRIORITY</code>.
+</p>
+<p>If this macro is not defined by the target, a suitable default will
+be chosen if (1) the target supports arbitrary section names, (2) the
+target defines <code>CTORS_SECTION_ASM_OP</code>, or (3) <code>USE_COLLECT2</code>
+is not defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fDESTRUCTOR"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_DESTRUCTOR</strong> <em>(rtx <var>symbol</var>, int <var>priority</var>)</em></dt>
+<dd><p>This is like <code>TARGET_ASM_CONSTRUCTOR</code> but used for termination
+functions rather than initialization functions.
+</p></dd></dl>
+
+<p>If <code>TARGET_HAVE_CTORS_DTORS</code> is true, the initialization routine
+generated for the generated object file will have static linkage.
+</p>
+<p>If your system uses <code>collect2</code> as the means of processing
+constructors, then that program normally uses <code>nm</code> to scan
+an object file for constructor functions to be called.
+</p>
+<p>On certain kinds of systems, you can define this macro to make
+<code>collect2</code> work faster (and, in some cases, make it work at all):
+</p>
+<dl>
+<dt><a name="index-OBJECT_005fFORMAT_005fCOFF"></a>Macro: <strong>OBJECT_FORMAT_COFF</strong></dt>
+<dd><p>Define this macro if the system uses COFF (Common Object File Format)
+object files, so that <code>collect2</code> can assume this format and scan
+object files directly for dynamic constructor/destructor functions.
+</p>
+<p>This macro is effective only in a native compiler; <code>collect2</code> as
+part of a cross compiler always uses <code>nm</code> for the target machine.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REAL_005fNM_005fFILE_005fNAME"></a>Macro: <strong>REAL_NM_FILE_NAME</strong></dt>
+<dd><p>Define this macro as a C string constant containing the file name to use
+to execute <code>nm</code>. The default is to search the path normally for
+<code>nm</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NM_005fFLAGS"></a>Macro: <strong>NM_FLAGS</strong></dt>
+<dd><p><code>collect2</code> calls <code>nm</code> to scan object files for static
+constructors and destructors and LTO info. By default, <samp>-n</samp> is
+passed. Define <code>NM_FLAGS</code> to a C string constant if other options
+are needed to get the same output format as GNU <code>nm -n</code>
+produces.
+</p></dd></dl>
+
+<p>If your system supports shared libraries and has a program to list the
+dynamic dependencies of a given library or executable, you can define
+these macros to enable support for running initialization and
+termination functions in shared libraries:
+</p>
+<dl>
+<dt><a name="index-LDD_005fSUFFIX"></a>Macro: <strong>LDD_SUFFIX</strong></dt>
+<dd><p>Define this macro to a C string constant containing the name of the program
+which lists dynamic dependencies, like <code>ldd</code> under SunOS 4.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PARSE_005fLDD_005fOUTPUT"></a>Macro: <strong>PARSE_LDD_OUTPUT</strong> <em>(<var>ptr</var>)</em></dt>
+<dd><p>Define this macro to be C code that extracts filenames from the output
+of the program denoted by <code>LDD_SUFFIX</code>. <var>ptr</var> is a variable
+of type <code>char *</code> that points to the beginning of a line of output
+from <code>LDD_SUFFIX</code>. If the line lists a dynamic dependency, the
+code must advance <var>ptr</var> to the beginning of the filename on that
+line. Otherwise, it must set <var>ptr</var> to <code>NULL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHLIB_005fSUFFIX"></a>Macro: <strong>SHLIB_SUFFIX</strong></dt>
+<dd><p>Define this macro to a C string constant containing the default shared
+library extension of the target (e.g., &lsquo;<samp>&quot;.so&quot;</samp>&rsquo;). <code>collect2</code>
+strips version information after this suffix when generating global
+constructor and destructor names. This define is only needed on targets
+that use <code>collect2</code> to process constructors and destructors.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Instruction-Output.html#Instruction-Output" accesskey="n" rel="next">Instruction Output</a>, Previous: <a href="Initialization.html#Initialization" accesskey="p" rel="previous">Initialization</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Maintaining-the-CFG.html b/share/doc/gccint/Maintaining-the-CFG.html
new file mode 100644
index 0000000..ab1f882
--- /dev/null
+++ b/share/doc/gccint/Maintaining-the-CFG.html
@@ -0,0 +1,248 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Maintaining the CFG</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Maintaining the CFG">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Maintaining the CFG">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Control-Flow.html#Control-Flow" rel="up" title="Control Flow">
+<link href="Liveness-information.html#Liveness-information" rel="next" title="Liveness information">
+<link href="Profile-information.html#Profile-information" rel="previous" title="Profile information">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Maintaining-the-CFG"></a>
+<div class="header">
+<p>
+Next: <a href="Liveness-information.html#Liveness-information" accesskey="n" rel="next">Liveness information</a>, Previous: <a href="Profile-information.html#Profile-information" accesskey="p" rel="previous">Profile information</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Maintaining-the-CFG-1"></a>
+<h3 class="section">15.4 Maintaining the CFG</h3>
+<a name="index-cfghooks_002eh"></a>
+
+<p>An important task of each compiler pass is to keep both the control
+flow graph and all profile information up-to-date. Reconstruction of
+the control flow graph after each pass is not an option, since it may be
+very expensive and lost profile information cannot be reconstructed at
+all.
+</p>
+<p>GCC has two major intermediate representations, and both use the
+<code>basic_block</code> and <code>edge</code> data types to represent control
+flow. Both representations share as much of the CFG maintenance code
+as possible. For each representation, a set of <em>hooks</em> is defined
+so that each representation can provide its own implementation of CFG
+manipulation routines when necessary. These hooks are defined in
+<samp>cfghooks.h</samp>. There are hooks for almost all common CFG
+manipulations, including block splitting and merging, edge redirection
+and creating and deleting basic blocks. These hooks should provide
+everything you need to maintain and manipulate the CFG in both the RTL
+and <code>GIMPLE</code> representation.
+</p>
+<p>At the moment, the basic block boundaries are maintained transparently
+when modifying instructions, so there rarely is a need to move them
+manually (such as in case someone wants to output instruction outside
+basic block explicitly).
+</p>
+<a name="index-BLOCK_005fFOR_005fINSN_002c-gimple_005fbb"></a>
+<p>In the RTL representation, each instruction has a
+<code>BLOCK_FOR_INSN</code> value that represents pointer to the basic block
+that contains the instruction. In the <code>GIMPLE</code> representation, the
+function <code>gimple_bb</code> returns a pointer to the basic block
+containing the queried statement.
+</p>
+<a name="index-GIMPLE-statement-iterators-1"></a>
+<p>When changes need to be applied to a function in its <code>GIMPLE</code>
+representation, <em>GIMPLE statement iterators</em> should be used. These
+iterators provide an integrated abstraction of the flow graph and the
+instruction stream. Block statement iterators are constructed using
+the <code>gimple_stmt_iterator</code> data structure and several modifiers are
+available, including the following:
+</p>
+<dl compact="compact">
+<dt><code>gsi_start</code>
+<a name="index-gsi_005fstart-1"></a>
+</dt>
+<dd><p>This function initializes a <code>gimple_stmt_iterator</code> that points to
+the first non-empty statement in a basic block.
+</p>
+</dd>
+<dt><code>gsi_last</code>
+<a name="index-gsi_005flast-1"></a>
+</dt>
+<dd><p>This function initializes a <code>gimple_stmt_iterator</code> that points to
+the last statement in a basic block.
+</p>
+</dd>
+<dt><code>gsi_end_p</code>
+<a name="index-gsi_005fend_005fp-1"></a>
+</dt>
+<dd><p>This predicate is <code>true</code> if a <code>gimple_stmt_iterator</code>
+represents the end of a basic block.
+</p>
+</dd>
+<dt><code>gsi_next</code>
+<a name="index-gsi_005fnext-1"></a>
+</dt>
+<dd><p>This function takes a <code>gimple_stmt_iterator</code> and makes it point to
+its successor.
+</p>
+</dd>
+<dt><code>gsi_prev</code>
+<a name="index-gsi_005fprev-1"></a>
+</dt>
+<dd><p>This function takes a <code>gimple_stmt_iterator</code> and makes it point to
+its predecessor.
+</p>
+</dd>
+<dt><code>gsi_insert_after</code>
+<a name="index-gsi_005finsert_005fafter-1"></a>
+</dt>
+<dd><p>This function inserts a statement after the <code>gimple_stmt_iterator</code>
+passed in. The final parameter determines whether the statement
+iterator is updated to point to the newly inserted statement, or left
+pointing to the original statement.
+</p>
+</dd>
+<dt><code>gsi_insert_before</code>
+<a name="index-gsi_005finsert_005fbefore-1"></a>
+</dt>
+<dd><p>This function inserts a statement before the <code>gimple_stmt_iterator</code>
+passed in. The final parameter determines whether the statement
+iterator is updated to point to the newly inserted statement, or left
+pointing to the original statement.
+</p>
+</dd>
+<dt><code>gsi_remove</code>
+<a name="index-gsi_005fremove-1"></a>
+</dt>
+<dd><p>This function removes the <code>gimple_stmt_iterator</code> passed in and
+rechains the remaining statements in a basic block, if any.
+</p></dd>
+</dl>
+
+<a name="index-BB_005fHEAD_002c-BB_005fEND"></a>
+<p>In the RTL representation, the macros <code>BB_HEAD</code> and <code>BB_END</code>
+may be used to get the head and end <code>rtx</code> of a basic block. No
+abstract iterators are defined for traversing the insn chain, but you
+can just use <code>NEXT_INSN</code> and <code>PREV_INSN</code> instead. See <a href="Insns.html#Insns">Insns</a>.
+</p>
+<a name="index-purge_005fdead_005fedges-1"></a>
+<p>Usually a code manipulating pass simplifies the instruction stream and
+the flow of control, possibly eliminating some edges. This may for
+example happen when a conditional jump is replaced with an
+unconditional jump. Updating of edges
+is not transparent and each optimization pass is required to do so
+manually. However only few cases occur in practice. The pass may
+call <code>purge_dead_edges</code> on a given basic block to remove
+superfluous edges, if any.
+</p>
+<a name="index-redirect_005fedge_005fand_005fbranch_002c-redirect_005fjump"></a>
+<p>Another common scenario is redirection of branch instructions, but
+this is best modeled as redirection of edges in the control flow graph
+and thus use of <code>redirect_edge_and_branch</code> is preferred over more
+low level functions, such as <code>redirect_jump</code> that operate on RTL
+chain only. The CFG hooks defined in <samp>cfghooks.h</samp> should provide
+the complete API required for manipulating and maintaining the CFG.
+</p>
+<a name="index-split_005fblock"></a>
+<p>It is also possible that a pass has to insert control flow instruction
+into the middle of a basic block, thus creating an entry point in the
+middle of the basic block, which is impossible by definition: The
+block must be split to make sure it only has one entry point, i.e. the
+head of the basic block. The CFG hook <code>split_block</code> may be used
+when an instruction in the middle of a basic block has to become the
+target of a jump or branch instruction.
+</p>
+<a name="index-insert_005finsn_005fon_005fedge"></a>
+<a name="index-commit_005fedge_005finsertions"></a>
+<a name="index-gsi_005finsert_005fon_005fedge-1"></a>
+<a name="index-gsi_005fcommit_005fedge_005finserts-1"></a>
+<a name="index-edge-splitting"></a>
+<p>For a global optimizer, a common operation is to split edges in the
+flow graph and insert instructions on them. In the RTL
+representation, this can be easily done using the
+<code>insert_insn_on_edge</code> function that emits an instruction
+&ldquo;on the edge&rdquo;, caching it for a later <code>commit_edge_insertions</code>
+call that will take care of moving the inserted instructions off the
+edge into the instruction stream contained in a basic block. This
+includes the creation of new basic blocks where needed. In the
+<code>GIMPLE</code> representation, the equivalent functions are
+<code>gsi_insert_on_edge</code> which inserts a block statement
+iterator on an edge, and <code>gsi_commit_edge_inserts</code> which flushes
+the instruction to actual instruction stream.
+</p>
+<a name="index-verify_005fflow_005finfo"></a>
+<a name="index-CFG-verification"></a>
+<p>While debugging the optimization pass, the <code>verify_flow_info</code>
+function may be useful to find bugs in the control flow graph updating
+code.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Liveness-information.html#Liveness-information" accesskey="n" rel="next">Liveness information</a>, Previous: <a href="Profile-information.html#Profile-information" accesskey="p" rel="previous">Profile information</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Makefile.html b/share/doc/gccint/Makefile.html
new file mode 100644
index 0000000..13c5831
--- /dev/null
+++ b/share/doc/gccint/Makefile.html
@@ -0,0 +1,320 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Makefile</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Makefile">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Makefile">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Library-Files.html#Library-Files" rel="next" title="Library Files">
+<link href="Build.html#Build" rel="previous" title="Build">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Makefile"></a>
+<div class="header">
+<p>
+Next: <a href="Library-Files.html#Library-Files" accesskey="n" rel="next">Library Files</a>, Previous: <a href="Build.html#Build" accesskey="p" rel="previous">Build</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Makefile-Targets"></a>
+<h4 class="subsection">6.3.4 Makefile Targets</h4>
+<a name="index-makefile-targets"></a>
+<a name="index-targets_002c-makefile"></a>
+
+<p>These targets are available from the &lsquo;<samp>gcc</samp>&rsquo; directory:
+</p>
+<dl compact="compact">
+<dt><code>all</code></dt>
+<dd><p>This is the default target. Depending on what your build/host/target
+configuration is, it coordinates all the things that need to be built.
+</p>
+</dd>
+<dt><code>doc</code></dt>
+<dd><p>Produce info-formatted documentation and man pages. Essentially it
+calls &lsquo;<samp>make man</samp>&rsquo; and &lsquo;<samp>make info</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>dvi</code></dt>
+<dd><p>Produce DVI-formatted documentation.
+</p>
+</dd>
+<dt><code>pdf</code></dt>
+<dd><p>Produce PDF-formatted documentation.
+</p>
+</dd>
+<dt><code>html</code></dt>
+<dd><p>Produce HTML-formatted documentation.
+</p>
+</dd>
+<dt><code>man</code></dt>
+<dd><p>Generate man pages.
+</p>
+</dd>
+<dt><code>info</code></dt>
+<dd><p>Generate info-formatted pages.
+</p>
+</dd>
+<dt><code>mostlyclean</code></dt>
+<dd><p>Delete the files made while building the compiler.
+</p>
+</dd>
+<dt><code>clean</code></dt>
+<dd><p>That, and all the other files built by &lsquo;<samp>make all</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>distclean</code></dt>
+<dd><p>That, and all the files created by <code>configure</code>.
+</p>
+</dd>
+<dt><code>maintainer-clean</code></dt>
+<dd><p>Distclean plus any file that can be generated from other files. Note
+that additional tools may be required beyond what is normally needed to
+build GCC.
+</p>
+</dd>
+<dt><code>srcextra</code></dt>
+<dd><p>Generates files in the source directory that are not version-controlled but
+should go into a release tarball.
+</p>
+</dd>
+<dt><code>srcinfo</code></dt>
+<dt><code>srcman</code></dt>
+<dd><p>Copies the info-formatted and manpage documentation into the source
+directory usually for the purpose of generating a release tarball.
+</p>
+</dd>
+<dt><code>install</code></dt>
+<dd><p>Installs GCC.
+</p>
+</dd>
+<dt><code>uninstall</code></dt>
+<dd><p>Deletes installed files, though this is not supported.
+</p>
+</dd>
+<dt><code>check</code></dt>
+<dd><p>Run the testsuite. This creates a <samp>testsuite</samp> subdirectory that
+has various <samp>.sum</samp> and <samp>.log</samp> files containing the results of
+the testing. You can run subsets with, for example, &lsquo;<samp>make check-gcc</samp>&rsquo;.
+You can specify specific tests by setting <code>RUNTESTFLAGS</code> to be the name
+of the <samp>.exp</samp> file, optionally followed by (for some tests) an equals
+and a file wildcard, like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">make check-gcc RUNTESTFLAGS=&quot;execute.exp=19980413-*&quot;
+</pre></div>
+
+<p>Note that running the testsuite may require additional tools be
+installed, such as Tcl or DejaGnu.
+</p></dd>
+</dl>
+
+<p>The toplevel tree from which you start GCC compilation is not
+the GCC directory, but rather a complex Makefile that coordinates
+the various steps of the build, including bootstrapping the compiler
+and using the new compiler to build target libraries.
+</p>
+<p>When GCC is configured for a native configuration, the default action
+for <code>make</code> is to do a full three-stage bootstrap. This means
+that GCC is built three times&mdash;once with the native compiler, once with
+the native-built compiler it just built, and once with the compiler it
+built the second time. In theory, the last two should produce the same
+results, which &lsquo;<samp>make compare</samp>&rsquo; can check. Each stage is configured
+separately and compiled into a separate directory, to minimize problems
+due to ABI incompatibilities between the native compiler and GCC.
+</p>
+<p>If you do a change, rebuilding will also start from the first stage
+and &ldquo;bubble&rdquo; up the change through the three stages. Each stage
+is taken from its build directory (if it had been built previously),
+rebuilt, and copied to its subdirectory. This will allow you to, for
+example, continue a bootstrap after fixing a bug which causes the
+stage2 build to crash. It does not provide as good coverage of the
+compiler as bootstrapping from scratch, but it ensures that the new
+code is syntactically correct (e.g., that you did not use GCC extensions
+by mistake), and avoids spurious bootstrap comparison
+failures<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>.
+</p>
+<p>Other targets available from the top level include:
+</p>
+<dl compact="compact">
+<dt><code>bootstrap-lean</code></dt>
+<dd><p>Like <code>bootstrap</code>, except that the various stages are removed once
+they&rsquo;re no longer needed. This saves disk space.
+</p>
+</dd>
+<dt><code>bootstrap2</code></dt>
+<dt><code>bootstrap2-lean</code></dt>
+<dd><p>Performs only the first two stages of bootstrap. Unlike a three-stage
+bootstrap, this does not perform a comparison to test that the compiler
+is running properly. Note that the disk space required by a &ldquo;lean&rdquo;
+bootstrap is approximately independent of the number of stages.
+</p>
+</dd>
+<dt><code>stage<var>N</var>-bubble (<var>N</var> = 1&hellip;4, profile, feedback)</code></dt>
+<dd><p>Rebuild all the stages up to <var>N</var>, with the appropriate flags,
+&ldquo;bubbling&rdquo; the changes as described above.
+</p>
+</dd>
+<dt><code>all-stage<var>N</var> (<var>N</var> = 1&hellip;4, profile, feedback)</code></dt>
+<dd><p>Assuming that stage <var>N</var> has already been built, rebuild it with the
+appropriate flags. This is rarely needed.
+</p>
+</dd>
+<dt><code>cleanstrap</code></dt>
+<dd><p>Remove everything (&lsquo;<samp>make clean</samp>&rsquo;) and rebuilds (&lsquo;<samp>make bootstrap</samp>&rsquo;).
+</p>
+</dd>
+<dt><code>compare</code></dt>
+<dd><p>Compares the results of stages 2 and 3. This ensures that the compiler
+is running properly, since it should produce the same object files
+regardless of how it itself was compiled.
+</p>
+</dd>
+<dt><code>distclean-stage<var>N</var> (<var>N</var> = 1&hellip;4, profile, feedback)</code></dt>
+<dd><p>Wipe stage <var>N</var> and all the following ones.
+</p>
+<p>For example,
+&lsquo;<samp>make distclean-stage3</samp>&rsquo; wipes stage 3 and all the following ones,
+so that another <code>make</code> then rebuilds them from scratch.
+This can be useful if you&rsquo;re doing changes where
+&ldquo;bubbling&rdquo; the changes as described above is not sufficient,
+but a full <code>make restrap</code> isn&rsquo;t necessary either.
+</p>
+</dd>
+<dt><code>profiledbootstrap</code></dt>
+<dd><p>Builds a compiler with profiling feedback information. In this case,
+the second and third stages are named &lsquo;<samp>profile</samp>&rsquo; and &lsquo;<samp>feedback</samp>&rsquo;,
+respectively. For more information, see the installation instructions.
+</p>
+</dd>
+<dt><code>restrap</code></dt>
+<dd><p>Restart a bootstrap, so that everything that was not built with
+the system compiler is rebuilt.
+</p>
+</dd>
+<dt><code>stage<var>N</var>-start (<var>N</var> = 1&hellip;4, profile, feedback)</code></dt>
+<dd><p>For each package that is bootstrapped, rename directories so that,
+for example, <samp>gcc</samp> points to the stage<var>N</var> GCC, compiled
+with the stage<var>N-1</var> GCC<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>.
+</p>
+<p>You will invoke this target if you need to test or debug the
+stage<var>N</var> GCC. If you only need to execute GCC (but you need
+not run &lsquo;<samp>make</samp>&rsquo; either to rebuild it or to run test suites),
+you should be able to work directly in the <samp>stage<var>N</var>-gcc</samp>
+directory. This makes it easier to debug multiple stages in
+parallel.
+</p>
+</dd>
+<dt><code>stage</code></dt>
+<dd><p>For each package that is bootstrapped, relocate its build directory
+to indicate its stage. For example, if the <samp>gcc</samp> directory
+points to the stage2 GCC, after invoking this target it will be
+renamed to <samp>stage2-gcc</samp>.
+</p>
+</dd>
+</dl>
+
+<p>If you wish to use non-default GCC flags when compiling the stage2 and
+stage3 compilers, set <code>BOOT_CFLAGS</code> on the command line when doing
+&lsquo;<samp>make</samp>&rsquo;.
+</p>
+<p>Usually, the first stage only builds the languages that the compiler
+is written in: typically, C and maybe Ada. If you are debugging a
+miscompilation of a different stage2 front-end (for example, of the
+Fortran front-end), you may want to have front-ends for other languages
+in the first stage as well. To do so, set <code>STAGE1_LANGUAGES</code>
+on the command line when doing &lsquo;<samp>make</samp>&rsquo;.
+</p>
+<p>For example, in the aforementioned scenario of debugging a Fortran
+front-end miscompilation caused by the stage1 compiler, you may need a
+command like
+</p>
+<div class="example">
+<pre class="example">make stage2-bubble STAGE1_LANGUAGES=c,fortran
+</pre></div>
+
+<p>Alternatively, you can use per-language targets to build and test
+languages that are not enabled by default in stage1. For example,
+<code>make f951</code> will build a Fortran compiler even in the stage1
+build directory.
+</p>
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT1" href="#DOCF1">(1)</a></h3>
+<p>Except if the compiler was buggy and miscompiled
+some of the files that were not modified. In this case, it&rsquo;s best
+to use <code>make restrap</code>.</p>
+<h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
+<p>Customarily, the system compiler
+is also termed the <samp>stage0</samp> GCC.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Library-Files.html#Library-Files" accesskey="n" rel="next">Library Files</a>, Previous: <a href="Build.html#Build" accesskey="p" rel="previous">Build</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Man-Page-Generation.html b/share/doc/gccint/Man-Page-Generation.html
new file mode 100644
index 0000000..59423b2
--- /dev/null
+++ b/share/doc/gccint/Man-Page-Generation.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Man Page Generation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Man Page Generation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Man Page Generation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Documentation.html#Documentation" rel="up" title="Documentation">
+<link href="Miscellaneous-Docs.html#Miscellaneous-Docs" rel="next" title="Miscellaneous Docs">
+<link href="Texinfo-Manuals.html#Texinfo-Manuals" rel="previous" title="Texinfo Manuals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Man-Page-Generation"></a>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-Docs.html#Miscellaneous-Docs" accesskey="n" rel="next">Miscellaneous Docs</a>, Previous: <a href="Texinfo-Manuals.html#Texinfo-Manuals" accesskey="p" rel="previous">Texinfo Manuals</a>, Up: <a href="Documentation.html#Documentation" accesskey="u" rel="up">Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Man-Page-Generation-1"></a>
+<h4 class="subsubsection">6.3.7.2 Man Page Generation</h4>
+
+<p>Because of user demand, in addition to full Texinfo manuals, man pages
+are provided which contain extracts from those manuals. These man
+pages are generated from the Texinfo manuals using
+<samp>contrib/texi2pod.pl</samp> and <code>pod2man</code>. (The man page for
+<code>g++</code>, <samp>cp/g++.1</samp>, just contains a &lsquo;<samp>.so</samp>&rsquo; reference
+to <samp>gcc.1</samp>, but all the other man pages are generated from
+Texinfo manuals.)
+</p>
+<p>Because many systems may not have the necessary tools installed to
+generate the man pages, they are only generated if the
+<samp>configure</samp> script detects that recent enough tools are
+installed, and the Makefiles allow generating man pages to fail
+without aborting the build. Man pages are also included in release
+distributions. They are generated in the source directory.
+</p>
+<p>Magic comments in Texinfo files starting &lsquo;<samp>@c man</samp>&rsquo; control what
+parts of a Texinfo file go into a man page. Only a subset of Texinfo
+is supported by <samp>texi2pod.pl</samp>, and it may be necessary to add
+support for more Texinfo features to this script when generating new
+man pages. To improve the man page output, some special Texinfo
+macros are provided in <samp>doc/include/gcc-common.texi</samp> which
+<samp>texi2pod.pl</samp> understands:
+</p>
+<dl compact="compact">
+<dt><code>@gcctabopt</code></dt>
+<dd><p>Use in the form &lsquo;<samp>@table @gcctabopt</samp>&rsquo; for tables of options,
+where for printed output the effect of &lsquo;<samp>@code</samp>&rsquo; is better than
+that of &lsquo;<samp>@option</samp>&rsquo; but for man page output a different effect is
+wanted.
+</p></dd>
+<dt><code>@gccoptlist</code></dt>
+<dd><p>Use for summary lists of options in manuals.
+</p></dd>
+</dl>
+
+<p>FIXME: describe the <samp>texi2pod.pl</samp> input language and magic
+comments in more detail.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Manipulating-GIMPLE-statements.html b/share/doc/gccint/Manipulating-GIMPLE-statements.html
new file mode 100644
index 0000000..f4d9d62
--- /dev/null
+++ b/share/doc/gccint/Manipulating-GIMPLE-statements.html
@@ -0,0 +1,291 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Manipulating GIMPLE statements</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Manipulating GIMPLE statements">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Manipulating GIMPLE statements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Tuple-specific-accessors.html#Tuple-specific-accessors" rel="next" title="Tuple specific accessors">
+<link href="Logical-Operators.html#Logical-Operators" rel="previous" title="Logical Operators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Manipulating-GIMPLE-statements"></a>
+<div class="header">
+<p>
+Next: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="n" rel="next">Tuple specific accessors</a>, Previous: <a href="Operands.html#Operands" accesskey="p" rel="previous">Operands</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Manipulating-GIMPLE-statements-1"></a>
+<h3 class="section">12.7 Manipulating GIMPLE statements</h3>
+<a name="index-Manipulating-GIMPLE-statements"></a>
+
+<p>This section documents all the functions available to handle each
+of the GIMPLE instructions.
+</p>
+<a name="Common-accessors"></a>
+<h4 class="subsection">12.7.1 Common accessors</h4>
+<p>The following are common accessors for gimple statements.
+</p>
+<dl>
+<dt><a name="index-gimple_005fcode"></a>GIMPLE function: <em>enum gimple_code</em> <strong>gimple_code</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the code for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fbb"></a>GIMPLE function: <em>basic_block</em> <strong>gimple_bb</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the basic block to which statement <code>G</code> belongs to.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fblock"></a>GIMPLE function: <em>tree</em> <strong>gimple_block</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the lexical scope block holding statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fexpr_005fcode"></a>GIMPLE function: <em>enum tree_code</em> <strong>gimple_expr_code</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return the tree code for the expression computed by <code>STMT</code>. This
+is only meaningful for <code>GIMPLE_CALL</code>, <code>GIMPLE_ASSIGN</code> and
+<code>GIMPLE_COND</code>. If <code>STMT</code> is <code>GIMPLE_CALL</code>, it will return <code>CALL_EXPR</code>.
+For <code>GIMPLE_COND</code>, it returns the code of the comparison predicate.
+For <code>GIMPLE_ASSIGN</code> it returns the code of the operation performed
+by the <code>RHS</code> of the assignment.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fblock"></a>GIMPLE function: <em>void</em> <strong>gimple_set_block</strong> <em>(gimple g, tree block)</em></dt>
+<dd><p>Set the lexical scope block of <code>G</code> to <code>BLOCK</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005flocus"></a>GIMPLE function: <em>location_t</em> <strong>gimple_locus</strong> <em>(gimple g)</em></dt>
+<dd><p>Return locus information for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005flocus"></a>GIMPLE function: <em>void</em> <strong>gimple_set_locus</strong> <em>(gimple g, location_t locus)</em></dt>
+<dd><p>Set locus information for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005flocus_005fempty_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_locus_empty_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if <code>G</code> does not have locus information.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fno_005fwarning_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_no_warning_p</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return true if no warnings should be emitted for statement <code>STMT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fvisited"></a>GIMPLE function: <em>void</em> <strong>gimple_set_visited</strong> <em>(gimple stmt, bool visited_p)</em></dt>
+<dd><p>Set the visited status on statement <code>STMT</code> to <code>VISITED_P</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fvisited_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_visited_p</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return the visited status on statement <code>STMT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fplf"></a>GIMPLE function: <em>void</em> <strong>gimple_set_plf</strong> <em>(gimple stmt, enum plf_mask plf, bool val_p)</em></dt>
+<dd><p>Set pass local flag <code>PLF</code> on statement <code>STMT</code> to <code>VAL_P</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fplf"></a>GIMPLE function: <em>unsigned int</em> <strong>gimple_plf</strong> <em>(gimple stmt, enum plf_mask plf)</em></dt>
+<dd><p>Return the value of pass local flag <code>PLF</code> on statement <code>STMT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fhas_005fops"></a>GIMPLE function: <em>bool</em> <strong>gimple_has_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if statement <code>G</code> has register or memory operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fhas_005fmem_005fops"></a>GIMPLE function: <em>bool</em> <strong>gimple_has_mem_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if statement <code>G</code> has memory operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fnum_005fops-1"></a>GIMPLE function: <em>unsigned</em> <strong>gimple_num_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the number of operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fops-1"></a>GIMPLE function: <em>tree *</em> <strong>gimple_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the array of operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fop-1"></a>GIMPLE function: <em>tree</em> <strong>gimple_op</strong> <em>(gimple g, unsigned i)</em></dt>
+<dd><p>Return operand <code>I</code> for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fop_005fptr"></a>GIMPLE function: <em>tree *</em> <strong>gimple_op_ptr</strong> <em>(gimple g, unsigned i)</em></dt>
+<dd><p>Return a pointer to operand <code>I</code> for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fop"></a>GIMPLE function: <em>void</em> <strong>gimple_set_op</strong> <em>(gimple g, unsigned i, tree op)</em></dt>
+<dd><p>Set operand <code>I</code> of statement <code>G</code> to <code>OP</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005faddresses_005ftaken"></a>GIMPLE function: <em>bitmap</em> <strong>gimple_addresses_taken</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return the set of symbols that have had their address taken by
+<code>STMT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fdef_005fops"></a>GIMPLE function: <em>struct def_optype_d *</em> <strong>gimple_def_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of <code>DEF</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fdef_005fops"></a>GIMPLE function: <em>void</em> <strong>gimple_set_def_ops</strong> <em>(gimple g, struct def_optype_d *def)</em></dt>
+<dd><p>Set <code>DEF</code> to be the set of <code>DEF</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fuse_005fops"></a>GIMPLE function: <em>struct use_optype_d *</em> <strong>gimple_use_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of <code>USE</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fuse_005fops"></a>GIMPLE function: <em>void</em> <strong>gimple_set_use_ops</strong> <em>(gimple g, struct use_optype_d *use)</em></dt>
+<dd><p>Set <code>USE</code> to be the set of <code>USE</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fvuse_005fops"></a>GIMPLE function: <em>struct voptype_d *</em> <strong>gimple_vuse_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of <code>VUSE</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fvuse_005fops"></a>GIMPLE function: <em>void</em> <strong>gimple_set_vuse_ops</strong> <em>(gimple g, struct voptype_d *ops)</em></dt>
+<dd><p>Set <code>OPS</code> to be the set of <code>VUSE</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fvdef_005fops"></a>GIMPLE function: <em>struct voptype_d *</em> <strong>gimple_vdef_ops</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of <code>VDEF</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fvdef_005fops"></a>GIMPLE function: <em>void</em> <strong>gimple_set_vdef_ops</strong> <em>(gimple g, struct voptype_d *ops)</em></dt>
+<dd><p>Set <code>OPS</code> to be the set of <code>VDEF</code> operands for statement <code>G</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005floaded_005fsyms"></a>GIMPLE function: <em>bitmap</em> <strong>gimple_loaded_syms</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of symbols loaded by statement <code>G</code>. Each element of
+the set is the <code>DECL_UID</code> of the corresponding symbol.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fstored_005fsyms"></a>GIMPLE function: <em>bitmap</em> <strong>gimple_stored_syms</strong> <em>(gimple g)</em></dt>
+<dd><p>Return the set of symbols stored by statement <code>G</code>. Each element of
+the set is the <code>DECL_UID</code> of the corresponding symbol.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fmodified_005fp"></a>GIMPLE function: <em>bool</em> <strong>gimple_modified_p</strong> <em>(gimple g)</em></dt>
+<dd><p>Return true if statement <code>G</code> has operands and the modified field
+has been set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fhas_005fvolatile_005fops"></a>GIMPLE function: <em>bool</em> <strong>gimple_has_volatile_ops</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return true if statement <code>STMT</code> contains volatile operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fset_005fhas_005fvolatile_005fops"></a>GIMPLE function: <em>void</em> <strong>gimple_set_has_volatile_ops</strong> <em>(gimple stmt, bool volatilep)</em></dt>
+<dd><p>Return true if statement <code>STMT</code> contains volatile operands.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-update_005fstmt"></a>GIMPLE function: <em>void</em> <strong>update_stmt</strong> <em>(gimple s)</em></dt>
+<dd><p>Mark statement <code>S</code> as modified, and update it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-update_005fstmt_005fif_005fmodified"></a>GIMPLE function: <em>void</em> <strong>update_stmt_if_modified</strong> <em>(gimple s)</em></dt>
+<dd><p>Update statement <code>S</code> if it has been marked modified.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fcopy"></a>GIMPLE function: <em>gimple</em> <strong>gimple_copy</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Return a deep copy of statement <code>STMT</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tuple-specific-accessors.html#Tuple-specific-accessors" accesskey="n" rel="next">Tuple specific accessors</a>, Previous: <a href="Operands.html#Operands" accesskey="p" rel="previous">Operands</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Match-and-Simplify.html b/share/doc/gccint/Match-and-Simplify.html
new file mode 100644
index 0000000..0fef338
--- /dev/null
+++ b/share/doc/gccint/Match-and-Simplify.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Match and Simplify</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Match and Simplify">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Match and Simplify">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="GIMPLE-API.html#GIMPLE-API" rel="next" title="GIMPLE API">
+<link href="Internal-flags.html#Internal-flags" rel="previous" title="Internal flags">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Match-and-Simplify"></a>
+<div class="header">
+<p>
+Next: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="n" rel="next">Static Analyzer</a>, Previous: <a href="LTO.html#LTO" accesskey="p" rel="previous">LTO</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Match-and-Simplify-1"></a>
+<h2 class="chapter">26 Match and Simplify</h2>
+<a name="index-Match-and-Simplify"></a>
+
+<p>The GIMPLE and GENERIC pattern matching project match-and-simplify
+tries to address several issues.
+</p>
+<ol>
+<li> unify expression simplifications currently spread and duplicated
+ over separate files like fold-const.cc, gimple-fold.cc and builtins.cc
+</li><li> allow for a cheap way to implement building and simplifying
+ non-trivial GIMPLE expressions, avoiding the need to go through
+ building and simplifying GENERIC via fold_buildN and then
+ gimplifying via force_gimple_operand
+</li></ol>
+
+<p>To address these the project introduces a simple domain-specific language
+to write expression simplifications from which code targeting GIMPLE
+and GENERIC is auto-generated. The GENERIC variant follows the
+fold_buildN API while for the GIMPLE variant and to address 2) new
+APIs are introduced.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE-API.html#GIMPLE-API" accesskey="1">GIMPLE API</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-Language.html#The-Language" accesskey="2">The Language</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Memory-model.html b/share/doc/gccint/Memory-model.html
new file mode 100644
index 0000000..6169ef2
--- /dev/null
+++ b/share/doc/gccint/Memory-model.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Memory model</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Memory model">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Memory model">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-SSA.html#Tree-SSA" rel="up" title="Tree SSA">
+<link href="RTL.html#RTL" rel="next" title="RTL">
+<link href="Alias-analysis.html#Alias-analysis" rel="previous" title="Alias analysis">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Memory-model"></a>
+<div class="header">
+<p>
+Previous: <a href="Alias-analysis.html#Alias-analysis" accesskey="p" rel="previous">Alias analysis</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Memory-model-1"></a>
+<h3 class="section">13.5 Memory model</h3>
+<a name="index-memory-model"></a>
+
+<p>The memory model used by the middle-end models that of the C/C++
+languages. The middle-end has the notion of an effective type
+of a memory region which is used for type-based alias analysis.
+</p>
+<p>The following is a refinement of ISO C99 6.5/6, clarifying the block copy case
+to follow common sense and extending the concept of a dynamic effective
+type to objects with a declared type as required for C++.
+</p>
+<div class="smallexample">
+<pre class="smallexample">The effective type of an object for an access to its stored value is
+the declared type of the object or the effective type determined by
+a previous store to it. If a value is stored into an object through
+an lvalue having a type that is not a character type, then the
+type of the lvalue becomes the effective type of the object for that
+access and for subsequent accesses that do not modify the stored value.
+If a value is copied into an object using <code>memcpy</code> or <code>memmove</code>,
+or is copied as an array of character type, then the effective type
+of the modified object for that access and for subsequent accesses that
+do not modify the value is undetermined. For all other accesses to an
+object, the effective type of the object is simply the type of the
+lvalue used for the access.
+</pre></div>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Misc.html b/share/doc/gccint/Misc.html
new file mode 100644
index 0000000..0e829b2
--- /dev/null
+++ b/share/doc/gccint/Misc.html
@@ -0,0 +1,1628 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Misc</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Misc">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Misc">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Host-Config.html#Host-Config" rel="next" title="Host Config">
+<link href="Named-Address-Spaces.html#Named-Address-Spaces" rel="previous" title="Named Address Spaces">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Misc"></a>
+<div class="header">
+<p>
+Previous: <a href="Named-Address-Spaces.html#Named-Address-Spaces" accesskey="p" rel="previous">Named Address Spaces</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Miscellaneous-Parameters"></a>
+<h3 class="section">18.31 Miscellaneous Parameters</h3>
+<a name="index-parameters_002c-miscellaneous"></a>
+
+<p>Here are several miscellaneous parameters.
+</p>
+<dl>
+<dt><a name="index-HAS_005fLONG_005fCOND_005fBRANCH"></a>Macro: <strong>HAS_LONG_COND_BRANCH</strong></dt>
+<dd><p>Define this boolean macro to indicate whether or not your architecture
+has conditional branches that can span all of memory. It is used in
+conjunction with an optimization that partitions hot and cold basic
+blocks into separate sections of the executable. If this macro is
+set to false, gcc will convert any conditional branches that attempt
+to cross between sections into unconditional branches or indirect jumps.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HAS_005fLONG_005fUNCOND_005fBRANCH"></a>Macro: <strong>HAS_LONG_UNCOND_BRANCH</strong></dt>
+<dd><p>Define this boolean macro to indicate whether or not your architecture
+has unconditional branches that can span all of memory. It is used in
+conjunction with an optimization that partitions hot and cold basic
+blocks into separate sections of the executable. If this macro is
+set to false, gcc will convert any unconditional branches that attempt
+to cross between sections into indirect jumps.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CASE_005fVECTOR_005fMODE"></a>Macro: <strong>CASE_VECTOR_MODE</strong></dt>
+<dd><p>An alias for a machine mode name. This is the machine mode that
+elements of a jump-table should have.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CASE_005fVECTOR_005fSHORTEN_005fMODE"></a>Macro: <strong>CASE_VECTOR_SHORTEN_MODE</strong> <em>(<var>min_offset</var>, <var>max_offset</var>, <var>body</var>)</em></dt>
+<dd><p>Optional: return the preferred mode for an <code>addr_diff_vec</code>
+when the minimum and maximum offset are known. If you define this,
+it enables extra code in branch shortening to deal with <code>addr_diff_vec</code>.
+To make this work, you also have to define <code>INSN_ALIGN</code> and
+make the alignment for <code>addr_diff_vec</code> explicit.
+The <var>body</var> argument is provided so that the offset_unsigned and scale
+flags can be updated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CASE_005fVECTOR_005fPC_005fRELATIVE"></a>Macro: <strong>CASE_VECTOR_PC_RELATIVE</strong></dt>
+<dd><p>Define this macro to be a C expression to indicate when jump-tables
+should contain relative addresses. You need not define this macro if
+jump-tables never contain relative addresses, or jump-tables should
+contain relative addresses only when <samp>-fPIC</samp> or <samp>-fPIC</samp>
+is in effect.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCASE_005fVALUES_005fTHRESHOLD"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_CASE_VALUES_THRESHOLD</strong> <em>(void)</em></dt>
+<dd><p>This function return the smallest number of different values for which it
+is best to use a jump-table instead of a tree of conditional branches.
+The default is four for machines with a <code>casesi</code> instruction and
+five otherwise. This is best for most machines.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WORD_005fREGISTER_005fOPERATIONS"></a>Macro: <strong>WORD_REGISTER_OPERATIONS</strong></dt>
+<dd><p>Define this macro to 1 if operations between registers with integral mode
+smaller than a word are always performed on the entire register. To be
+more explicit, if you start with a pair of <code>word_mode</code> registers with
+known values and you do a subword, for example <code>QImode</code>, addition on
+the low part of the registers, then the compiler may consider that the
+result has a known value in <code>word_mode</code> too if the macro is defined
+to 1. Most RISC machines have this property and most CISC machines do not.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMIN_005fARITHMETIC_005fPRECISION"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_MIN_ARITHMETIC_PRECISION</strong> <em>(void)</em></dt>
+<dd><p>On some RISC architectures with 64-bit registers, the processor also
+maintains 32-bit condition codes that make it possible to do real 32-bit
+arithmetic, although the operations are performed on the full registers.
+</p>
+<p>On such architectures, defining this hook to 32 tells the compiler to try
+using 32-bit arithmetical operations setting the condition codes instead
+of doing full 64-bit arithmetic.
+</p>
+<p>More generally, define this hook on RISC architectures if you want the
+compiler to try using arithmetical operations setting the condition codes
+with a precision lower than the word precision.
+</p>
+<p>You need not define this hook if <code>WORD_REGISTER_OPERATIONS</code> is not
+defined to 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOAD_005fEXTEND_005fOP"></a>Macro: <strong>LOAD_EXTEND_OP</strong> <em>(<var>mem_mode</var>)</em></dt>
+<dd><p>Define this macro to be a C expression indicating when insns that read
+memory in <var>mem_mode</var>, an integral mode narrower than a word, set the
+bits outside of <var>mem_mode</var> to be either the sign-extension or the
+zero-extension of the data read. Return <code>SIGN_EXTEND</code> for values
+of <var>mem_mode</var> for which the
+insn sign-extends, <code>ZERO_EXTEND</code> for which it zero-extends, and
+<code>UNKNOWN</code> for other modes.
+</p>
+<p>This macro is not called with <var>mem_mode</var> non-integral or with a width
+greater than or equal to <code>BITS_PER_WORD</code>, so you may return any
+value in this case. Do not define this macro if it would always return
+<code>UNKNOWN</code>. On machines where this macro is defined, you will normally
+define it as the constant <code>SIGN_EXTEND</code> or <code>ZERO_EXTEND</code>.
+</p>
+<p>You may return a non-<code>UNKNOWN</code> value even if for some hard registers
+the sign extension is not performed, if for the <code>REGNO_REG_CLASS</code>
+of these hard registers <code>TARGET_CAN_CHANGE_MODE_CLASS</code> returns false
+when the <var>from</var> mode is <var>mem_mode</var> and the <var>to</var> mode is any
+integral mode larger than this but not larger than <code>word_mode</code>.
+</p>
+<p>You must return <code>UNKNOWN</code> if for some hard registers that allow this
+mode, <code>TARGET_CAN_CHANGE_MODE_CLASS</code> says that they cannot change to
+<code>word_mode</code>, but that they can change to another integral mode that
+is larger then <var>mem_mode</var> but still smaller than <code>word_mode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHORT_005fIMMEDIATES_005fSIGN_005fEXTEND"></a>Macro: <strong>SHORT_IMMEDIATES_SIGN_EXTEND</strong></dt>
+<dd><p>Define this macro to 1 if loading short immediate values into registers sign
+extends.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMIN_005fDIVISIONS_005fFOR_005fRECIP_005fMUL"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_MIN_DIVISIONS_FOR_RECIP_MUL</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>When <samp>-ffast-math</samp> is in effect, GCC tries to optimize
+divisions by the same divisor, by turning them into multiplications by
+the reciprocal. This target hook specifies the minimum number of divisions
+that should be there for GCC to perform the optimization for a variable
+of mode <var>mode</var>. The default implementation returns 3 if the machine
+has an instruction for the division, and 2 if it does not.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MOVE_005fMAX"></a>Macro: <strong>MOVE_MAX</strong></dt>
+<dd><p>The maximum number of bytes that a single instruction can move quickly
+between memory and registers or between two memory locations.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fMOVE_005fMAX"></a>Macro: <strong>MAX_MOVE_MAX</strong></dt>
+<dd><p>The maximum number of bytes that a single instruction can move quickly
+between memory and registers or between two memory locations. If this
+is undefined, the default is <code>MOVE_MAX</code>. Otherwise, it is the
+constant value that is the largest value that <code>MOVE_MAX</code> can have
+at run-time.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHIFT_005fCOUNT_005fTRUNCATED"></a>Macro: <strong>SHIFT_COUNT_TRUNCATED</strong></dt>
+<dd><p>A C expression that is nonzero if on this machine the number of bits
+actually used for the count of a shift operation is equal to the number
+of bits needed to represent the size of the object being shifted. When
+this macro is nonzero, the compiler will assume that it is safe to omit
+a sign-extend, zero-extend, and certain bitwise &lsquo;and&rsquo; instructions that
+truncates the count of a shift operation. On machines that have
+instructions that act on bit-fields at variable positions, which may
+include &lsquo;bit test&rsquo; instructions, a nonzero <code>SHIFT_COUNT_TRUNCATED</code>
+also enables deletion of truncations of the values that serve as
+arguments to bit-field instructions.
+</p>
+<p>If both types of instructions truncate the count (for shifts) and
+position (for bit-field operations), or if no variable-position bit-field
+instructions exist, you should define this macro.
+</p>
+<p>However, on some machines, such as the 80386 and the 680x0, truncation
+only applies to shift operations and not the (real or pretended)
+bit-field operations. Define <code>SHIFT_COUNT_TRUNCATED</code> to be zero on
+such machines. Instead, add patterns to the <samp>md</samp> file that include
+the implied truncation of the shift instructions.
+</p>
+<p>You need not define this macro if it would always have the value of zero.
+</p></dd></dl>
+
+<a name="TARGET_005fSHIFT_005fTRUNCATION_005fMASK"></a><dl>
+<dt><a name="index-TARGET_005fSHIFT_005fTRUNCATION_005fMASK"></a>Target Hook: <em>unsigned HOST_WIDE_INT</em> <strong>TARGET_SHIFT_TRUNCATION_MASK</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>This function describes how the standard shift patterns for <var>mode</var>
+deal with shifts by negative amounts or by more than the width of the mode.
+See <a href="Standard-Names.html#shift-patterns">shift patterns</a>.
+</p>
+<p>On many machines, the shift patterns will apply a mask <var>m</var> to the
+shift count, meaning that a fixed-width shift of <var>x</var> by <var>y</var> is
+equivalent to an arbitrary-width shift of <var>x</var> by <var>y &amp; m</var>. If
+this is true for mode <var>mode</var>, the function should return <var>m</var>,
+otherwise it should return 0. A return value of 0 indicates that no
+particular behavior is guaranteed.
+</p>
+<p>Note that, unlike <code>SHIFT_COUNT_TRUNCATED</code>, this function does
+<em>not</em> apply to general shift rtxes; it applies only to instructions
+that are generated by the named shift patterns.
+</p>
+<p>The default implementation of this function returns
+<code>GET_MODE_BITSIZE (<var>mode</var>) - 1</code> if <code>SHIFT_COUNT_TRUNCATED</code>
+and 0 otherwise. This definition is always safe, but if
+<code>SHIFT_COUNT_TRUNCATED</code> is false, and some shift patterns
+nevertheless truncate the shift count, you may get better code
+by overriding it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fTRULY_005fNOOP_005fTRUNCATION"></a>Target Hook: <em>bool</em> <strong>TARGET_TRULY_NOOP_TRUNCATION</strong> <em>(poly_uint64 <var>outprec</var>, poly_uint64 <var>inprec</var>)</em></dt>
+<dd><p>This hook returns true if it is safe to &ldquo;convert&rdquo; a value of
+<var>inprec</var> bits to one of <var>outprec</var> bits (where <var>outprec</var> is
+smaller than <var>inprec</var>) by merely operating on it as if it had only
+<var>outprec</var> bits. The default returns true unconditionally, which
+is correct for most machines. When <code>TARGET_TRULY_NOOP_TRUNCATION</code>
+returns false, the machine description should provide a <code>trunc</code>
+optab to specify the RTL that performs the required truncation.
+</p>
+<p>If <code>TARGET_MODES_TIEABLE_P</code> returns false for a pair of modes,
+suboptimal code can result if this hook returns true for the corresponding
+mode sizes. Making this hook return false in such cases may improve things.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fREP_005fEXTENDED"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_REP_EXTENDED</strong> <em>(scalar_int_mode <var>mode</var>, scalar_int_mode <var>rep_mode</var>)</em></dt>
+<dd><p>The representation of an integral mode can be such that the values
+are always extended to a wider integral mode. Return
+<code>SIGN_EXTEND</code> if values of <var>mode</var> are represented in
+sign-extended form to <var>rep_mode</var>. Return <code>UNKNOWN</code>
+otherwise. (Currently, none of the targets use zero-extended
+representation this way so unlike <code>LOAD_EXTEND_OP</code>,
+<code>TARGET_MODE_REP_EXTENDED</code> is expected to return either
+<code>SIGN_EXTEND</code> or <code>UNKNOWN</code>. Also no target extends
+<var>mode</var> to <var>rep_mode</var> so that <var>rep_mode</var> is not the next
+widest integral mode and currently we take advantage of this fact.)
+</p>
+<p>Similarly to <code>LOAD_EXTEND_OP</code> you may return a non-<code>UNKNOWN</code>
+value even if the extension is not performed on certain hard registers
+as long as for the <code>REGNO_REG_CLASS</code> of these hard registers
+<code>TARGET_CAN_CHANGE_MODE_CLASS</code> returns false.
+</p>
+<p>Note that <code>TARGET_MODE_REP_EXTENDED</code> and <code>LOAD_EXTEND_OP</code>
+describe two related properties. If you define
+<code>TARGET_MODE_REP_EXTENDED (mode, word_mode)</code> you probably also want
+to define <code>LOAD_EXTEND_OP (mode)</code> to return the same type of
+extension.
+</p>
+<p>In order to enforce the representation of <code>mode</code>,
+<code>TARGET_TRULY_NOOP_TRUNCATION</code> should return false when truncating to
+<code>mode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSETJMP_005fPRESERVES_005fNONVOLATILE_005fREGS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P</strong> <em>(void)</em></dt>
+<dd><p>On some targets, it is assumed that the compiler will spill all pseudos
+ that are live across a call to <code>setjmp</code>, while other targets treat
+ <code>setjmp</code> calls as normal function calls.
+</p>
+<p>This hook returns false if <code>setjmp</code> calls do not preserve all
+ non-volatile registers so that gcc that must spill all pseudos that are
+ live across <code>setjmp</code> calls. Define this to return true if the
+ target does not need to spill all pseudos live across <code>setjmp</code> calls.
+ The default implementation conservatively assumes all pseudos must be
+ spilled across <code>setjmp</code> calls.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STORE_005fFLAG_005fVALUE"></a>Macro: <strong>STORE_FLAG_VALUE</strong></dt>
+<dd><p>A C expression describing the value returned by a comparison operator
+with an integral mode and stored by a store-flag instruction
+(&lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo;) when the condition is true. This description must
+apply to <em>all</em> the &lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo; patterns and all the
+comparison operators whose results have a <code>MODE_INT</code> mode.
+</p>
+<p>A value of 1 or -1 means that the instruction implementing the
+comparison operator returns exactly 1 or -1 when the comparison is true
+and 0 when the comparison is false. Otherwise, the value indicates
+which bits of the result are guaranteed to be 1 when the comparison is
+true. This value is interpreted in the mode of the comparison
+operation, which is given by the mode of the first operand in the
+&lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo; pattern. Either the low bit or the sign bit of
+<code>STORE_FLAG_VALUE</code> be on. Presently, only those bits are used by
+the compiler.
+</p>
+<p>If <code>STORE_FLAG_VALUE</code> is neither 1 or -1, the compiler will
+generate code that depends only on the specified bits. It can also
+replace comparison operators with equivalent operations if they cause
+the required bits to be set, even if the remaining bits are undefined.
+For example, on a machine whose comparison operators return an
+<code>SImode</code> value and where <code>STORE_FLAG_VALUE</code> is defined as
+&lsquo;<samp>0x80000000</samp>&rsquo;, saying that just the sign bit is relevant, the
+expression
+</p>
+<div class="smallexample">
+<pre class="smallexample">(ne:SI (and:SI <var>x</var> (const_int <var>power-of-2</var>)) (const_int 0))
+</pre></div>
+
+<p>can be converted to
+</p>
+<div class="smallexample">
+<pre class="smallexample">(ashift:SI <var>x</var> (const_int <var>n</var>))
+</pre></div>
+
+<p>where <var>n</var> is the appropriate shift count to move the bit being
+tested into the sign bit.
+</p>
+<p>There is no way to describe a machine that always sets the low-order bit
+for a true value, but does not guarantee the value of any other bits,
+but we do not know of any machine that has such an instruction. If you
+are trying to port GCC to such a machine, include an instruction to
+perform a logical-and of the result with 1 in the pattern for the
+comparison operators and let us know at <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a>.
+</p>
+<p>Often, a machine will have multiple instructions that obtain a value
+from a comparison (or the condition codes). Here are rules to guide the
+choice of value for <code>STORE_FLAG_VALUE</code>, and hence the instructions
+to be used:
+</p>
+<ul>
+<li> Use the shortest sequence that yields a valid definition for
+<code>STORE_FLAG_VALUE</code>. It is more efficient for the compiler to
+&ldquo;normalize&rdquo; the value (convert it to, e.g., 1 or 0) than for the
+comparison operators to do so because there may be opportunities to
+combine the normalization with other operations.
+
+</li><li> For equal-length sequences, use a value of 1 or -1, with -1 being
+slightly preferred on machines with expensive jumps and 1 preferred on
+other machines.
+
+</li><li> As a second choice, choose a value of &lsquo;<samp>0x80000001</samp>&rsquo; if instructions
+exist that set both the sign and low-order bits but do not define the
+others.
+
+</li><li> Otherwise, use a value of &lsquo;<samp>0x80000000</samp>&rsquo;.
+</li></ul>
+
+<p>Many machines can produce both the value chosen for
+<code>STORE_FLAG_VALUE</code> and its negation in the same number of
+instructions. On those machines, you should also define a pattern for
+those cases, e.g., one matching
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set <var>A</var> (neg:<var>m</var> (ne:<var>m</var> <var>B</var> <var>C</var>)))
+</pre></div>
+
+<p>Some machines can also perform <code>and</code> or <code>plus</code> operations on
+condition code values with less instructions than the corresponding
+&lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo; insn followed by <code>and</code> or <code>plus</code>. On those
+machines, define the appropriate patterns. Use the names <code>incscc</code>
+and <code>decscc</code>, respectively, for the patterns which perform
+<code>plus</code> or <code>minus</code> operations on condition code values. See
+<samp>rs6000.md</samp> for some examples. The GNU Superoptimizer can be used to
+find such instruction sequences on other machines.
+</p>
+<p>If this macro is not defined, the default value, 1, is used. You need
+not define <code>STORE_FLAG_VALUE</code> if the machine has no store-flag
+instructions, or if the value generated by these instructions is 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FLOAT_005fSTORE_005fFLAG_005fVALUE"></a>Macro: <strong>FLOAT_STORE_FLAG_VALUE</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression that gives a nonzero <code>REAL_VALUE_TYPE</code> value that is
+returned when comparison operators with floating-point results are true.
+Define this macro on machines that have comparison operations that return
+floating-point values. If there are no such operations, do not define
+this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-VECTOR_005fSTORE_005fFLAG_005fVALUE"></a>Macro: <strong>VECTOR_STORE_FLAG_VALUE</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression that gives an rtx representing the nonzero true element
+for vector comparisons. The returned rtx should be valid for the inner
+mode of <var>mode</var> which is guaranteed to be a vector mode. Define
+this macro on machines that have vector comparison operations that
+return a vector result. If there are no such operations, do not define
+this macro. Typically, this macro is defined as <code>const1_rtx</code> or
+<code>constm1_rtx</code>. This macro may return <code>NULL_RTX</code> to prevent
+the compiler optimizing such vector comparison operations for the
+given mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CLZ_005fDEFINED_005fVALUE_005fAT_005fZERO"></a>Macro: <strong>CLZ_DEFINED_VALUE_AT_ZERO</strong> <em>(<var>mode</var>, <var>value</var>)</em></dt>
+<dt><a name="index-CTZ_005fDEFINED_005fVALUE_005fAT_005fZERO"></a>Macro: <strong>CTZ_DEFINED_VALUE_AT_ZERO</strong> <em>(<var>mode</var>, <var>value</var>)</em></dt>
+<dd><p>A C expression that indicates whether the architecture defines a value
+for <code>clz</code> or <code>ctz</code> with a zero operand.
+A result of <code>0</code> indicates the value is undefined.
+If the value is defined for only the RTL expression, the macro should
+evaluate to <code>1</code>; if the value applies also to the corresponding optab
+entry (which is normally the case if it expands directly into
+the corresponding RTL), then the macro should evaluate to <code>2</code>.
+In the cases where the value is defined, <var>value</var> should be set to
+this value.
+</p>
+<p>If this macro is not defined, the value of <code>clz</code> or
+<code>ctz</code> at zero is assumed to be undefined.
+</p>
+<p>This macro must be defined if the target&rsquo;s expansion for <code>ffs</code>
+relies on a particular value to get correct results. Otherwise it
+is not necessary, though it may be used to optimize some corner cases, and
+to provide a default expansion for the <code>ffs</code> optab.
+</p>
+<p>Note that regardless of this macro the &ldquo;definedness&rdquo; of <code>clz</code>
+and <code>ctz</code> at zero do <em>not</em> extend to the builtin functions
+visible to the user. Thus one may be free to adjust the value at will
+to match the target expansion of these operations without fear of
+breaking the API.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-Pmode"></a>Macro: <strong>Pmode</strong></dt>
+<dd><p>An alias for the machine mode for pointers. On most machines, define
+this to be the integer mode corresponding to the width of a hardware
+pointer; <code>SImode</code> on 32-bit machine or <code>DImode</code> on 64-bit machines.
+On some machines you must define this to be one of the partial integer
+modes, such as <code>PSImode</code>.
+</p>
+<p>The width of <code>Pmode</code> must be at least as large as the value of
+<code>POINTER_SIZE</code>. If it is not equal, you must define the macro
+<code>POINTERS_EXTEND_UNSIGNED</code> to specify how pointers are extended
+to <code>Pmode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FUNCTION_005fMODE"></a>Macro: <strong>FUNCTION_MODE</strong></dt>
+<dd><p>An alias for the machine mode used for memory references to functions
+being called, in <code>call</code> RTL expressions. On most CISC machines,
+where an instruction can begin at any byte address, this should be
+<code>QImode</code>. On most RISC machines, where all instructions have fixed
+size and alignment, this should be a mode with the same size and alignment
+as the machine instruction words - typically <code>SImode</code> or <code>HImode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STDC_005f0_005fIN_005fSYSTEM_005fHEADERS"></a>Macro: <strong>STDC_0_IN_SYSTEM_HEADERS</strong></dt>
+<dd><p>In normal operation, the preprocessor expands <code>__STDC__</code> to the
+constant 1, to signify that GCC conforms to ISO Standard C. On some
+hosts, like Solaris, the system compiler uses a different convention,
+where <code>__STDC__</code> is normally 0, but is 1 if the user specifies
+strict conformance to the C Standard.
+</p>
+<p>Defining <code>STDC_0_IN_SYSTEM_HEADERS</code> makes GNU CPP follows the host
+convention when processing system header files, but when processing user
+files <code>__STDC__</code> will always expand to 1.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fC_005fPREINCLUDE"></a>C Target Hook: <em>const char *</em> <strong>TARGET_C_PREINCLUDE</strong> <em>(void)</em></dt>
+<dd><p>Define this hook to return the name of a header file to be included at
+the start of all compilations, as if it had been included with
+<code>#include &lt;<var>file</var>&gt;</code>. If this hook returns <code>NULL</code>, or is
+not defined, or the header is not found, or if the user specifies
+<samp>-ffreestanding</samp> or <samp>-nostdinc</samp>, no header is included.
+</p>
+<p>This hook can be used together with a header provided by the system C
+library to implement ISO C requirements for certain macros to be
+predefined that describe properties of the whole implementation rather
+than just the compiler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCXX_005fIMPLICIT_005fEXTERN_005fC"></a>C Target Hook: <em>bool</em> <strong>TARGET_CXX_IMPLICIT_EXTERN_C</strong> <em>(const char*<var></var>)</em></dt>
+<dd><p>Define this hook to add target-specific C++ implicit extern C functions.
+If this function returns true for the name of a file-scope function, that
+function implicitly gets extern &quot;C&quot; linkage rather than whatever language
+linkage the declaration would normally have. An example of such function
+is WinMain on Win32 targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SYSTEM_005fIMPLICIT_005fEXTERN_005fC"></a>Macro: <strong>SYSTEM_IMPLICIT_EXTERN_C</strong></dt>
+<dd><p>Define this macro if the system header files do not support C++.
+This macro handles system header files by pretending that system
+header files are enclosed in &lsquo;<samp>extern &quot;C&quot; {&hellip;}</samp>&rsquo;.
+</p></dd></dl>
+
+<a name="index-_0023pragma"></a>
+<a name="index-pragma"></a>
+<dl>
+<dt><a name="index-REGISTER_005fTARGET_005fPRAGMAS"></a>Macro: <strong>REGISTER_TARGET_PRAGMAS</strong> <em>()</em></dt>
+<dd><p>Define this macro if you want to implement any target-specific pragmas.
+If defined, it is a C expression which makes a series of calls to
+<code>c_register_pragma</code> or <code>c_register_pragma_with_expansion</code>
+for each pragma. The macro may also do any
+setup required for the pragmas.
+</p>
+<p>The primary reason to define this macro is to provide compatibility with
+other compilers for the same target. In general, we discourage
+definition of target-specific pragmas for GCC.
+</p>
+<p>If the pragma can be implemented by attributes then you should consider
+defining the target hook &lsquo;<samp>TARGET_INSERT_ATTRIBUTES</samp>&rsquo; as well.
+</p>
+<p>Preprocessor macros that appear on pragma lines are not expanded. All
+&lsquo;<samp>#pragma</samp>&rsquo; directives that do not match any registered pragma are
+silently ignored, unless the user specifies <samp>-Wunknown-pragmas</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-c_005fregister_005fpragma"></a>Function: <em>void</em> <strong>c_register_pragma</strong> <em>(const char *<var>space</var>, const char *<var>name</var>, void (*<var>callback</var>) (struct cpp_reader *))</em></dt>
+<dt><a name="index-c_005fregister_005fpragma_005fwith_005fexpansion"></a>Function: <em>void</em> <strong>c_register_pragma_with_expansion</strong> <em>(const char *<var>space</var>, const char *<var>name</var>, void (*<var>callback</var>) (struct cpp_reader *))</em></dt>
+<dd>
+<p>Each call to <code>c_register_pragma</code> or
+<code>c_register_pragma_with_expansion</code> establishes one pragma. The
+<var>callback</var> routine will be called when the preprocessor encounters a
+pragma of the form
+</p>
+<div class="smallexample">
+<pre class="smallexample">#pragma [<var>space</var>] <var>name</var> &hellip;
+</pre></div>
+
+<p><var>space</var> is the case-sensitive namespace of the pragma, or
+<code>NULL</code> to put the pragma in the global namespace. The callback
+routine receives <var>pfile</var> as its first argument, which can be passed
+on to cpplib&rsquo;s functions if necessary. You can lex tokens after the
+<var>name</var> by calling <code>pragma_lex</code>. Tokens that are not read by the
+callback will be silently ignored. The end of the line is indicated by
+a token of type <code>CPP_EOF</code>. Macro expansion occurs on the
+arguments of pragmas registered with
+<code>c_register_pragma_with_expansion</code> but not on the arguments of
+pragmas registered with <code>c_register_pragma</code>.
+</p>
+<p>Note that the use of <code>pragma_lex</code> is specific to the C and C++
+compilers. It will not work in the Java or Fortran compilers, or any
+other language compilers for that matter. Thus if <code>pragma_lex</code> is going
+to be called from target-specific code, it must only be done so when
+building the C and C++ compilers. This can be done by defining the
+variables <code>c_target_objs</code> and <code>cxx_target_objs</code> in the
+target entry in the <samp>config.gcc</samp> file. These variables should name
+the target-specific, language-specific object file which contains the
+code that uses <code>pragma_lex</code>. Note it will also be necessary to add a
+rule to the makefile fragment pointed to by <code>tmake_file</code> that shows
+how to build this object file.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HANDLE_005fPRAGMA_005fPACK_005fWITH_005fEXPANSION"></a>Macro: <strong>HANDLE_PRAGMA_PACK_WITH_EXPANSION</strong></dt>
+<dd><p>Define this macro if macros should be expanded in the
+arguments of &lsquo;<samp>#pragma pack</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDEFAULT_005fPACK_005fSTRUCT"></a>Macro: <strong>TARGET_DEFAULT_PACK_STRUCT</strong></dt>
+<dd><p>If your target requires a structure packing default other than 0 (meaning
+the machine default), define this macro to the necessary value (in bytes).
+This must be a value that would also be valid to use with
+&lsquo;<samp>#pragma pack()</samp>&rsquo; (that is, a small power of two).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DOLLARS_005fIN_005fIDENTIFIERS"></a>Macro: <strong>DOLLARS_IN_IDENTIFIERS</strong></dt>
+<dd><p>Define this macro to control use of the character &lsquo;<samp>$</samp>&rsquo; in
+identifier names for the C family of languages. 0 means &lsquo;<samp>$</samp>&rsquo; is
+not allowed by default; 1 means it is allowed. 1 is the default;
+there is no need to define this macro in that case.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INSN_005fSETS_005fARE_005fDELAYED"></a>Macro: <strong>INSN_SETS_ARE_DELAYED</strong> <em>(<var>insn</var>)</em></dt>
+<dd><p>Define this macro as a C expression that is nonzero if it is safe for the
+delay slot scheduler to place instructions in the delay slot of <var>insn</var>,
+even if they appear to use a resource set or clobbered in <var>insn</var>.
+<var>insn</var> is always a <code>jump_insn</code> or an <code>insn</code>; GCC knows that
+every <code>call_insn</code> has this behavior. On machines where some <code>insn</code>
+or <code>jump_insn</code> is really a function call and hence has this behavior,
+you should define this macro.
+</p>
+<p>You need not define this macro if it would always return zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INSN_005fREFERENCES_005fARE_005fDELAYED"></a>Macro: <strong>INSN_REFERENCES_ARE_DELAYED</strong> <em>(<var>insn</var>)</em></dt>
+<dd><p>Define this macro as a C expression that is nonzero if it is safe for the
+delay slot scheduler to place instructions in the delay slot of <var>insn</var>,
+even if they appear to set or clobber a resource referenced in <var>insn</var>.
+<var>insn</var> is always a <code>jump_insn</code> or an <code>insn</code>. On machines where
+some <code>insn</code> or <code>jump_insn</code> is really a function call and its operands
+are registers whose use is actually in the subroutine it calls, you should
+define this macro. Doing so allows the delay slot scheduler to move
+instructions which copy arguments into the argument registers into the delay
+slot of <var>insn</var>.
+</p>
+<p>You need not define this macro if it would always return zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MULTIPLE_005fSYMBOL_005fSPACES"></a>Macro: <strong>MULTIPLE_SYMBOL_SPACES</strong></dt>
+<dd><p>Define this macro as a C expression that is nonzero if, in some cases,
+global symbols from one translation unit may not be bound to undefined
+symbols in another translation unit without user intervention. For
+instance, under Microsoft Windows symbols must be explicitly imported
+from shared libraries (DLLs).
+</p>
+<p>You need not define this macro if it would always evaluate to zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMD_005fASM_005fADJUST"></a>Target Hook: <em>rtx_insn *</em> <strong>TARGET_MD_ASM_ADJUST</strong> <em>(vec&lt;rtx&gt;&amp; <var>outputs</var>, vec&lt;rtx&gt;&amp; <var>inputs</var>, vec&lt;machine_mode&gt;&amp; <var>input_modes</var>, vec&lt;const char *&gt;&amp; <var>constraints</var>, vec&lt;rtx&gt;&amp; <var>clobbers</var>, HARD_REG_SET&amp; <var>clobbered_regs</var>, location_t <var>loc</var>)</em></dt>
+<dd><p>This target hook may add <em>clobbers</em> to <var>clobbers</var> and
+<var>clobbered_regs</var> for any hard regs the port wishes to automatically
+clobber for an asm. The <var>outputs</var> and <var>inputs</var> may be inspected
+to avoid clobbering a register that is already used by the asm. <var>loc</var>
+is the source location of the asm.
+</p>
+<p>It may modify the <var>outputs</var>, <var>inputs</var>, <var>input_modes</var>, and
+<var>constraints</var> as necessary for other pre-processing. In this case the
+return value is a sequence of insns to emit after the asm. Note that
+changes to <var>inputs</var> must be accompanied by the corresponding changes
+to <var>input_modes</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MATH_005fLIBRARY"></a>Macro: <strong>MATH_LIBRARY</strong></dt>
+<dd><p>Define this macro as a C string constant for the linker argument to link
+in the system math library, minus the initial &lsquo;<samp>&quot;-l&quot;</samp>&rsquo;, or
+&lsquo;<samp>&quot;&quot;</samp>&rsquo; if the target does not have a
+separate math library.
+</p>
+<p>You need only define this macro if the default of &lsquo;<samp>&quot;m&quot;</samp>&rsquo; is wrong.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIBRARY_005fPATH_005fENV"></a>Macro: <strong>LIBRARY_PATH_ENV</strong></dt>
+<dd><p>Define this macro as a C string constant for the environment variable that
+specifies where the linker should look for libraries.
+</p>
+<p>You need only define this macro if the default of &lsquo;<samp>&quot;LIBRARY_PATH&quot;</samp>&rsquo;
+is wrong.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPOSIX_005fIO"></a>Macro: <strong>TARGET_POSIX_IO</strong></dt>
+<dd><p>Define this macro if the target supports the following POSIX&nbsp;file
+functions, access, mkdir and file locking with fcntl / F_SETLKW.
+Defining <code>TARGET_POSIX_IO</code> will enable the test coverage code
+to use file locking when exiting a program, which avoids race conditions
+if the program has forked. It will also create directories at run-time
+for cross-profiling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fCONDITIONAL_005fEXECUTE"></a>Macro: <strong>MAX_CONDITIONAL_EXECUTE</strong></dt>
+<dd>
+<p>A C expression for the maximum number of instructions to execute via
+conditional execution instructions instead of a branch. A value of
+<code>BRANCH_COST</code>+1 is the default.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMODIFY_005fTESTS"></a>Macro: <strong>IFCVT_MODIFY_TESTS</strong> <em>(<var>ce_info</var>, <var>true_expr</var>, <var>false_expr</var>)</em></dt>
+<dd><p>Used if the target needs to perform machine-dependent modifications on the
+conditionals used for turning basic blocks into conditionally executed code.
+<var>ce_info</var> points to a data structure, <code>struct ce_if_block</code>, which
+contains information about the currently processed blocks. <var>true_expr</var>
+and <var>false_expr</var> are the tests that are used for converting the
+then-block and the else-block, respectively. Set either <var>true_expr</var> or
+<var>false_expr</var> to a null pointer if the tests cannot be converted.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMODIFY_005fMULTIPLE_005fTESTS"></a>Macro: <strong>IFCVT_MODIFY_MULTIPLE_TESTS</strong> <em>(<var>ce_info</var>, <var>bb</var>, <var>true_expr</var>, <var>false_expr</var>)</em></dt>
+<dd><p>Like <code>IFCVT_MODIFY_TESTS</code>, but used when converting more complicated
+if-statements into conditions combined by <code>and</code> and <code>or</code> operations.
+<var>bb</var> contains the basic block that contains the test that is currently
+being processed and about to be turned into a condition.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMODIFY_005fINSN"></a>Macro: <strong>IFCVT_MODIFY_INSN</strong> <em>(<var>ce_info</var>, <var>pattern</var>, <var>insn</var>)</em></dt>
+<dd><p>A C expression to modify the <var>PATTERN</var> of an <var>INSN</var> that is to
+be converted to conditional execution format. <var>ce_info</var> points to
+a data structure, <code>struct ce_if_block</code>, which contains information
+about the currently processed blocks.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMODIFY_005fFINAL"></a>Macro: <strong>IFCVT_MODIFY_FINAL</strong> <em>(<var>ce_info</var>)</em></dt>
+<dd><p>A C expression to perform any final machine dependent modifications in
+converting code to conditional execution. The involved basic blocks
+can be found in the <code>struct ce_if_block</code> structure that is pointed
+to by <var>ce_info</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMODIFY_005fCANCEL"></a>Macro: <strong>IFCVT_MODIFY_CANCEL</strong> <em>(<var>ce_info</var>)</em></dt>
+<dd><p>A C expression to cancel any machine dependent modifications in
+converting code to conditional execution. The involved basic blocks
+can be found in the <code>struct ce_if_block</code> structure that is pointed
+to by <var>ce_info</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-IFCVT_005fMACHDEP_005fINIT"></a>Macro: <strong>IFCVT_MACHDEP_INIT</strong> <em>(<var>ce_info</var>)</em></dt>
+<dd><p>A C expression to initialize any machine specific data for if-conversion
+of the if-block in the <code>struct ce_if_block</code> structure that is pointed
+to by <var>ce_info</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMACHINE_005fDEPENDENT_005fREORG"></a>Target Hook: <em>void</em> <strong>TARGET_MACHINE_DEPENDENT_REORG</strong> <em>(void)</em></dt>
+<dd><p>If non-null, this hook performs a target-specific pass over the
+instruction stream. The compiler will run it at all optimization levels,
+just before the point at which it normally does delayed-branch scheduling.
+</p>
+<p>The exact purpose of the hook varies from target to target. Some use
+it to do transformations that are necessary for correctness, such as
+laying out in-function constant pools or avoiding hardware hazards.
+Others use it as an opportunity to do some machine-dependent optimizations.
+</p>
+<p>You need not implement the hook if it has nothing to do. The default
+definition is null.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINIT_005fBUILTINS"></a>Target Hook: <em>void</em> <strong>TARGET_INIT_BUILTINS</strong> <em>(void)</em></dt>
+<dd><p>Define this hook if you have any machine-specific built-in functions
+that need to be defined. It should be a function that performs the
+necessary setup.
+</p>
+<p>Machine specific built-in functions can be useful to expand special machine
+instructions that would otherwise not normally be generated because
+they have no equivalent in the source language (for example, SIMD vector
+instructions or prefetch instructions).
+</p>
+<p>To create a built-in function, call the function
+<code>lang_hooks.builtin_function</code>
+which is defined by the language front end. You can use any type nodes set
+up by <code>build_common_tree_nodes</code>;
+only language front ends that use those two functions will call
+&lsquo;<samp>TARGET_INIT_BUILTINS</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fBUILTIN_005fDECL"></a>Target Hook: <em>tree</em> <strong>TARGET_BUILTIN_DECL</strong> <em>(unsigned <var>code</var>, bool <var>initialize_p</var>)</em></dt>
+<dd><p>Define this hook if you have any machine-specific built-in functions
+that need to be defined. It should be a function that returns the
+builtin function declaration for the builtin function code <var>code</var>.
+If there is no such builtin and it cannot be initialized at this time
+if <var>initialize_p</var> is true the function should return <code>NULL_TREE</code>.
+If <var>code</var> is out of range the function should return
+<code>error_mark_node</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXPAND_005fBUILTIN"></a>Target Hook: <em>rtx</em> <strong>TARGET_EXPAND_BUILTIN</strong> <em>(tree <var>exp</var>, rtx <var>target</var>, rtx <var>subtarget</var>, machine_mode <var>mode</var>, int <var>ignore</var>)</em></dt>
+<dd>
+<p>Expand a call to a machine specific built-in function that was set up by
+&lsquo;<samp>TARGET_INIT_BUILTINS</samp>&rsquo;. <var>exp</var> is the expression for the
+function call; the result should go to <var>target</var> if that is
+convenient, and have mode <var>mode</var> if that is convenient.
+<var>subtarget</var> may be used as the target for computing one of
+<var>exp</var>&rsquo;s operands. <var>ignore</var> is nonzero if the value is to be
+ignored. This function should return the result of the call to the
+built-in function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRESOLVE_005fOVERLOADED_005fBUILTIN"></a>Target Hook: <em>tree</em> <strong>TARGET_RESOLVE_OVERLOADED_BUILTIN</strong> <em>(unsigned int <var>loc</var>, tree <var>fndecl</var>, void *<var>arglist</var>)</em></dt>
+<dd><p>Select a replacement for a machine specific built-in function that
+was set up by &lsquo;<samp>TARGET_INIT_BUILTINS</samp>&rsquo;. This is done
+<em>before</em> regular type checking, and so allows the target to
+implement a crude form of function overloading. <var>fndecl</var> is the
+declaration of the built-in function. <var>arglist</var> is the list of
+arguments passed to the built-in function. The result is a
+complete expression that implements the operation, usually
+another <code>CALL_EXPR</code>.
+<var>arglist</var> really has type &lsquo;<samp>VEC(tree,gc)*</samp>&rsquo;
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCHECK_005fBUILTIN_005fCALL"></a>Target Hook: <em>bool</em> <strong>TARGET_CHECK_BUILTIN_CALL</strong> <em>(location_t <var>loc</var>, vec&lt;location_t&gt; <var>arg_loc</var>, tree <var>fndecl</var>, tree <var>orig_fndecl</var>, unsigned int <var>nargs</var>, tree *<var>args</var>)</em></dt>
+<dd><p>Perform semantic checking on a call to a machine-specific built-in
+function after its arguments have been constrained to the function
+signature. Return true if the call is valid, otherwise report an error
+and return false.
+</p>
+<p>This hook is called after <code>TARGET_RESOLVE_OVERLOADED_BUILTIN</code>.
+The call was originally to built-in function <var>orig_fndecl</var>,
+but after the optional <code>TARGET_RESOLVE_OVERLOADED_BUILTIN</code>
+step is now to built-in function <var>fndecl</var>. <var>loc</var> is the
+location of the call and <var>args</var> is an array of function arguments,
+of which there are <var>nargs</var>. <var>arg_loc</var> specifies the location
+of each argument.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFOLD_005fBUILTIN"></a>Target Hook: <em>tree</em> <strong>TARGET_FOLD_BUILTIN</strong> <em>(tree <var>fndecl</var>, int <var>n_args</var>, tree *<var>argp</var>, bool <var>ignore</var>)</em></dt>
+<dd><p>Fold a call to a machine specific built-in function that was set up by
+&lsquo;<samp>TARGET_INIT_BUILTINS</samp>&rsquo;. <var>fndecl</var> is the declaration of the
+built-in function. <var>n_args</var> is the number of arguments passed to
+the function; the arguments themselves are pointed to by <var>argp</var>.
+The result is another tree, valid for both GIMPLE and GENERIC,
+containing a simplified expression for the call&rsquo;s result. If
+<var>ignore</var> is true the value will be ignored.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGIMPLE_005fFOLD_005fBUILTIN"></a>Target Hook: <em>bool</em> <strong>TARGET_GIMPLE_FOLD_BUILTIN</strong> <em>(gimple_stmt_iterator *<var>gsi</var>)</em></dt>
+<dd><p>Fold a call to a machine specific built-in function that was set up
+by &lsquo;<samp>TARGET_INIT_BUILTINS</samp>&rsquo;. <var>gsi</var> points to the gimple
+statement holding the function call. Returns true if any change
+was made to the GIMPLE stream.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPARE_005fVERSION_005fPRIORITY"></a>Target Hook: <em>int</em> <strong>TARGET_COMPARE_VERSION_PRIORITY</strong> <em>(tree <var>decl1</var>, tree <var>decl2</var>)</em></dt>
+<dd><p>This hook is used to compare the target attributes in two functions to
+determine which function&rsquo;s features get higher priority. This is used
+during function multi-versioning to figure out the order in which two
+versions must be dispatched. A function version with a higher priority
+is checked for dispatching earlier. <var>decl1</var> and <var>decl2</var> are
+ the two function decls that will be compared.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fFUNCTION_005fVERSIONS_005fDISPATCHER"></a>Target Hook: <em>tree</em> <strong>TARGET_GET_FUNCTION_VERSIONS_DISPATCHER</strong> <em>(void *<var>decl</var>)</em></dt>
+<dd><p>This hook is used to get the dispatcher function for a set of function
+versions. The dispatcher function is called to invoke the right function
+version at run-time. <var>decl</var> is one version from a set of semantically
+identical versions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGENERATE_005fVERSION_005fDISPATCHER_005fBODY"></a>Target Hook: <em>tree</em> <strong>TARGET_GENERATE_VERSION_DISPATCHER_BODY</strong> <em>(void *<var>arg</var>)</em></dt>
+<dd><p>This hook is used to generate the dispatcher logic to invoke the right
+function version at run-time for a given set of function versions.
+<var>arg</var> points to the callgraph node of the dispatcher function whose
+body must be generated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREDICT_005fDOLOOP_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_PREDICT_DOLOOP_P</strong> <em>(class loop *<var>loop</var>)</em></dt>
+<dd><p>Return true if we can predict it is possible to use a low-overhead loop
+for a particular loop. The parameter <var>loop</var> is a pointer to the loop.
+This target hook is required only when the target supports low-overhead
+loops, and will help ivopts to make some decisions.
+The default version of this hook returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fCOUNT_005fREG_005fDECR_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_COUNT_REG_DECR_P</strong></dt>
+<dd><p>Return true if the target supports hardware count register for decrement
+and branch.
+The default value is false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDOLOOP_005fCOST_005fFOR_005fGENERIC"></a>Target Hook: <em>int64_t</em> <strong>TARGET_DOLOOP_COST_FOR_GENERIC</strong></dt>
+<dd><p>One IV candidate dedicated for doloop is introduced in IVOPTs, we can
+calculate the computation cost of adopting it to any generic IV use by
+function get_computation_cost as before. But for targets which have
+hardware count register support for decrement and branch, it may have to
+move IV value from hardware count register to general purpose register
+while doloop IV candidate is used for generic IV uses. It probably takes
+expensive penalty. This hook allows target owners to define the cost for
+this especially for generic IV uses.
+The default value is zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDOLOOP_005fCOST_005fFOR_005fADDRESS"></a>Target Hook: <em>int64_t</em> <strong>TARGET_DOLOOP_COST_FOR_ADDRESS</strong></dt>
+<dd><p>One IV candidate dedicated for doloop is introduced in IVOPTs, we can
+calculate the computation cost of adopting it to any address IV use by
+function get_computation_cost as before. But for targets which have
+hardware count register support for decrement and branch, it may have to
+move IV value from hardware count register to general purpose register
+while doloop IV candidate is used for address IV uses. It probably takes
+expensive penalty. This hook allows target owners to define the cost for
+this escpecially for address IV uses.
+The default value is zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCAN_005fUSE_005fDOLOOP_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CAN_USE_DOLOOP_P</strong> <em>(const widest_int <var>&amp;iterations</var>, const widest_int <var>&amp;iterations_max</var>, unsigned int <var>loop_depth</var>, bool <var>entered_at_top</var>)</em></dt>
+<dd><p>Return true if it is possible to use low-overhead loops (<code>doloop_end</code>
+and <code>doloop_begin</code>) for a particular loop. <var>iterations</var> gives the
+exact number of iterations, or 0 if not known. <var>iterations_max</var> gives
+the maximum number of iterations, or 0 if not known. <var>loop_depth</var> is
+the nesting depth of the loop, with 1 for innermost loops, 2 for loops that
+contain innermost loops, and so on. <var>entered_at_top</var> is true if the
+loop is only entered from the top.
+</p>
+<p>This hook is only used if <code>doloop_end</code> is available. The default
+implementation returns true. You can use <code>can_use_doloop_if_innermost</code>
+if the loop must be the innermost, and if there are no other restrictions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINVALID_005fWITHIN_005fDOLOOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_INVALID_WITHIN_DOLOOP</strong> <em>(const rtx_insn *<var>insn</var>)</em></dt>
+<dd>
+<p>Take an instruction in <var>insn</var> and return NULL if it is valid within a
+low-overhead loop, otherwise return a string explaining why doloop
+could not be applied.
+</p>
+<p>Many targets use special registers for low-overhead looping. For any
+instruction that clobbers these this function should return a string indicating
+the reason why the doloop could not be applied.
+By default, the RTL loop optimizer does not use a present doloop pattern for
+loops containing function calls or branch on table instructions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREFERRED_005fDOLOOP_005fMODE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_PREFERRED_DOLOOP_MODE</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook takes a <var>mode</var> for a doloop IV, where <code>mode</code> is the
+original mode for the operation. If the target prefers an alternate
+<code>mode</code> for the operation, then this hook should return that mode;
+otherwise the original <code>mode</code> should be returned. For example, on a
+64-bit target, <code>DImode</code> might be preferred over <code>SImode</code>. Both the
+original and the returned modes should be <code>MODE_INT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLEGITIMATE_005fCOMBINED_005fINSN"></a>Target Hook: <em>bool</em> <strong>TARGET_LEGITIMATE_COMBINED_INSN</strong> <em>(rtx_insn *<var>insn</var>)</em></dt>
+<dd><p>Take an instruction in <var>insn</var> and return <code>false</code> if the instruction
+is not appropriate as a combination of two or more instructions. The
+default is to accept all instructions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCAN_005fFOLLOW_005fJUMP"></a>Target Hook: <em>bool</em> <strong>TARGET_CAN_FOLLOW_JUMP</strong> <em>(const rtx_insn *<var>follower</var>, const rtx_insn *<var>followee</var>)</em></dt>
+<dd><p>FOLLOWER and FOLLOWEE are JUMP_INSN instructions;
+return true if FOLLOWER may be modified to follow FOLLOWEE;
+false, if it can&rsquo;t.
+For example, on some targets, certain kinds of branches can&rsquo;t be made to
+follow through a hot/cold partitioning.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMMUTATIVE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_COMMUTATIVE_P</strong> <em>(const_rtx <var>x</var>, int <var>outer_code</var>)</em></dt>
+<dd><p>This target hook returns <code>true</code> if <var>x</var> is considered to be commutative.
+Usually, this is just COMMUTATIVE_P (<var>x</var>), but the HP PA doesn&rsquo;t consider
+PLUS to be commutative inside a MEM. <var>outer_code</var> is the rtx code
+of the enclosing rtl, if known, otherwise it is UNKNOWN.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fALLOCATE_005fINITIAL_005fVALUE"></a>Target Hook: <em>rtx</em> <strong>TARGET_ALLOCATE_INITIAL_VALUE</strong> <em>(rtx <var>hard_reg</var>)</em></dt>
+<dd>
+<p>When the initial value of a hard register has been copied in a pseudo
+register, it is often not necessary to actually allocate another register
+to this pseudo register, because the original hard register or a stack slot
+it has been saved into can be used. <code>TARGET_ALLOCATE_INITIAL_VALUE</code>
+is called at the start of register allocation once for each hard register
+that had its initial value copied by using
+<code>get_func_hard_reg_initial_val</code> or <code>get_hard_reg_initial_val</code>.
+Possible values are <code>NULL_RTX</code>, if you don&rsquo;t want
+to do any special allocation, a <code>REG</code> rtx&mdash;that would typically be
+the hard register itself, if it is known not to be clobbered&mdash;or a
+<code>MEM</code>.
+If you are returning a <code>MEM</code>, this is only a hint for the allocator;
+it might decide to use another register anyways.
+You may use <code>current_function_is_leaf</code> or
+<code>REG_N_SETS</code> in the hook to determine if the hard
+register in question will not be clobbered.
+The default value of this hook is <code>NULL</code>, which disables any special
+allocation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUNSPEC_005fMAY_005fTRAP_005fP"></a>Target Hook: <em>int</em> <strong>TARGET_UNSPEC_MAY_TRAP_P</strong> <em>(const_rtx <var>x</var>, unsigned <var>flags</var>)</em></dt>
+<dd><p>This target hook returns nonzero if <var>x</var>, an <code>unspec</code> or
+<code>unspec_volatile</code> operation, might cause a trap. Targets can use
+this hook to enhance precision of analysis for <code>unspec</code> and
+<code>unspec_volatile</code> operations. You may call <code>may_trap_p_1</code>
+to analyze inner elements of <var>x</var> in which case <var>flags</var> should be
+passed along.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSET_005fCURRENT_005fFUNCTION"></a>Target Hook: <em>void</em> <strong>TARGET_SET_CURRENT_FUNCTION</strong> <em>(tree <var>decl</var>)</em></dt>
+<dd><p>The compiler invokes this hook whenever it changes its current function
+context (<code>cfun</code>). You can define this function if
+the back end needs to perform any initialization or reset actions on a
+per-function basis. For example, it may be used to implement function
+attributes that affect register usage or code generation patterns.
+The argument <var>decl</var> is the declaration for the new function context,
+and may be null to indicate that the compiler has left a function context
+and is returning to processing at the top level.
+The default hook function does nothing.
+</p>
+<p>GCC sets <code>cfun</code> to a dummy function context during initialization of
+some parts of the back end. The hook function is not invoked in this
+situation; you need not worry about the hook being invoked recursively,
+or when the back end is in a partially-initialized state.
+<code>cfun</code> might be <code>NULL</code> to indicate processing at top level,
+outside of any function scope.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOBJECT_005fSUFFIX"></a>Macro: <strong>TARGET_OBJECT_SUFFIX</strong></dt>
+<dd><p>Define this macro to be a C string representing the suffix for object
+files on your target machine. If you do not define this macro, GCC will
+use &lsquo;<samp>.o</samp>&rsquo; as the suffix for object files.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXECUTABLE_005fSUFFIX"></a>Macro: <strong>TARGET_EXECUTABLE_SUFFIX</strong></dt>
+<dd><p>Define this macro to be a C string representing the suffix to be
+automatically added to executable files on your target machine. If you
+do not define this macro, GCC will use the null string as the suffix for
+executable files.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-COLLECT_005fEXPORT_005fLIST"></a>Macro: <strong>COLLECT_EXPORT_LIST</strong></dt>
+<dd><p>If defined, <code>collect2</code> will scan the individual object files
+specified on its command line and create an export list for the linker.
+Define this macro for systems like AIX, where the linker discards
+object files that are not referenced from <code>main</code> and uses export
+lists.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCANNOT_005fMODIFY_005fJUMPS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CANNOT_MODIFY_JUMPS_P</strong> <em>(void)</em></dt>
+<dd><p>This target hook returns <code>true</code> past the point in which new jump
+instructions could be created. On machines that require a register for
+every jump such as the SHmedia ISA of SH5, this point would typically be
+reload, so this target hook should be defined to a function such as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">static bool
+cannot_modify_jumps_past_reload_p ()
+{
+ return (reload_completed || reload_in_progress);
+}
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fCONDITIONAL_005fEXECUTION"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_CONDITIONAL_EXECUTION</strong> <em>(void)</em></dt>
+<dd><p>This target hook returns true if the target supports conditional execution.
+This target hook is required only when the target has several different
+modes and they have different conditional execution capability, such as ARM.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGEN_005fCCMP_005fFIRST"></a>Target Hook: <em>rtx</em> <strong>TARGET_GEN_CCMP_FIRST</strong> <em>(rtx_insn **<var>prep_seq</var>, rtx_insn **<var>gen_seq</var>, int <var>code</var>, tree <var>op0</var>, tree <var>op1</var>)</em></dt>
+<dd><p>This function prepares to emit a comparison insn for the first compare in a
+ sequence of conditional comparisions. It returns an appropriate comparison
+ with <code>CC</code> for passing to <code>gen_ccmp_next</code> or <code>cbranch_optab</code>.
+ The insns to prepare the compare are saved in <var>prep_seq</var> and the compare
+ insns are saved in <var>gen_seq</var>. They will be emitted when all the
+ compares in the conditional comparision are generated without error.
+ <var>code</var> is the <code>rtx_code</code> of the compare for <var>op0</var> and <var>op1</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGEN_005fCCMP_005fNEXT"></a>Target Hook: <em>rtx</em> <strong>TARGET_GEN_CCMP_NEXT</strong> <em>(rtx_insn **<var>prep_seq</var>, rtx_insn **<var>gen_seq</var>, rtx <var>prev</var>, int <var>cmp_code</var>, tree <var>op0</var>, tree <var>op1</var>, int <var>bit_code</var>)</em></dt>
+<dd><p>This function prepares to emit a conditional comparison within a sequence
+ of conditional comparisons. It returns an appropriate comparison with
+ <code>CC</code> for passing to <code>gen_ccmp_next</code> or <code>cbranch_optab</code>.
+ The insns to prepare the compare are saved in <var>prep_seq</var> and the compare
+ insns are saved in <var>gen_seq</var>. They will be emitted when all the
+ compares in the conditional comparision are generated without error. The
+ <var>prev</var> expression is the result of a prior call to <code>gen_ccmp_first</code>
+ or <code>gen_ccmp_next</code>. It may return <code>NULL</code> if the combination of
+ <var>prev</var> and this comparison is not supported, otherwise the result must
+ be appropriate for passing to <code>gen_ccmp_next</code> or <code>cbranch_optab</code>.
+ <var>code</var> is the <code>rtx_code</code> of the compare for <var>op0</var> and <var>op1</var>.
+ <var>bit_code</var> is <code>AND</code> or <code>IOR</code>, which is the op on the compares.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLOOP_005fUNROLL_005fADJUST"></a>Target Hook: <em>unsigned</em> <strong>TARGET_LOOP_UNROLL_ADJUST</strong> <em>(unsigned <var>nunroll</var>, class loop *<var>loop</var>)</em></dt>
+<dd><p>This target hook returns a new value for the number of times <var>loop</var>
+should be unrolled. The parameter <var>nunroll</var> is the number of times
+the loop is to be unrolled. The parameter <var>loop</var> is a pointer to
+the loop, which is going to be checked for unrolling. This target hook
+is required only when the target has special constraints like maximum
+number of memory accesses.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-POWI_005fMAX_005fMULTS"></a>Macro: <strong>POWI_MAX_MULTS</strong></dt>
+<dd><p>If defined, this macro is interpreted as a signed integer C expression
+that specifies the maximum number of floating point multiplications
+that should be emitted when expanding exponentiation by an integer
+constant inline. When this value is defined, exponentiation requiring
+more than this number of multiplications is implemented by calling the
+system library&rsquo;s <code>pow</code>, <code>powf</code> or <code>powl</code> routines.
+The default value places no upper bound on the multiplication count.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXTRA_005fINCLUDES"></a>Macro: <em>void</em> <strong>TARGET_EXTRA_INCLUDES</strong> <em>(const char *<var>sysroot</var>, const char *<var>iprefix</var>, int <var>stdinc</var>)</em></dt>
+<dd><p>This target hook should register any extra include files for the
+target. The parameter <var>stdinc</var> indicates if normal include files
+are present. The parameter <var>sysroot</var> is the system root directory.
+The parameter <var>iprefix</var> is the prefix for the gcc directory.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXTRA_005fPRE_005fINCLUDES"></a>Macro: <em>void</em> <strong>TARGET_EXTRA_PRE_INCLUDES</strong> <em>(const char *<var>sysroot</var>, const char *<var>iprefix</var>, int <var>stdinc</var>)</em></dt>
+<dd><p>This target hook should register any extra include files for the
+target before any standard headers. The parameter <var>stdinc</var>
+indicates if normal include files are present. The parameter
+<var>sysroot</var> is the system root directory. The parameter
+<var>iprefix</var> is the prefix for the gcc directory.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTF"></a>Macro: <em>void</em> <strong>TARGET_OPTF</strong> <em>(char *<var>path</var>)</em></dt>
+<dd><p>This target hook should register special include paths for the target.
+The parameter <var>path</var> is the include to register. On Darwin
+systems, this is used for Framework includes, which have semantics
+that are different from <samp>-I</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-bool"></a>Macro: <strong>bool</strong> <em>TARGET_USE_LOCAL_THUNK_ALIAS_P (tree <var>fndecl</var>)</em></dt>
+<dd><p>This target macro returns <code>true</code> if it is safe to use a local alias
+for a virtual function <var>fndecl</var> when constructing thunks,
+<code>false</code> otherwise. By default, the macro returns <code>true</code> for all
+functions, if a target supports aliases (i.e. defines
+<code>ASM_OUTPUT_DEF</code>), <code>false</code> otherwise,
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFORMAT_005fTYPES"></a>Macro: <strong>TARGET_FORMAT_TYPES</strong></dt>
+<dd><p>If defined, this macro is the name of a global variable containing
+target-specific format checking information for the <samp>-Wformat</samp>
+option. The default is to have no target-specific format checks.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fN_005fFORMAT_005fTYPES"></a>Macro: <strong>TARGET_N_FORMAT_TYPES</strong></dt>
+<dd><p>If defined, this macro is the number of entries in
+<code>TARGET_FORMAT_TYPES</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOVERRIDES_005fFORMAT_005fATTRIBUTES"></a>Macro: <strong>TARGET_OVERRIDES_FORMAT_ATTRIBUTES</strong></dt>
+<dd><p>If defined, this macro is the name of a global variable containing
+target-specific format overrides for the <samp>-Wformat</samp> option. The
+default is to have no target-specific format overrides. If defined,
+<code>TARGET_FORMAT_TYPES</code> and <code>TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT</code>
+must be defined, too.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOVERRIDES_005fFORMAT_005fATTRIBUTES_005fCOUNT"></a>Macro: <strong>TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT</strong></dt>
+<dd><p>If defined, this macro specifies the number of entries in
+<code>TARGET_OVERRIDES_FORMAT_ATTRIBUTES</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOVERRIDES_005fFORMAT_005fINIT"></a>Macro: <strong>TARGET_OVERRIDES_FORMAT_INIT</strong></dt>
+<dd><p>If defined, this macro specifies the optional initialization
+routine for target specific customizations of the system printf
+and scanf formatter settings.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINVALID_005fARG_005fFOR_005fUNPROTOTYPED_005fFN"></a>Target Hook: <em>const char *</em> <strong>TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN</strong> <em>(const_tree <var>typelist</var>, const_tree <var>funcdecl</var>, const_tree <var>val</var>)</em></dt>
+<dd><p>If defined, this macro returns the diagnostic message when it is
+illegal to pass argument <var>val</var> to function <var>funcdecl</var>
+with prototype <var>typelist</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINVALID_005fCONVERSION"></a>Target Hook: <em>const char *</em> <strong>TARGET_INVALID_CONVERSION</strong> <em>(const_tree <var>fromtype</var>, const_tree <var>totype</var>)</em></dt>
+<dd><p>If defined, this macro returns the diagnostic message when it is
+invalid to convert from <var>fromtype</var> to <var>totype</var>, or <code>NULL</code>
+if validity should be determined by the front end.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINVALID_005fUNARY_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_INVALID_UNARY_OP</strong> <em>(int <var>op</var>, const_tree <var>type</var>)</em></dt>
+<dd><p>If defined, this macro returns the diagnostic message when it is
+invalid to apply operation <var>op</var> (where unary plus is denoted by
+<code>CONVERT_EXPR</code>) to an operand of type <var>type</var>, or <code>NULL</code>
+if validity should be determined by the front end.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINVALID_005fBINARY_005fOP"></a>Target Hook: <em>const char *</em> <strong>TARGET_INVALID_BINARY_OP</strong> <em>(int <var>op</var>, const_tree <var>type1</var>, const_tree <var>type2</var>)</em></dt>
+<dd><p>If defined, this macro returns the diagnostic message when it is
+invalid to apply operation <var>op</var> to operands of types <var>type1</var>
+and <var>type2</var>, or <code>NULL</code> if validity should be determined by
+the front end.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPROMOTED_005fTYPE"></a>Target Hook: <em>tree</em> <strong>TARGET_PROMOTED_TYPE</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>If defined, this target hook returns the type to which values of
+<var>type</var> should be promoted when they appear in expressions,
+analogous to the integer promotions, or <code>NULL_TREE</code> to use the
+front end&rsquo;s normal promotion rules. This hook is useful when there are
+target-specific types with special promotion rules.
+This is currently used only by the C and C++ front ends.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCONVERT_005fTO_005fTYPE"></a>Target Hook: <em>tree</em> <strong>TARGET_CONVERT_TO_TYPE</strong> <em>(tree <var>type</var>, tree <var>expr</var>)</em></dt>
+<dd><p>If defined, this hook returns the result of converting <var>expr</var> to
+<var>type</var>. It should return the converted expression,
+or <code>NULL_TREE</code> to apply the front end&rsquo;s normal conversion rules.
+This hook is useful when there are target-specific types with special
+conversion rules.
+This is currently used only by the C and C++ front ends.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVERIFY_005fTYPE_005fCONTEXT"></a>Target Hook: <em>bool</em> <strong>TARGET_VERIFY_TYPE_CONTEXT</strong> <em>(location_t <var>loc</var>, type_context_kind <var>context</var>, const_tree <var>type</var>, bool <var>silent_p</var>)</em></dt>
+<dd><p>If defined, this hook returns false if there is a target-specific reason
+why type <var>type</var> cannot be used in the source language context described
+by <var>context</var>. When <var>silent_p</var> is false, the hook also reports an
+error against <var>loc</var> for invalid uses of <var>type</var>.
+</p>
+<p>Calls to this hook should be made through the global function
+<code>verify_type_context</code>, which makes the <var>silent_p</var> parameter
+default to false and also handles <code>error_mark_node</code>.
+</p>
+<p>The default implementation always returns true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OBJC_005fJBLEN"></a>Macro: <strong>OBJC_JBLEN</strong></dt>
+<dd><p>This macro determines the size of the objective C jump buffer for the
+NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIBGCC2_005fUNWIND_005fATTRIBUTE"></a>Macro: <strong>LIBGCC2_UNWIND_ATTRIBUTE</strong></dt>
+<dd><p>Define this macro if any target-specific attributes need to be attached
+to the functions in <samp>libgcc</samp> that provide low-level support for
+call stack unwinding. It is used in declarations in <samp>unwind-generic.h</samp>
+and the associated definitions of those functions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUPDATE_005fSTACK_005fBOUNDARY"></a>Target Hook: <em>void</em> <strong>TARGET_UPDATE_STACK_BOUNDARY</strong> <em>(void)</em></dt>
+<dd><p>Define this macro to update the current function stack boundary if
+necessary.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fDRAP_005fRTX"></a>Target Hook: <em>rtx</em> <strong>TARGET_GET_DRAP_RTX</strong> <em>(void)</em></dt>
+<dd><p>This hook should return an rtx for Dynamic Realign Argument Pointer (DRAP) if a
+different argument pointer register is needed to access the function&rsquo;s
+argument list due to stack realignment. Return <code>NULL</code> if no DRAP
+is needed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fZERO_005fCALL_005fUSED_005fREGS"></a>Target Hook: <em>HARD_REG_SET</em> <strong>TARGET_ZERO_CALL_USED_REGS</strong> <em>(HARD_REG_SET <var>selected_regs</var>)</em></dt>
+<dd><p>This target hook emits instructions to zero the subset of <var>selected_regs</var>
+that could conceivably contain values that are useful to an attacker.
+Return the set of registers that were actually cleared.
+</p>
+<p>For most targets, the returned set of registers is a subset of
+<var>selected_regs</var>, however, for some of the targets (for example MIPS),
+clearing some registers that are in the <var>selected_regs</var> requires
+clearing other call used registers that are not in the <var>selected_regs</var>,
+under such situation, the returned set of registers must be a subset of all
+call used registers.
+</p>
+<p>The default implementation uses normal move instructions to zero
+all the registers in <var>selected_regs</var>. Define this hook if the
+target has more efficient ways of zeroing certain registers,
+or if you believe that certain registers would never contain
+values that are useful to an attacker.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fALLOCATE_005fSTACK_005fSLOTS_005fFOR_005fARGS"></a>Target Hook: <em>bool</em> <strong>TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS</strong> <em>(void)</em></dt>
+<dd><p>When optimization is disabled, this hook indicates whether or not
+arguments should be allocated to stack slots. Normally, GCC allocates
+stacks slots for arguments when not optimizing in order to make
+debugging easier. However, when a function is declared with
+<code>__attribute__((naked))</code>, there is no stack frame, and the compiler
+cannot safely move arguments from the registers in which they are passed
+to the stack. Therefore, this hook should return true in general, but
+false for naked functions. The default implementation always returns true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCONST_005fANCHOR"></a>Target Hook: <em>unsigned HOST_WIDE_INT</em> <strong>TARGET_CONST_ANCHOR</strong></dt>
+<dd><p>On some architectures it can take multiple instructions to synthesize
+a constant. If there is another constant already in a register that
+is close enough in value then it is preferable that the new constant
+is computed from this register using immediate addition or
+subtraction. We accomplish this through CSE. Besides the value of
+the constant we also add a lower and an upper constant anchor to the
+available expressions. These are then queried when encountering new
+constants. The anchors are computed by rounding the constant up and
+down to a multiple of the value of <code>TARGET_CONST_ANCHOR</code>.
+<code>TARGET_CONST_ANCHOR</code> should be the maximum positive value
+accepted by immediate-add plus one. We currently assume that the
+value of <code>TARGET_CONST_ANCHOR</code> is a power of 2. For example, on
+MIPS, where add-immediate takes a 16-bit signed value,
+<code>TARGET_CONST_ANCHOR</code> is set to &lsquo;<samp>0x8000</samp>&rsquo;. The default value
+is zero, which disables this optimization.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASAN_005fSHADOW_005fOFFSET"></a>Target Hook: <em>unsigned HOST_WIDE_INT</em> <strong>TARGET_ASAN_SHADOW_OFFSET</strong> <em>(void)</em></dt>
+<dd><p>Return the offset bitwise ored into shifted address to get corresponding
+Address Sanitizer shadow memory address. NULL if Address Sanitizer is not
+supported by the target. May return 0 if Address Sanitizer is not supported
+by a subtarget.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMMODEL_005fCHECK"></a>Target Hook: <em>unsigned HOST_WIDE_INT</em> <strong>TARGET_MEMMODEL_CHECK</strong> <em>(unsigned HOST_WIDE_INT <var>val</var>)</em></dt>
+<dd><p>Validate target specific memory model mask bits. When NULL no target specific
+memory model bits are allowed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fATOMIC_005fTEST_005fAND_005fSET_005fTRUEVAL"></a>Target Hook: <em>unsigned char</em> <strong>TARGET_ATOMIC_TEST_AND_SET_TRUEVAL</strong></dt>
+<dd><p>This value should be set if the result written by
+<code>atomic_test_and_set</code> is not exactly 1, i.e. the
+<code>bool</code> <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAS_005fIFUNC_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_HAS_IFUNC_P</strong> <em>(void)</em></dt>
+<dd><p>It returns true if the target supports GNU indirect functions.
+The support includes the assembler, linker and dynamic linker.
+The default value of this hook is based on target&rsquo;s libc.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fIFUNC_005fREF_005fLOCAL_005fOK"></a>Target Hook: <em>bool</em> <strong>TARGET_IFUNC_REF_LOCAL_OK</strong> <em>(void)</em></dt>
+<dd><p>Return true if it is OK to reference indirect function resolvers
+locally. The default is to return false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fATOMIC_005fALIGN_005fFOR_005fMODE"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_ATOMIC_ALIGN_FOR_MODE</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>If defined, this function returns an appropriate alignment in bits for an
+atomic object of machine_mode <var>mode</var>. If 0 is returned then the
+default alignment for the specified mode is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fATOMIC_005fASSIGN_005fEXPAND_005fFENV"></a>Target Hook: <em>void</em> <strong>TARGET_ATOMIC_ASSIGN_EXPAND_FENV</strong> <em>(tree *<var>hold</var>, tree *<var>clear</var>, tree *<var>update</var>)</em></dt>
+<dd><p>ISO C11 requires atomic compound assignments that may raise floating-point
+exceptions to raise exceptions corresponding to the arithmetic operation
+whose result was successfully stored in a compare-and-exchange sequence.
+This requires code equivalent to calls to <code>feholdexcept</code>,
+<code>feclearexcept</code> and <code>feupdateenv</code> to be generated at
+appropriate points in the compare-and-exchange sequence. This hook should
+set <code>*<var>hold</var></code> to an expression equivalent to the call to
+<code>feholdexcept</code>, <code>*<var>clear</var></code> to an expression equivalent to
+the call to <code>feclearexcept</code> and <code>*<var>update</var></code> to an expression
+equivalent to the call to <code>feupdateenv</code>. The three expressions are
+<code>NULL_TREE</code> on entry to the hook and may be left as <code>NULL_TREE</code>
+if no code is required in a particular place. The default implementation
+leaves all three expressions as <code>NULL_TREE</code>. The
+<code>__atomic_feraiseexcept</code> function from <code>libatomic</code> may be of use
+as part of the code generated in <code>*<var>update</var></code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRECORD_005fOFFLOAD_005fSYMBOL"></a>Target Hook: <em>void</em> <strong>TARGET_RECORD_OFFLOAD_SYMBOL</strong> <em>(tree)</em></dt>
+<dd><p>Used when offloaded functions are seen in the compilation unit and no named
+sections are available. It is called once for each symbol that must be
+recorded in the offload function and variable table.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOFFLOAD_005fOPTIONS"></a>Target Hook: <em>char *</em> <strong>TARGET_OFFLOAD_OPTIONS</strong> <em>(void)</em></dt>
+<dd><p>Used when writing out the list of options into an LTO file. It should
+translate any relevant target-specific options (such as the ABI in use)
+into one of the <samp>-foffload</samp> options that exist as a common interface
+to express such options. It should return a string containing these options,
+separated by spaces, which the caller will free.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSUPPORTS_005fWIDE_005fINT"></a>Macro: <strong>TARGET_SUPPORTS_WIDE_INT</strong></dt>
+<dd>
+<p>On older ports, large integers are stored in <code>CONST_DOUBLE</code> rtl
+objects. Newer ports define <code>TARGET_SUPPORTS_WIDE_INT</code> to be nonzero
+to indicate that large integers are stored in
+<code>CONST_WIDE_INT</code> rtl objects. The <code>CONST_WIDE_INT</code> allows
+very large integer constants to be represented. <code>CONST_DOUBLE</code>
+is limited to twice the size of the host&rsquo;s <code>HOST_WIDE_INT</code>
+representation.
+</p>
+<p>Converting a port mostly requires looking for the places where
+<code>CONST_DOUBLE</code>s are used with <code>VOIDmode</code> and replacing that
+code with code that accesses <code>CONST_WIDE_INT</code>s. &lsquo;<samp>&quot;grep -i
+const_double&quot;</samp>&rsquo; at the port level gets you to 95% of the changes that
+need to be made. There are a few places that require a deeper look.
+</p>
+<ul>
+<li> There is no equivalent to <code>hval</code> and <code>lval</code> for
+<code>CONST_WIDE_INT</code>s. This would be difficult to express in the md
+language since there are a variable number of elements.
+
+<p>Most ports only check that <code>hval</code> is either 0 or -1 to see if the
+value is small. As mentioned above, this will no longer be necessary
+since small constants are always <code>CONST_INT</code>. Of course there
+are still a few exceptions, the alpha&rsquo;s constraint used by the zap
+instruction certainly requires careful examination by C code.
+However, all the current code does is pass the hval and lval to C
+code, so evolving the c code to look at the <code>CONST_WIDE_INT</code> is
+not really a large change.
+</p>
+</li><li> Because there is no standard template that ports use to materialize
+constants, there is likely to be some futzing that is unique to each
+port in this code.
+
+</li><li> The rtx costs may have to be adjusted to properly account for larger
+constants that are represented as <code>CONST_WIDE_INT</code>.
+</li></ul>
+
+<p>All and all it does not take long to convert ports that the
+maintainer is familiar with.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fSPECULATION_005fSAFE_005fVALUE"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_SPECULATION_SAFE_VALUE</strong> <em>(bool <var>active</var>)</em></dt>
+<dd><p>This hook is used to determine the level of target support for
+ <code>__builtin_speculation_safe_value</code>. If called with an argument
+ of false, it returns true if the target has been modified to support
+ this builtin. If called with an argument of true, it returns true
+ if the target requires active mitigation execution might be speculative.
+</p>
+<p>The default implementation returns false if the target does not define
+ a pattern named <code>speculation_barrier</code>. Else it returns true
+ for the first case and whether the pattern is enabled for the current
+ compilation for the second case.
+</p>
+<p>For targets that have no processors that can execute instructions
+ speculatively an alternative implemenation of this hook is available:
+ simply redefine this hook to <code>speculation_safe_value_not_needed</code>
+ along with your other target hooks.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSPECULATION_005fSAFE_005fVALUE"></a>Target Hook: <em>rtx</em> <strong>TARGET_SPECULATION_SAFE_VALUE</strong> <em>(machine_mode <var>mode</var>, rtx <var>result</var>, rtx <var>val</var>, rtx <var>failval</var>)</em></dt>
+<dd><p>This target hook can be used to generate a target-specific code
+ sequence that implements the <code>__builtin_speculation_safe_value</code>
+ built-in function. The function must always return <var>val</var> in
+ <var>result</var> in mode <var>mode</var> when the cpu is not executing
+ speculatively, but must never return that when speculating until it
+ is known that the speculation will not be unwound. The hook supports
+ two primary mechanisms for implementing the requirements. The first
+ is to emit a speculation barrier which forces the processor to wait
+ until all prior speculative operations have been resolved; the second
+ is to use a target-specific mechanism that can track the speculation
+ state and to return <var>failval</var> if it can determine that
+ speculation must be unwound at a later time.
+</p>
+<p>The default implementation simply copies <var>val</var> to <var>result</var> and
+ emits a <code>speculation_barrier</code> instruction if that is defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRUN_005fTARGET_005fSELFTESTS"></a>Target Hook: <em>void</em> <strong>TARGET_RUN_TARGET_SELFTESTS</strong> <em>(void)</em></dt>
+<dd><p>If selftests are enabled, run any selftests for this target.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fCAN_005fTAG_005fADDRESSES"></a>Target Hook: <em>bool</em> <strong>TARGET_MEMTAG_CAN_TAG_ADDRESSES</strong> <em>()</em></dt>
+<dd><p>True if the backend architecture naturally supports ignoring some region
+of pointers. This feature means that <samp>-fsanitize=hwaddress</samp> can
+work.
+</p>
+<p>At preset, this feature does not support address spaces. It also requires
+<code>Pmode</code> to be the same as <code>ptr_mode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fTAG_005fSIZE"></a>Target Hook: <em>uint8_t</em> <strong>TARGET_MEMTAG_TAG_SIZE</strong> <em>()</em></dt>
+<dd><p>Return the size of a tag (in bits) for this platform.
+</p>
+<p>The default returns 8.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fGRANULE_005fSIZE"></a>Target Hook: <em>uint8_t</em> <strong>TARGET_MEMTAG_GRANULE_SIZE</strong> <em>()</em></dt>
+<dd><p>Return the size in real memory that each byte in shadow memory refers to.
+I.e. if a variable is <var>X</var> bytes long in memory, then this hook should
+return the value <var>Y</var> such that the tag in shadow memory spans
+<var>X</var>/<var>Y</var> bytes.
+</p>
+<p>Most variables will need to be aligned to this amount since two variables
+that are neighbors in memory and share a tag granule would need to share
+the same tag.
+</p>
+<p>The default returns 16.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fINSERT_005fRANDOM_005fTAG"></a>Target Hook: <em>rtx</em> <strong>TARGET_MEMTAG_INSERT_RANDOM_TAG</strong> <em>(rtx <var>untagged</var>, rtx <var>target</var>)</em></dt>
+<dd><p>Return an RTX representing the value of <var>untagged</var> but with a
+(possibly) random tag in it.
+Put that value into <var>target</var> if it is convenient to do so.
+This function is used to generate a tagged base for the current stack frame.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fADD_005fTAG"></a>Target Hook: <em>rtx</em> <strong>TARGET_MEMTAG_ADD_TAG</strong> <em>(rtx <var>base</var>, poly_int64 <var>addr_offset</var>, uint8_t <var>tag_offset</var>)</em></dt>
+<dd><p>Return an RTX that represents the result of adding <var>addr_offset</var> to
+the address in pointer <var>base</var> and <var>tag_offset</var> to the tag in pointer
+<var>base</var>.
+The resulting RTX must either be a valid memory address or be able to get
+put into an operand with <code>force_operand</code>.
+</p>
+<p>Unlike other memtag hooks, this must return an expression and not emit any
+RTL.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fSET_005fTAG"></a>Target Hook: <em>rtx</em> <strong>TARGET_MEMTAG_SET_TAG</strong> <em>(rtx <var>untagged_base</var>, rtx <var>tag</var>, rtx <var>target</var>)</em></dt>
+<dd><p>Return an RTX representing <var>untagged_base</var> but with the tag <var>tag</var>.
+Try and store this in <var>target</var> if convenient.
+<var>untagged_base</var> is required to have a zero tag when this hook is called.
+The default of this hook is to set the top byte of <var>untagged_base</var> to
+<var>tag</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fEXTRACT_005fTAG"></a>Target Hook: <em>rtx</em> <strong>TARGET_MEMTAG_EXTRACT_TAG</strong> <em>(rtx <var>tagged_pointer</var>, rtx <var>target</var>)</em></dt>
+<dd><p>Return an RTX representing the tag stored in <var>tagged_pointer</var>.
+Store the result in <var>target</var> if it is convenient.
+The default represents the top byte of the original pointer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMTAG_005fUNTAGGED_005fPOINTER"></a>Target Hook: <em>rtx</em> <strong>TARGET_MEMTAG_UNTAGGED_POINTER</strong> <em>(rtx <var>tagged_pointer</var>, rtx <var>target</var>)</em></dt>
+<dd><p>Return an RTX representing <var>tagged_pointer</var> with its tag set to zero.
+Store the result in <var>target</var> if convenient.
+The default clears the top byte of the original pointer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGCOV_005fTYPE_005fSIZE"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_GCOV_TYPE_SIZE</strong> <em>(void)</em></dt>
+<dd><p>Returns the gcov type size in bits. This type is used for example for
+counters incremented by profiling and code-coverage events. The default
+value is 64, if the type size of long long is greater than 32, otherwise the
+default value is 32. A 64-bit type is recommended to avoid overflows of the
+counters. If the <samp>-fprofile-update=atomic</samp> is used, then the
+counters are incremented using atomic operations. Targets not supporting
+64-bit atomic operations may override the default value and request a 32-bit
+type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fSHADOW_005fCALL_005fSTACK"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_SHADOW_CALL_STACK</strong></dt>
+<dd><p>This value is true if the target platform supports
+<samp>-fsanitize=shadow-call-stack</samp>. The default value is false.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Named-Address-Spaces.html#Named-Address-Spaces" accesskey="p" rel="previous">Named Address Spaces</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Miscellaneous-Docs.html b/share/doc/gccint/Miscellaneous-Docs.html
new file mode 100644
index 0000000..f1fef78
--- /dev/null
+++ b/share/doc/gccint/Miscellaneous-Docs.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Miscellaneous Docs</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Miscellaneous Docs">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Miscellaneous Docs">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Documentation.html#Documentation" rel="up" title="Documentation">
+<link href="Front-End.html#Front-End" rel="next" title="Front End">
+<link href="Man-Page-Generation.html#Man-Page-Generation" rel="previous" title="Man Page Generation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Miscellaneous-Docs"></a>
+<div class="header">
+<p>
+Previous: <a href="Man-Page-Generation.html#Man-Page-Generation" accesskey="p" rel="previous">Man Page Generation</a>, Up: <a href="Documentation.html#Documentation" accesskey="u" rel="up">Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Miscellaneous-Documentation"></a>
+<h4 class="subsubsection">6.3.7.3 Miscellaneous Documentation</h4>
+
+<p>In addition to the formal documentation that is installed by GCC,
+there are several other text files in the <samp>gcc</samp> subdirectory
+with miscellaneous documentation:
+</p>
+<dl compact="compact">
+<dt><samp>ABOUT-GCC-NLS</samp></dt>
+<dd><p>Notes on GCC&rsquo;s Native Language Support. FIXME: this should be part of
+this manual rather than a separate file.
+</p></dd>
+<dt><samp>ABOUT-NLS</samp></dt>
+<dd><p>Notes on the Free Translation Project.
+</p></dd>
+<dt><samp>COPYING</samp></dt>
+<dt><samp>COPYING3</samp></dt>
+<dd><p>The GNU General Public License, Versions 2 and 3.
+</p></dd>
+<dt><samp>COPYING.LIB</samp></dt>
+<dt><samp>COPYING3.LIB</samp></dt>
+<dd><p>The GNU Lesser General Public License, Versions 2.1 and 3.
+</p></dd>
+<dt><samp>*ChangeLog*</samp></dt>
+<dt><samp>*/ChangeLog*</samp></dt>
+<dd><p>Change log files for various parts of GCC.
+</p></dd>
+<dt><samp>LANGUAGES</samp></dt>
+<dd><p>Details of a few changes to the GCC front-end interface. FIXME: the
+information in this file should be part of general documentation of
+the front-end interface in this manual.
+</p></dd>
+<dt><samp>ONEWS</samp></dt>
+<dd><p>Information about new features in old versions of GCC. (For recent
+versions, the information is on the GCC web site.)
+</p></dd>
+<dt><samp>README.Portability</samp></dt>
+<dd><p>Information about portability issues when writing code in GCC. FIXME:
+why isn&rsquo;t this part of this manual or of the GCC Coding Conventions?
+</p></dd>
+</dl>
+
+<p>FIXME: document such files in subdirectories, at least <samp>config</samp>,
+<samp>c</samp>, <samp>cp</samp>, <samp>objc</samp>, <samp>testsuite</samp>.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Miscellaneous-Register-Hooks.html b/share/doc/gccint/Miscellaneous-Register-Hooks.html
new file mode 100644
index 0000000..9db399f
--- /dev/null
+++ b/share/doc/gccint/Miscellaneous-Register-Hooks.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Miscellaneous Register Hooks</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Miscellaneous Register Hooks">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Miscellaneous Register Hooks">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Varargs.html#Varargs" rel="next" title="Varargs">
+<link href="Stack-Smashing-Protection.html#Stack-Smashing-Protection" rel="previous" title="Stack Smashing Protection">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Miscellaneous-Register-Hooks"></a>
+<div class="header">
+<p>
+Previous: <a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection" accesskey="p" rel="previous">Stack Smashing Protection</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Miscellaneous-register-hooks"></a>
+<h4 class="subsection">18.9.16 Miscellaneous register hooks</h4>
+<a name="index-miscellaneous-register-hooks"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fCALL_005fFUSAGE_005fCONTAINS_005fNON_005fCALLEE_005fCLOBBERS"></a>Target Hook: <em>bool</em> <strong>TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS</strong></dt>
+<dd><p>Set to true if each call that binds to a local definition explicitly
+clobbers or sets all non-fixed registers modified by performing the call.
+That is, by the call pattern itself, or by code that might be inserted by the
+linker (e.g. stubs, veneers, branch islands), but not including those
+modifiable by the callee. The affected registers may be mentioned explicitly
+in the call pattern, or included as clobbers in CALL_INSN_FUNCTION_USAGE.
+The default version of this hook is set to false. The purpose of this hook
+is to enable the fipa-ra optimization.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Miscellaneous-poly_005fint-routines.html b/share/doc/gccint/Miscellaneous-poly_005fint-routines.html
new file mode 100644
index 0000000..b1f0d41
--- /dev/null
+++ b/share/doc/gccint/Miscellaneous-poly_005fint-routines.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Miscellaneous poly_int routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Miscellaneous poly_int routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Miscellaneous poly_int routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Guidelines-for-using-poly_005fint.html#Guidelines-for-using-poly_005fint" rel="next" title="Guidelines for using poly_int">
+<link href="Converting-poly_005fints.html#Converting-poly_005fints" rel="previous" title="Converting poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Miscellaneous-poly_005fint-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Guidelines-for-using-poly_005fint.html#Guidelines-for-using-poly_005fint" accesskey="n" rel="next">Guidelines for using <code>poly_int</code></a>, Previous: <a href="Converting-poly_005fints.html#Converting-poly_005fints" accesskey="p" rel="previous">Converting <code>poly_int</code>s</a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Miscellaneous-poly_005fint-routines-1"></a>
+<h3 class="section">10.8 Miscellaneous <code>poly_int</code> routines</h3>
+
+<dl compact="compact">
+<dt>&lsquo;<samp>print_dec (<var>value</var>, <var>file</var>, <var>sign</var>)</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>print_dec (<var>value</var>, <var>file</var>)</samp>&rsquo;</dt>
+<dd><p>Print <var>value</var> to <var>file</var> as a decimal value, interpreting
+the coefficients according to <var>sign</var>. The final argument is
+optional if <var>value</var> has an inherent sign; for example,
+<code>poly_int64</code> values print as signed by default and
+<code>poly_uint64</code> values print as unsigned by default.
+</p>
+<p>This is a simply a <code>poly_int</code> version of a wide-int routine.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Miscellaneous-routines.html b/share/doc/gccint/Miscellaneous-routines.html
new file mode 100644
index 0000000..7d105a7
--- /dev/null
+++ b/share/doc/gccint/Miscellaneous-routines.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Miscellaneous routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Miscellaneous routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Miscellaneous routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Languages.html#Languages" rel="next" title="Languages">
+<link href="Exception-handling-routines.html#Exception-handling-routines" rel="previous" title="Exception handling routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Miscellaneous-routines"></a>
+<div class="header">
+<p>
+Previous: <a href="Exception-handling-routines.html#Exception-handling-routines" accesskey="p" rel="previous">Exception handling routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Miscellaneous-runtime-library-routines"></a>
+<h3 class="section">4.6 Miscellaneous runtime library routines</h3>
+
+<a name="Cache-control-functions"></a>
+<h4 class="subsection">4.6.1 Cache control functions</h4>
+<dl>
+<dt><a name="index-_005f_005fclear_005fcache"></a>Runtime Function: <em>void</em> <strong>__clear_cache</strong> <em>(char *<var>beg</var>, char *<var>end</var>)</em></dt>
+<dd><p>This function clears the instruction cache between <var>beg</var> and <var>end</var>.
+</p></dd></dl>
+
+<a name="Split-stack-functions-and-variables"></a>
+<h4 class="subsection">4.6.2 Split stack functions and variables</h4>
+<dl>
+<dt><a name="index-_005f_005fsplitstack_005ffind"></a>Runtime Function: <em>void *</em> <strong>__splitstack_find</strong> <em>(void *<var>segment_arg</var>, void *<var>sp</var>, size_t <var>len</var>, void **<var>next_segment</var>, void **<var>next_sp</var>, void **<var>initial_sp</var>)</em></dt>
+<dd><p>When using <samp>-fsplit-stack</samp>, this call may be used to iterate
+over the stack segments. It may be called like this:
+</p><div class="smallexample">
+<pre class="smallexample"> void *next_segment = NULL;
+ void *next_sp = NULL;
+ void *initial_sp = NULL;
+ void *stack;
+ size_t stack_size;
+ while ((stack = __splitstack_find (next_segment, next_sp,
+ &amp;stack_size, &amp;next_segment,
+ &amp;next_sp, &amp;initial_sp))
+ != NULL)
+ {
+ /* Stack segment starts at stack and is
+ stack_size bytes long. */
+ }
+</pre></div>
+
+<p>There is no way to iterate over the stack segments of a different
+thread. However, what is permitted is for one thread to call this
+with the <var>segment_arg</var> and <var>sp</var> arguments NULL, to pass
+<var>next_segment</var>, <var>next_sp</var>, and <var>initial_sp</var> to a different
+thread, and then to suspend one way or another. A different thread
+may run the subsequent <code>__splitstack_find</code> iterations. Of
+course, this will only work if the first thread is suspended while the
+second thread is calling <code>__splitstack_find</code>. If not, the second
+thread could be looking at the stack while it is changing, and
+anything could happen.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmorestack_005fsegments"></a>Variable: <strong>__morestack_segments</strong></dt>
+<dt><a name="index-_005f_005fmorestack_005fcurrent_005fsegment"></a>Variable: <strong>__morestack_current_segment</strong></dt>
+<dt><a name="index-_005f_005fmorestack_005finitial_005fsp"></a>Variable: <strong>__morestack_initial_sp</strong></dt>
+<dd><p>Internal variables used by the <samp>-fsplit-stack</samp> implementation.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Mnemonic-Attribute.html b/share/doc/gccint/Mnemonic-Attribute.html
new file mode 100644
index 0000000..011309a
--- /dev/null
+++ b/share/doc/gccint/Mnemonic-Attribute.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Mnemonic Attribute</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Mnemonic Attribute">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Mnemonic Attribute">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Delay-Slots.html#Delay-Slots" rel="next" title="Delay Slots">
+<link href="Constant-Attributes.html#Constant-Attributes" rel="previous" title="Constant Attributes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Mnemonic-Attribute"></a>
+<div class="header">
+<p>
+Next: <a href="Delay-Slots.html#Delay-Slots" accesskey="n" rel="next">Delay Slots</a>, Previous: <a href="Constant-Attributes.html#Constant-Attributes" accesskey="p" rel="previous">Constant Attributes</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Mnemonic-Attribute-1"></a>
+<h4 class="subsection">17.19.7 Mnemonic Attribute</h4>
+<a name="index-mnemonic-attribute"></a>
+
+<p>The <code>mnemonic</code> attribute is a string type attribute holding the
+instruction mnemonic for an insn alternative. The attribute values
+will automatically be generated by the machine description parser if
+there is an attribute definition in the md file:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;mnemonic&quot; &quot;unknown&quot; (const_string &quot;unknown&quot;))
+</pre></div>
+
+<p>The default value can be freely chosen as long as it does not collide
+with any of the instruction mnemonics. This value will be used
+whenever the machine description parser is not able to determine the
+mnemonic string. This might be the case for output templates
+containing more than a single instruction as in
+<code>&quot;mvcle\t%0,%1,0\;jo\t.-4&quot;</code>.
+</p>
+<p>The <code>mnemonic</code> attribute set is not generated automatically if the
+instruction string is generated via C code.
+</p>
+<p>An existing <code>mnemonic</code> attribute set in an insn definition will not
+be overriden by the md file parser. That way it is possible to
+manually set the instruction mnemonics for the cases where the md file
+parser fails to determine it automatically.
+</p>
+<p>The <code>mnemonic</code> attribute is useful for dealing with instruction
+specific properties in the pipeline description without defining
+additional insn attributes.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_attr &quot;ooo_expanded&quot; &quot;&quot;
+ (cond [(eq_attr &quot;mnemonic&quot; &quot;dlr,dsgr,d,dsgf,stam,dsgfr,dlgr&quot;)
+ (const_int 1)]
+ (const_int 0)))
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Mode-Iterators.html b/share/doc/gccint/Mode-Iterators.html
new file mode 100644
index 0000000..0242935
--- /dev/null
+++ b/share/doc/gccint/Mode-Iterators.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Mode Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Mode Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Mode Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Iterators.html#Iterators" rel="up" title="Iterators">
+<link href="Defining-Mode-Iterators.html#Defining-Mode-Iterators" rel="next" title="Defining Mode Iterators">
+<link href="Iterators.html#Iterators" rel="previous" title="Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Mode-Iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Code-Iterators.html#Code-Iterators" accesskey="n" rel="next">Code Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Mode-Iterators-1"></a>
+<h4 class="subsection">17.23.1 Mode Iterators</h4>
+<a name="index-mode-iterators-in-_002emd-files"></a>
+
+<p>Ports often need to define similar patterns for two or more different modes.
+For example:
+</p>
+<ul>
+<li> If a processor has hardware support for both single and double
+floating-point arithmetic, the <code>SFmode</code> patterns tend to be
+very similar to the <code>DFmode</code> ones.
+
+</li><li> If a port uses <code>SImode</code> pointers in one configuration and
+<code>DImode</code> pointers in another, it will usually have very similar
+<code>SImode</code> and <code>DImode</code> patterns for manipulating pointers.
+</li></ul>
+
+<p>Mode iterators allow several patterns to be instantiated from one
+<samp>.md</samp> file template. They can be used with any type of
+rtx-based construct, such as a <code>define_insn</code>,
+<code>define_split</code>, or <code>define_peephole2</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators" accesskey="1">Defining Mode Iterators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining a new mode iterator.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Substitutions.html#Substitutions" accesskey="2">Substitutions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Combining mode iterators with substitutions
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Examples.html#Examples" accesskey="3">Examples</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Examples
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Mode-Switching.html b/share/doc/gccint/Mode-Switching.html
new file mode 100644
index 0000000..d22e6a7
--- /dev/null
+++ b/share/doc/gccint/Mode-Switching.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Mode Switching</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Mode Switching">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Mode Switching">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Target-Attributes.html#Target-Attributes" rel="next" title="Target Attributes">
+<link href="Floating-Point.html#Floating-Point" rel="previous" title="Floating Point">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Mode-Switching"></a>
+<div class="header">
+<p>
+Next: <a href="Target-Attributes.html#Target-Attributes" accesskey="n" rel="next">Target Attributes</a>, Previous: <a href="Floating-Point.html#Floating-Point" accesskey="p" rel="previous">Floating Point</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Mode-Switching-Instructions"></a>
+<h3 class="section">18.23 Mode Switching Instructions</h3>
+<a name="index-mode-switching"></a>
+<p>The following macros control mode switching optimizations:
+</p>
+<dl>
+<dt><a name="index-OPTIMIZE_005fMODE_005fSWITCHING"></a>Macro: <strong>OPTIMIZE_MODE_SWITCHING</strong> <em>(<var>entity</var>)</em></dt>
+<dd><p>Define this macro if the port needs extra instructions inserted for mode
+switching in an optimizing compilation.
+</p>
+<p>For an example, the SH4 can perform both single and double precision
+floating point operations, but to perform a single precision operation,
+the FPSCR PR bit has to be cleared, while for a double precision
+operation, this bit has to be set. Changing the PR bit requires a general
+purpose register as a scratch register, hence these FPSCR sets have to
+be inserted before reload, i.e. you cannot put this into instruction emitting
+or <code>TARGET_MACHINE_DEPENDENT_REORG</code>.
+</p>
+<p>You can have multiple entities that are mode-switched, and select at run time
+which entities actually need it. <code>OPTIMIZE_MODE_SWITCHING</code> should
+return nonzero for any <var>entity</var> that needs mode-switching.
+If you define this macro, you also have to define
+<code>NUM_MODES_FOR_MODE_SWITCHING</code>, <code>TARGET_MODE_NEEDED</code>,
+<code>TARGET_MODE_PRIORITY</code> and <code>TARGET_MODE_EMIT</code>.
+<code>TARGET_MODE_AFTER</code>, <code>TARGET_MODE_ENTRY</code>, and <code>TARGET_MODE_EXIT</code>
+are optional.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NUM_005fMODES_005fFOR_005fMODE_005fSWITCHING"></a>Macro: <strong>NUM_MODES_FOR_MODE_SWITCHING</strong></dt>
+<dd><p>If you define <code>OPTIMIZE_MODE_SWITCHING</code>, you have to define this as
+initializer for an array of integers. Each initializer element
+N refers to an entity that needs mode switching, and specifies the number
+of different modes that might need to be set for this entity.
+The position of the initializer in the initializer&mdash;starting counting at
+zero&mdash;determines the integer that is used to refer to the mode-switched
+entity in question.
+In macros that take mode arguments / yield a mode result, modes are
+represented as numbers 0 &hellip; N - 1. N is used to specify that no mode
+switch is needed / supplied.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fEMIT"></a>Target Hook: <em>void</em> <strong>TARGET_MODE_EMIT</strong> <em>(int <var>entity</var>, int <var>mode</var>, int <var>prev_mode</var>, HARD_REG_SET <var>regs_live</var>)</em></dt>
+<dd><p>Generate one or more insns to set <var>entity</var> to <var>mode</var>.
+<var>hard_reg_live</var> is the set of hard registers live at the point where
+the insn(s) are to be inserted. <var>prev_moxde</var> indicates the mode
+to switch from. Sets of a lower numbered entity will be emitted before
+sets of a higher numbered entity to a mode of the same or lower priority.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fNEEDED"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_NEEDED</strong> <em>(int <var>entity</var>, rtx_insn *<var>insn</var>)</em></dt>
+<dd><p><var>entity</var> is an integer specifying a mode-switched entity.
+If <code>OPTIMIZE_MODE_SWITCHING</code> is defined, you must define this macro
+to return an integer value not larger than the corresponding element
+in <code>NUM_MODES_FOR_MODE_SWITCHING</code>, to denote the mode that <var>entity</var>
+must be switched into prior to the execution of <var>insn</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fAFTER"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_AFTER</strong> <em>(int <var>entity</var>, int <var>mode</var>, rtx_insn *<var>insn</var>)</em></dt>
+<dd><p><var>entity</var> is an integer specifying a mode-switched entity.
+If this macro is defined, it is evaluated for every <var>insn</var> during mode
+switching. It determines the mode that an insn results
+in (if different from the incoming mode).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fENTRY"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_ENTRY</strong> <em>(int <var>entity</var>)</em></dt>
+<dd><p>If this macro is defined, it is evaluated for every <var>entity</var> that
+needs mode switching. It should evaluate to an integer, which is a mode
+that <var>entity</var> is assumed to be switched to at function entry.
+If <code>TARGET_MODE_ENTRY</code> is defined then <code>TARGET_MODE_EXIT</code>
+must be defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fEXIT"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_EXIT</strong> <em>(int <var>entity</var>)</em></dt>
+<dd><p>If this macro is defined, it is evaluated for every <var>entity</var> that
+needs mode switching. It should evaluate to an integer, which is a mode
+that <var>entity</var> is assumed to be switched to at function exit.
+If <code>TARGET_MODE_EXIT</code> is defined then <code>TARGET_MODE_ENTRY</code>
+must be defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODE_005fPRIORITY"></a>Target Hook: <em>int</em> <strong>TARGET_MODE_PRIORITY</strong> <em>(int <var>entity</var>, int <var>n</var>)</em></dt>
+<dd><p>This macro specifies the order in which modes for <var>entity</var>
+are processed. 0 is the highest priority,
+<code>NUM_MODES_FOR_MODE_SWITCHING[<var>entity</var>] - 1</code> the lowest.
+The value of the macro should be an integer designating a mode
+for <var>entity</var>. For any fixed <var>entity</var>, <code>mode_priority</code>
+(<var>entity</var>, <var>n</var>) shall be a bijection in 0 &hellip;
+<code>num_modes_for_mode_switching[<var>entity</var>] - 1</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Target-Attributes.html#Target-Attributes" accesskey="n" rel="next">Target Attributes</a>, Previous: <a href="Floating-Point.html#Floating-Point" accesskey="p" rel="previous">Floating Point</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Modifiers.html b/share/doc/gccint/Modifiers.html
new file mode 100644
index 0000000..40ed5b6
--- /dev/null
+++ b/share/doc/gccint/Modifiers.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Modifiers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Modifiers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Modifiers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Machine-Constraints.html#Machine-Constraints" rel="next" title="Machine Constraints">
+<link href="Class-Preferences.html#Class-Preferences" rel="previous" title="Class Preferences">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Modifiers"></a>
+<div class="header">
+<p>
+Next: <a href="Machine-Constraints.html#Machine-Constraints" accesskey="n" rel="next">Machine Constraints</a>, Previous: <a href="Class-Preferences.html#Class-Preferences" accesskey="p" rel="previous">Class Preferences</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Constraint-Modifier-Characters"></a>
+<h4 class="subsection">17.8.4 Constraint Modifier Characters</h4>
+<a name="index-modifiers-in-constraints"></a>
+<a name="index-constraint-modifier-characters"></a>
+
+<p>Here are constraint modifier characters.
+</p>
+<dl compact="compact">
+<dd><a name="index-_003d-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>=</samp>&rsquo;</dt>
+<dd><p>Means that this operand is written to by this instruction:
+the previous value is discarded and replaced by new data.
+</p>
+<a name="index-_002b-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>+</samp>&rsquo;</dt>
+<dd><p>Means that this operand is both read and written by the instruction.
+</p>
+<p>When the compiler fixes up the operands to satisfy the constraints,
+it needs to know which operands are read by the instruction and
+which are written by it. &lsquo;<samp>=</samp>&rsquo; identifies an operand which is only
+written; &lsquo;<samp>+</samp>&rsquo; identifies an operand that is both read and written; all
+other operands are assumed to only be read.
+</p>
+<p>If you specify &lsquo;<samp>=</samp>&rsquo; or &lsquo;<samp>+</samp>&rsquo; in a constraint, you put it in the
+first character of the constraint string.
+</p>
+<a name="index-_0026-in-constraint"></a>
+<a name="index-earlyclobber-operand"></a>
+</dd>
+<dt>&lsquo;<samp>&amp;</samp>&rsquo;</dt>
+<dd><p>Means (in a particular alternative) that this operand is an
+<em>earlyclobber</em> operand, which is written before the instruction is
+finished using the input operands. Therefore, this operand may not lie
+in a register that is read by the instruction or as part of any memory
+address.
+</p>
+<p>&lsquo;<samp>&amp;</samp>&rsquo; applies only to the alternative in which it is written. In
+constraints with multiple alternatives, sometimes one alternative
+requires &lsquo;<samp>&amp;</samp>&rsquo; while others do not. See, for example, the
+&lsquo;<samp>movdf</samp>&rsquo; insn of the 68000.
+</p>
+<p>An operand which is read by the instruction can be tied to an earlyclobber
+operand if its only use as an input occurs before the early result is
+written. Adding alternatives of this form often allows GCC to produce
+better code when only some of the read operands can be affected by the
+earlyclobber. See, for example, the &lsquo;<samp>mulsi3</samp>&rsquo; insn of the ARM.
+</p>
+<p>Furthermore, if the <em>earlyclobber</em> operand is also a read/write
+operand, then that operand is written only after it&rsquo;s used.
+</p>
+<p>&lsquo;<samp>&amp;</samp>&rsquo; does not obviate the need to write &lsquo;<samp>=</samp>&rsquo; or &lsquo;<samp>+</samp>&rsquo;. As
+<em>earlyclobber</em> operands are always written, a read-only
+<em>earlyclobber</em> operand is ill-formed and will be rejected by the
+compiler.
+</p>
+<a name="index-_0025-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>%</samp>&rsquo;</dt>
+<dd><p>Declares the instruction to be commutative for this operand and the
+following operand. This means that the compiler may interchange the
+two operands if that is the cheapest way to make all operands fit the
+constraints. &lsquo;<samp>%</samp>&rsquo; applies to all alternatives and must appear as
+the first character in the constraint. Only read-only operands can use
+&lsquo;<samp>%</samp>&rsquo;.
+</p>
+<p>This is often used in patterns for addition instructions
+that really have only two operands: the result must go in one of the
+arguments. Here for example, is how the 68000 halfword-add
+instruction is defined:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;addhi3&quot;
+ [(set (match_operand:HI 0 &quot;general_operand&quot; &quot;=m,r&quot;)
+ (plus:HI (match_operand:HI 1 &quot;general_operand&quot; &quot;%0,0&quot;)
+ (match_operand:HI 2 &quot;general_operand&quot; &quot;di,g&quot;)))]
+ &hellip;)
+</pre></div>
+<p>GCC can only handle one commutative pair in an asm; if you use more,
+the compiler may fail. Note that you need not use the modifier if
+the two alternatives are strictly identical; this would only waste
+time in the reload pass.
+The modifier is not operational after
+register allocation, so the result of <code>define_peephole2</code>
+and <code>define_split</code>s performed after reload cannot rely on
+&lsquo;<samp>%</samp>&rsquo; to make the intended insn match.
+</p>
+<a name="index-_0023-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>#</samp>&rsquo;</dt>
+<dd><p>Says that all following characters, up to the next comma, are to be
+ignored as a constraint. They are significant only for choosing
+register preferences.
+</p>
+<a name="index-_002a-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>*</samp>&rsquo;</dt>
+<dd><p>Says that the following character should be ignored when choosing
+register preferences. &lsquo;<samp>*</samp>&rsquo; has no effect on the meaning of the
+constraint as a constraint, and no effect on reloading. For LRA
+&lsquo;<samp>*</samp>&rsquo; additionally disparages slightly the alternative if the
+following character matches the operand.
+</p>
+<p>Here is an example: the 68000 has an instruction to sign-extend a
+halfword in a data register, and can also sign-extend a value by
+copying it into an address register. While either kind of register is
+acceptable, the constraints on an address-register destination are
+less strict, so it is best if register allocation makes an address
+register its goal. Therefore, &lsquo;<samp>*</samp>&rsquo; is used so that the &lsquo;<samp>d</samp>&rsquo;
+constraint letter (for data register) is ignored when computing
+register preferences.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;extendhisi2&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=*d,a&quot;)
+ (sign_extend:SI
+ (match_operand:HI 1 &quot;general_operand&quot; &quot;0,g&quot;)))]
+ &hellip;)
+</pre></div>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Machine-Constraints.html#Machine-Constraints" accesskey="n" rel="next">Machine Constraints</a>, Previous: <a href="Class-Preferences.html#Class-Preferences" accesskey="p" rel="previous">Class Preferences</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Multi_002dAlternative.html b/share/doc/gccint/Multi_002dAlternative.html
new file mode 100644
index 0000000..f6e4564
--- /dev/null
+++ b/share/doc/gccint/Multi_002dAlternative.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Multi-Alternative</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Multi-Alternative">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Multi-Alternative">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Class-Preferences.html#Class-Preferences" rel="next" title="Class Preferences">
+<link href="Simple-Constraints.html#Simple-Constraints" rel="previous" title="Simple Constraints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Multi_002dAlternative"></a>
+<div class="header">
+<p>
+Next: <a href="Class-Preferences.html#Class-Preferences" accesskey="n" rel="next">Class Preferences</a>, Previous: <a href="Simple-Constraints.html#Simple-Constraints" accesskey="p" rel="previous">Simple Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Multiple-Alternative-Constraints"></a>
+<h4 class="subsection">17.8.2 Multiple Alternative Constraints</h4>
+<a name="index-multiple-alternative-constraints"></a>
+
+<p>Sometimes a single instruction has multiple alternative sets of possible
+operands. For example, on the 68000, a logical-or instruction can combine
+register or an immediate value into memory, or it can combine any kind of
+operand into a register; but it cannot combine one memory location into
+another.
+</p>
+<p>These constraints are represented as multiple alternatives. An alternative
+can be described by a series of letters for each operand. The overall
+constraint for an operand is made from the letters for this operand
+from the first alternative, a comma, the letters for this operand from
+the second alternative, a comma, and so on until the last alternative.
+All operands for a single instruction must have the same number of
+alternatives.
+Here is how it is done for fullword logical-or on the 68000:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;iorsi3&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=m,d&quot;)
+ (ior:SI (match_operand:SI 1 &quot;general_operand&quot; &quot;%0,0&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;dKs,dmKs&quot;)))]
+ &hellip;)
+</pre></div>
+
+<p>The first alternative has &lsquo;<samp>m</samp>&rsquo; (memory) for operand 0, &lsquo;<samp>0</samp>&rsquo; for
+operand 1 (meaning it must match operand 0), and &lsquo;<samp>dKs</samp>&rsquo; for operand
+2. The second alternative has &lsquo;<samp>d</samp>&rsquo; (data register) for operand 0,
+&lsquo;<samp>0</samp>&rsquo; for operand 1, and &lsquo;<samp>dmKs</samp>&rsquo; for operand 2. The &lsquo;<samp>=</samp>&rsquo; and
+&lsquo;<samp>%</samp>&rsquo; in the constraints apply to all the alternatives; their
+meaning is explained in a later section (see <a href="Modifiers.html#Modifiers">Modifiers</a>).
+</p>
+<p>If all the operands fit any one alternative, the instruction is valid.
+Otherwise, for each alternative, the compiler counts how many instructions
+must be added to copy the operands so that that alternative applies.
+The alternative requiring the least copying is chosen. If two alternatives
+need the same amount of copying, the one that comes first is chosen.
+These choices can be altered with the &lsquo;<samp>?</samp>&rsquo; and &lsquo;<samp>!</samp>&rsquo; characters:
+</p>
+<dl compact="compact">
+<dd><a name="index-_003f-in-constraint"></a>
+<a name="index-question-mark"></a>
+</dd>
+<dt><code>?</code></dt>
+<dd><p>Disparage slightly the alternative that the &lsquo;<samp>?</samp>&rsquo; appears in,
+as a choice when no alternative applies exactly. The compiler regards
+this alternative as one unit more costly for each &lsquo;<samp>?</samp>&rsquo; that appears
+in it.
+</p>
+<a name="index-_0021-in-constraint"></a>
+<a name="index-exclamation-point"></a>
+</dd>
+<dt><code>!</code></dt>
+<dd><p>Disparage severely the alternative that the &lsquo;<samp>!</samp>&rsquo; appears in.
+This alternative can still be used if it fits without reloading,
+but if reloading is needed, some other alternative will be used.
+</p>
+<a name="index-_005e-in-constraint"></a>
+<a name="index-caret"></a>
+</dd>
+<dt><code>^</code></dt>
+<dd><p>This constraint is analogous to &lsquo;<samp>?</samp>&rsquo; but it disparages slightly
+the alternative only if the operand with the &lsquo;<samp>^</samp>&rsquo; needs a reload.
+</p>
+<a name="index-_0024-in-constraint"></a>
+<a name="index-dollar-sign"></a>
+</dd>
+<dt><code>$</code></dt>
+<dd><p>This constraint is analogous to &lsquo;<samp>!</samp>&rsquo; but it disparages severely
+the alternative only if the operand with the &lsquo;<samp>$</samp>&rsquo; needs a reload.
+</p></dd>
+</dl>
+
+<p>When an insn pattern has multiple alternatives in its constraints, often
+the appearance of the assembler code is determined mostly by which
+alternative was matched. When this is so, the C code for writing the
+assembler code can use the variable <code>which_alternative</code>, which is
+the ordinal number of the alternative that was actually satisfied (0 for
+the first, 1 for the second alternative, etc.). See <a href="Output-Statement.html#Output-Statement">Output Statement</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Class-Preferences.html#Class-Preferences" accesskey="n" rel="next">Class Preferences</a>, Previous: <a href="Simple-Constraints.html#Simple-Constraints" accesskey="p" rel="previous">Simple Constraints</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Named-Address-Spaces.html b/share/doc/gccint/Named-Address-Spaces.html
new file mode 100644
index 0000000..584ab8b
--- /dev/null
+++ b/share/doc/gccint/Named-Address-Spaces.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Named Address Spaces</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Named Address Spaces">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Named Address Spaces">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Misc.html#Misc" rel="next" title="Misc">
+<link href="D-Language-and-ABI.html#D-Language-and-ABI" rel="previous" title="D Language and ABI">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Named-Address-Spaces"></a>
+<div class="header">
+<p>
+Next: <a href="Misc.html#Misc" accesskey="n" rel="next">Misc</a>, Previous: <a href="D-Language-and-ABI.html#D-Language-and-ABI" accesskey="p" rel="previous">D Language and ABI</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adding-support-for-named-address-spaces"></a>
+<h3 class="section">18.30 Adding support for named address spaces</h3>
+<a name="index-named-address-spaces"></a>
+
+<p>The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275
+standards committee, <cite>Programming Languages - C - Extensions to
+support embedded processors</cite>, specifies a syntax for embedded
+processors to specify alternate address spaces. You can configure a
+GCC port to support section 5.1 of the draft report to add support for
+address spaces other than the default address space. These address
+spaces are new keywords that are similar to the <code>volatile</code> and
+<code>const</code> type attributes.
+</p>
+<p>Pointers to named address spaces can have a different size than
+pointers to the generic address space.
+</p>
+<p>For example, the SPU port uses the <code>__ea</code> address space to refer
+to memory in the host processor, rather than memory local to the SPU
+processor. Access to memory in the <code>__ea</code> address space involves
+issuing DMA operations to move data between the host processor and the
+local processor memory address space. Pointers in the <code>__ea</code>
+address space are either 32 bits or 64 bits based on the
+<samp>-mea32</samp> or <samp>-mea64</samp> switches (native SPU pointers are
+always 32 bits).
+</p>
+<p>Internally, address spaces are represented as a small integer in the
+range 0 to 15 with address space 0 being reserved for the generic
+address space.
+</p>
+<p>To register a named address space qualifier keyword with the C front end,
+the target may call the <code>c_register_addr_space</code> routine. For example,
+the SPU port uses the following to declare <code>__ea</code> as the keyword for
+named address space #1:
+</p><div class="smallexample">
+<pre class="smallexample">#define ADDR_SPACE_EA 1
+c_register_addr_space (&quot;__ea&quot;, ADDR_SPACE_EA);
+</pre></div>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fPOINTER_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_ADDR_SPACE_POINTER_MODE</strong> <em>(addr_space_t <var>address_space</var>)</em></dt>
+<dd><p>Define this to return the machine mode to use for pointers to
+<var>address_space</var> if the target supports named address spaces.
+The default version of this hook returns <code>ptr_mode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fADDRESS_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_ADDR_SPACE_ADDRESS_MODE</strong> <em>(addr_space_t <var>address_space</var>)</em></dt>
+<dd><p>Define this to return the machine mode to use for addresses in
+<var>address_space</var> if the target supports named address spaces.
+The default version of this hook returns <code>Pmode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fVALID_005fPOINTER_005fMODE"></a>Target Hook: <em>bool</em> <strong>TARGET_ADDR_SPACE_VALID_POINTER_MODE</strong> <em>(scalar_int_mode <var>mode</var>, addr_space_t <var>as</var>)</em></dt>
+<dd><p>Define this to return nonzero if the port can handle pointers
+with machine mode <var>mode</var> to address space <var>as</var>. This target
+hook is the same as the <code>TARGET_VALID_POINTER_MODE</code> target hook,
+except that it includes explicit named address space support. The default
+version of this hook returns true for the modes returned by either the
+<code>TARGET_ADDR_SPACE_POINTER_MODE</code> or <code>TARGET_ADDR_SPACE_ADDRESS_MODE</code>
+target hooks for the given address space.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fLEGITIMATE_005fADDRESS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P</strong> <em>(machine_mode <var>mode</var>, rtx <var>exp</var>, bool <var>strict</var>, addr_space_t <var>as</var>)</em></dt>
+<dd><p>Define this to return true if <var>exp</var> is a valid address for mode
+<var>mode</var> in the named address space <var>as</var>. The <var>strict</var>
+parameter says whether strict addressing is in effect after reload has
+finished. This target hook is the same as the
+<code>TARGET_LEGITIMATE_ADDRESS_P</code> target hook, except that it includes
+explicit named address space support.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fLEGITIMIZE_005fADDRESS"></a>Target Hook: <em>rtx</em> <strong>TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS</strong> <em>(rtx <var>x</var>, rtx <var>oldx</var>, machine_mode <var>mode</var>, addr_space_t <var>as</var>)</em></dt>
+<dd><p>Define this to modify an invalid address <var>x</var> to be a valid address
+with mode <var>mode</var> in the named address space <var>as</var>. This target
+hook is the same as the <code>TARGET_LEGITIMIZE_ADDRESS</code> target hook,
+except that it includes explicit named address space support.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fSUBSET_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_ADDR_SPACE_SUBSET_P</strong> <em>(addr_space_t <var>subset</var>, addr_space_t <var>superset</var>)</em></dt>
+<dd><p>Define this to return whether the <var>subset</var> named address space is
+contained within the <var>superset</var> named address space. Pointers to
+a named address space that is a subset of another named address space
+will be converted automatically without a cast if used together in
+arithmetic operations. Pointers to a superset address space can be
+converted to pointers to a subset address space via explicit casts.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fZERO_005fADDRESS_005fVALID"></a>Target Hook: <em>bool</em> <strong>TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID</strong> <em>(addr_space_t <var>as</var>)</em></dt>
+<dd><p>Define this to modify the default handling of address 0 for the
+address space. Return true if 0 should be considered a valid address.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fCONVERT"></a>Target Hook: <em>rtx</em> <strong>TARGET_ADDR_SPACE_CONVERT</strong> <em>(rtx <var>op</var>, tree <var>from_type</var>, tree <var>to_type</var>)</em></dt>
+<dd><p>Define this to convert the pointer expression represented by the RTL
+<var>op</var> with type <var>from_type</var> that points to a named address
+space to a new pointer expression with type <var>to_type</var> that points
+to a different named address space. When this hook it called, it is
+guaranteed that one of the two address spaces is a subset of the other,
+as determined by the <code>TARGET_ADDR_SPACE_SUBSET_P</code> target hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fDEBUG"></a>Target Hook: <em>int</em> <strong>TARGET_ADDR_SPACE_DEBUG</strong> <em>(addr_space_t <var>as</var>)</em></dt>
+<dd><p>Define this to define how the address space is encoded in dwarf.
+The result is the value to be used with <code>DW_AT_address_class</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDR_005fSPACE_005fDIAGNOSE_005fUSAGE"></a>Target Hook: <em>void</em> <strong>TARGET_ADDR_SPACE_DIAGNOSE_USAGE</strong> <em>(addr_space_t <var>as</var>, location_t <var>loc</var>)</em></dt>
+<dd><p>Define this hook if the availability of an address space depends on
+command line options and some diagnostics should be printed when the
+address space is used. This hook is called during parsing and allows
+to emit a better diagnostic compared to the case where the address space
+was not registered with <code>c_register_addr_space</code>. <var>as</var> is
+the address space as registered with <code>c_register_addr_space</code>.
+<var>loc</var> is the location of the address space qualifier token.
+The default implementation does nothing.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Misc.html#Misc" accesskey="n" rel="next">Misc</a>, Previous: <a href="D-Language-and-ABI.html#D-Language-and-ABI" accesskey="p" rel="previous">D Language and ABI</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Namespaces.html b/share/doc/gccint/Namespaces.html
new file mode 100644
index 0000000..f2f40af
--- /dev/null
+++ b/share/doc/gccint/Namespaces.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Namespaces</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Namespaces">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Namespaces">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="Classes.html#Classes" rel="next" title="Classes">
+<link href="Types-for-C_002b_002b.html#Types-for-C_002b_002b" rel="previous" title="Types for C++">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Namespaces"></a>
+<div class="header">
+<p>
+Next: <a href="Classes.html#Classes" accesskey="n" rel="next">Classes</a>, Previous: <a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b" accesskey="p" rel="previous">Types for C++</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Namespaces-1"></a>
+<h4 class="subsection">11.10.2 Namespaces</h4>
+<a name="index-namespace_002c-scope"></a>
+<a name="index-NAMESPACE_005fDECL-1"></a>
+
+<p>The root of the entire intermediate representation is the variable
+<code>global_namespace</code>. This is the namespace specified with <code>::</code>
+in C++ source code. All other namespaces, types, variables, functions,
+and so forth can be found starting with this namespace.
+</p>
+<p>However, except for the fact that it is distinguished as the root of the
+representation, the global namespace is no different from any other
+namespace. Thus, in what follows, we describe namespaces generally,
+rather than the global namespace in particular.
+</p>
+<p>A namespace is represented by a <code>NAMESPACE_DECL</code> node.
+</p>
+<p>The following macros and functions can be used on a <code>NAMESPACE_DECL</code>:
+</p>
+<dl compact="compact">
+<dt><code>DECL_NAME</code>
+<a name="index-DECL_005fNAME-3"></a>
+</dt>
+<dd><p>This macro is used to obtain the <code>IDENTIFIER_NODE</code> corresponding to
+the unqualified name of the name of the namespace (see <a href="Identifiers.html#Identifiers">Identifiers</a>).
+The name of the global namespace is &lsquo;<samp>::</samp>&rsquo;, even though in C++ the
+global namespace is unnamed. However, you should use comparison with
+<code>global_namespace</code>, rather than <code>DECL_NAME</code> to determine
+whether or not a namespace is the global one. An unnamed namespace
+will have a <code>DECL_NAME</code> equal to <code>anonymous_namespace_name</code>.
+Within a single translation unit, all unnamed namespaces will have the
+same name.
+</p>
+</dd>
+<dt><code>DECL_CONTEXT</code>
+<a name="index-DECL_005fCONTEXT"></a>
+</dt>
+<dd><p>This macro returns the enclosing namespace. The <code>DECL_CONTEXT</code> for
+the <code>global_namespace</code> is <code>NULL_TREE</code>.
+</p>
+</dd>
+<dt><code>DECL_NAMESPACE_ALIAS</code>
+<a name="index-DECL_005fNAMESPACE_005fALIAS"></a>
+</dt>
+<dd><p>If this declaration is for a namespace alias, then
+<code>DECL_NAMESPACE_ALIAS</code> is the namespace for which this one is an
+alias.
+</p>
+<p>Do not attempt to use <code>cp_namespace_decls</code> for a namespace which is
+an alias. Instead, follow <code>DECL_NAMESPACE_ALIAS</code> links until you
+reach an ordinary, non-alias, namespace, and call
+<code>cp_namespace_decls</code> there.
+</p>
+</dd>
+<dt><code>DECL_NAMESPACE_STD_P</code>
+<a name="index-DECL_005fNAMESPACE_005fSTD_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the namespace is the special <code>::std</code>
+namespace.
+</p>
+</dd>
+<dt><code>cp_namespace_decls</code>
+<a name="index-cp_005fnamespace_005fdecls"></a>
+</dt>
+<dd><p>This function will return the declarations contained in the namespace,
+including types, overloaded functions, other namespaces, and so forth.
+If there are no declarations, this function will return
+<code>NULL_TREE</code>. The declarations are connected through their
+<code>TREE_CHAIN</code> fields.
+</p>
+<p>Although most entries on this list will be declarations,
+<code>TREE_LIST</code> nodes may also appear. In this case, the
+<code>TREE_VALUE</code> will be an <code>OVERLOAD</code>. The value of the
+<code>TREE_PURPOSE</code> is unspecified; back ends should ignore this value.
+As with the other kinds of declarations returned by
+<code>cp_namespace_decls</code>, the <code>TREE_CHAIN</code> will point to the next
+declaration in this list.
+</p>
+<p>For more information on the kinds of declarations that can occur on this
+list, See <a href="Declarations.html#Declarations">Declarations</a>. Some declarations will not appear on this
+list. In particular, no <code>FIELD_DECL</code>, <code>LABEL_DECL</code>, or
+<code>PARM_DECL</code> nodes will appear here.
+</p>
+<p>This function cannot be used with namespaces that have
+<code>DECL_NAMESPACE_ALIAS</code> set.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Classes.html#Classes" accesskey="n" rel="next">Classes</a>, Previous: <a href="Types-for-C_002b_002b.html#Types-for-C_002b_002b" accesskey="p" rel="previous">Types for C++</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Number-of-iterations.html b/share/doc/gccint/Number-of-iterations.html
new file mode 100644
index 0000000..ff43d70
--- /dev/null
+++ b/share/doc/gccint/Number-of-iterations.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Number of iterations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Number of iterations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Number of iterations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Dependency-analysis.html#Dependency-analysis" rel="next" title="Dependency analysis">
+<link href="loop_002div.html#loop_002div" rel="previous" title="loop-iv">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Number-of-iterations"></a>
+<div class="header">
+<p>
+Next: <a href="Dependency-analysis.html#Dependency-analysis" accesskey="n" rel="next">Dependency analysis</a>, Previous: <a href="loop_002div.html#loop_002div" accesskey="p" rel="previous">loop-iv</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Number-of-iterations-analysis"></a>
+<h3 class="section">16.7 Number of iterations analysis</h3>
+<a name="index-Number-of-iterations-analysis"></a>
+
+<p>Both on GIMPLE and on RTL, there are functions available to determine
+the number of iterations of a loop, with a similar interface. The
+number of iterations of a loop in GCC is defined as the number of
+executions of the loop latch. In many cases, it is not possible to
+determine the number of iterations unconditionally &ndash; the determined
+number is correct only if some assumptions are satisfied. The analysis
+tries to verify these conditions using the information contained in the
+program; if it fails, the conditions are returned together with the
+result. The following information and conditions are provided by the
+analysis:
+</p>
+<ul>
+<li> <code>assumptions</code>: If this condition is false, the rest of
+the information is invalid.
+</li><li> <code>noloop_assumptions</code> on RTL, <code>may_be_zero</code> on GIMPLE: If
+this condition is true, the loop exits in the first iteration.
+</li><li> <code>infinite</code>: If this condition is true, the loop is infinite.
+This condition is only available on RTL. On GIMPLE, conditions for
+finiteness of the loop are included in <code>assumptions</code>.
+</li><li> <code>niter_expr</code> on RTL, <code>niter</code> on GIMPLE: The expression
+that gives number of iterations. The number of iterations is defined as
+the number of executions of the loop latch.
+</li></ul>
+
+<p>Both on GIMPLE and on RTL, it necessary for the induction variable
+analysis framework to be initialized (SCEV on GIMPLE, loop-iv on RTL).
+On GIMPLE, the results are stored to <code>struct tree_niter_desc</code>
+structure. Number of iterations before the loop is exited through a
+given exit can be determined using <code>number_of_iterations_exit</code>
+function. On RTL, the results are returned in <code>struct niter_desc</code>
+structure. The corresponding function is named
+<code>check_simple_exit</code>. There are also functions that pass through
+all the exits of a loop and try to find one with easy to determine
+number of iterations &ndash; <code>find_loop_niter</code> on GIMPLE and
+<code>find_simple_exit</code> on RTL. Finally, there are functions that
+provide the same information, but additionally cache it, so that
+repeated calls to number of iterations are not so costly &ndash;
+<code>number_of_latch_executions</code> on GIMPLE and <code>get_simple_loop_desc</code>
+on RTL.
+</p>
+<p>Note that some of these functions may behave slightly differently than
+others &ndash; some of them return only the expression for the number of
+iterations, and fail if there are some assumptions. The function
+<code>number_of_latch_executions</code> works only for single-exit loops.
+The function <code>number_of_cond_exit_executions</code> can be used to
+determine number of executions of the exit condition of a single-exit
+loop (i.e., the <code>number_of_latch_executions</code> increased by one).
+</p>
+<p>On GIMPLE, below constraint flags affect semantics of some APIs of number
+of iterations analyzer:
+</p>
+<ul>
+<li> <code>LOOP_C_INFINITE</code>: If this constraint flag is set, the loop
+is known to be infinite. APIs like <code>number_of_iterations_exit</code> can
+return false directly without doing any analysis.
+</li><li> <code>LOOP_C_FINITE</code>: If this constraint flag is set, the loop is
+known to be finite, in other words, loop&rsquo;s number of iterations can be
+computed with <code>assumptions</code> be true.
+</li></ul>
+
+<p>Generally, the constraint flags are set/cleared by consumers which are
+loop optimizers. It&rsquo;s also the consumers&rsquo; responsibility to set/clear
+constraints correctly. Failing to do that might result in hard to track
+down bugs in scev/niter consumers. One typical use case is vectorizer:
+it drives number of iterations analyzer by setting <code>LOOP_C_FINITE</code>
+and vectorizes possibly infinite loop by versioning loop with analysis
+result. In return, constraints set by consumers can also help number of
+iterations analyzer in following optimizers. For example, <code>niter</code>
+of a loop versioned under <code>assumptions</code> is valid unconditionally.
+</p>
+<p>Other constraints may be added in the future, for example, a constraint
+indicating that loops&rsquo; latch must roll thus <code>may_be_zero</code> would be
+false unconditionally.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Dependency-analysis.html#Dependency-analysis" accesskey="n" rel="next">Dependency analysis</a>, Previous: <a href="loop_002div.html#loop_002div" accesskey="p" rel="previous">loop-iv</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/OpenACC.html b/share/doc/gccint/OpenACC.html
new file mode 100644
index 0000000..0355347
--- /dev/null
+++ b/share/doc/gccint/OpenACC.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: OpenACC</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: OpenACC">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: OpenACC">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Functions.html#Functions" rel="next" title="Functions">
+<link href="OpenMP.html#OpenMP" rel="previous" title="OpenMP">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="OpenACC"></a>
+<div class="header">
+<p>
+Previous: <a href="OpenMP.html#OpenMP" accesskey="p" rel="previous">OpenMP</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="OpenACC-1"></a>
+<h4 class="subsection">11.7.8 OpenACC</h4>
+<a name="index-OACC_005fCACHE"></a>
+<a name="index-OACC_005fDATA"></a>
+<a name="index-OACC_005fDECLARE"></a>
+<a name="index-OACC_005fENTER_005fDATA"></a>
+<a name="index-OACC_005fEXIT_005fDATA"></a>
+<a name="index-OACC_005fHOST_005fDATA"></a>
+<a name="index-OACC_005fKERNELS"></a>
+<a name="index-OACC_005fLOOP"></a>
+<a name="index-OACC_005fPARALLEL"></a>
+<a name="index-OACC_005fSERIAL"></a>
+<a name="index-OACC_005fUPDATE"></a>
+
+<p>All the statements starting with <code>OACC_</code> represent directives and
+clauses used by the OpenACC API <a href="https://www.openacc.org">https://www.openacc.org</a><!-- /@w -->.
+</p>
+<dl compact="compact">
+<dt><code>OACC_CACHE</code></dt>
+<dd>
+<p>Represents <code>#pragma acc cache (var &hellip;)</code>.
+</p>
+</dd>
+<dt><code>OACC_DATA</code></dt>
+<dd>
+<p>Represents <code>#pragma acc data [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_DECLARE</code></dt>
+<dd>
+<p>Represents <code>#pragma acc declare [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_ENTER_DATA</code></dt>
+<dd>
+<p>Represents <code>#pragma acc enter data [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_EXIT_DATA</code></dt>
+<dd>
+<p>Represents <code>#pragma acc exit data [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_HOST_DATA</code></dt>
+<dd>
+<p>Represents <code>#pragma acc host_data [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_KERNELS</code></dt>
+<dd>
+<p>Represents <code>#pragma acc kernels [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_LOOP</code></dt>
+<dd>
+<p>Represents <code>#pragma acc loop [clause1 &hellip; clauseN]</code>.
+</p>
+<p>See the description of the <code>OMP_FOR</code> code.
+</p>
+</dd>
+<dt><code>OACC_PARALLEL</code></dt>
+<dd>
+<p>Represents <code>#pragma acc parallel [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_SERIAL</code></dt>
+<dd>
+<p>Represents <code>#pragma acc serial [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+<dt><code>OACC_UPDATE</code></dt>
+<dd>
+<p>Represents <code>#pragma acc update [clause1 &hellip; clauseN]</code>.
+</p>
+</dd>
+</dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/OpenMP.html b/share/doc/gccint/OpenMP.html
new file mode 100644
index 0000000..4edb113
--- /dev/null
+++ b/share/doc/gccint/OpenMP.html
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: OpenMP</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: OpenMP">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: OpenMP">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="OpenACC.html#OpenACC" rel="next" title="OpenACC">
+<link href="Cleanups.html#Cleanups" rel="previous" title="Cleanups">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="OpenMP"></a>
+<div class="header">
+<p>
+Next: <a href="OpenACC.html#OpenACC" accesskey="n" rel="next">OpenACC</a>, Previous: <a href="Cleanups.html#Cleanups" accesskey="p" rel="previous">Cleanups</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="OpenMP-1"></a>
+<h4 class="subsection">11.7.7 OpenMP</h4>
+<a name="index-OMP_005fPARALLEL"></a>
+<a name="index-OMP_005fFOR"></a>
+<a name="index-OMP_005fSIMD"></a>
+<a name="index-OMP_005fDISTRIBUTE"></a>
+<a name="index-OMP_005fTASKLOOP"></a>
+<a name="index-OMP_005fLOOP"></a>
+<a name="index-OMP_005fSECTIONS"></a>
+<a name="index-OMP_005fSINGLE"></a>
+<a name="index-OMP_005fSECTION"></a>
+<a name="index-OMP_005fMASTER"></a>
+<a name="index-OMP_005fORDERED"></a>
+<a name="index-OMP_005fCRITICAL"></a>
+<a name="index-OMP_005fRETURN"></a>
+<a name="index-OMP_005fCONTINUE"></a>
+<a name="index-OMP_005fATOMIC"></a>
+<a name="index-OMP_005fCLAUSE"></a>
+
+<p>All the statements starting with <code>OMP_</code> represent directives and
+clauses used by the OpenMP API <a href="https://www.openmp.org">https://www.openmp.org</a><!-- /@w -->.
+</p>
+<dl compact="compact">
+<dt><code>OMP_PARALLEL</code></dt>
+<dd>
+<p>Represents <code>#pragma omp parallel [clause1 &hellip; clauseN]</code>. It
+has four operands:
+</p>
+<p>Operand <code>OMP_PARALLEL_BODY</code> is valid while in GENERIC and
+High GIMPLE forms. It contains the body of code to be executed
+by all the threads. During GIMPLE lowering, this operand becomes
+<code>NULL</code> and the body is emitted linearly after
+<code>OMP_PARALLEL</code>.
+</p>
+<p>Operand <code>OMP_PARALLEL_CLAUSES</code> is the list of clauses
+associated with the directive.
+</p>
+<p>Operand <code>OMP_PARALLEL_FN</code> is created by
+<code>pass_lower_omp</code>, it contains the <code>FUNCTION_DECL</code>
+for the function that will contain the body of the parallel
+region.
+</p>
+<p>Operand <code>OMP_PARALLEL_DATA_ARG</code> is also created by
+<code>pass_lower_omp</code>. If there are shared variables to be
+communicated to the children threads, this operand will contain
+the <code>VAR_DECL</code> that contains all the shared values and
+variables.
+</p>
+</dd>
+<dt><code>OMP_FOR</code></dt>
+<dt><code>OMP_SIMD</code></dt>
+<dt><code>OMP_DISTRIBUTE</code></dt>
+<dt><code>OMP_TASKLOOP</code></dt>
+<dt><code>OMP_LOOP</code></dt>
+<dd>
+<p>Represents <code>#pragma omp for [clause1 &hellip; clauseN]</code> and
+related loop constructs (respectively).
+</p>
+<p>A single <code>OMP_FOR</code> node represents an entire nest of collapsed
+loops; as noted below, some of its arguments are vectors of length
+equal to the collapse depth, and the corresponding elements holding
+data specific to a particular loop in the nest. These vectors are
+numbered from the outside in so that the outermost loop is element 0.
+</p>
+<p>These constructs have seven operands:
+</p>
+<p>Operand <code>OMP_FOR_BODY</code> contains the loop body.
+</p>
+<p>Operand <code>OMP_FOR_CLAUSES</code> is the list of clauses
+associated with the directive.
+</p>
+<p>Operand <code>OMP_FOR_INIT</code> is a vector containing iteration
+variable initializations of the form <code>VAR = N1</code>.
+</p>
+<p>Operand <code>OMP_FOR_COND</code> is vector containing loop
+conditional expressions of the form <code>VAR {&lt;,&gt;,&lt;=,&gt;=} N2</code>.
+</p>
+<p>Operand <code>OMP_FOR_INCR</code> is a vector containing loop index
+increment expressions of the form <code>VAR {+=,-=} INCR</code>.
+</p>
+<p>Operand <code>OMP_FOR_PRE_BODY</code> contains side effect code from
+operands <code>OMP_FOR_INIT</code>, <code>OMP_FOR_COND</code> and
+<code>OMP_FOR_INCR</code>. These side effects are part of the
+<code>OMP_FOR</code> block but must be evaluated before the start of
+loop body. <code>OMP_FOR_PRE_BODY</code> specifically
+includes <code>DECL_EXPR</code>s for iteration variables that are
+declared in the nested <code>for</code> loops.
+Note this field is not a vector; it may be null, but otherwise is
+usually a statement list collecting the side effect code from all
+the collapsed loops.
+</p>
+<p>Operand <code>OMP_FOR_ORIG_DECLS</code> holds <code>VAR_DECLS</code> for the
+original user-specified iterator variables in the source code.
+In some cases, like C++ class iterators or range <code>for</code> with
+decomposition, the <code>for</code> loop is rewritten by the front end to
+use a temporary iteration variable. The purpose of this field is to
+make the original variables available to the gimplifier so it can
+adjust their data-sharing attributes and diagnose errors.
+<code>OMP_FOR_ORIG_DECLS</code> is a vector field, with each element holding
+a list of <code>VAR_DECLS</code> for the corresponding collapse level.
+</p>
+<p>The loop index variable <code>VAR</code> must be a signed integer variable,
+which is implicitly private to each thread. For rectangular loops,
+the bounds <code>N1</code> and <code>N2</code> and the increment expression
+<code>INCR</code> are required to be loop-invariant integer expressions
+that are evaluated without any synchronization. The evaluation order,
+frequency of evaluation and side effects are otherwise unspecified
+by the standard.
+</p>
+<p>For non-rectangular loops, in which the bounds of an inner loop depend
+on the index of an outer loop, the bit <code>OMP_FOR_NON_RECTANGULAR</code>
+must be set. In this case <code>N1</code> and <code>N2</code> are not ordinary
+expressions, but instead a <code>TREE_VEC</code> with three elements:
+the <code>DECL</code> for the outer loop variable, a multiplication
+factor, and an offset.
+</p>
+</dd>
+<dt><code>OMP_SECTIONS</code></dt>
+<dd>
+<p>Represents <code>#pragma omp sections [clause1 &hellip; clauseN]</code>.
+</p>
+<p>Operand <code>OMP_SECTIONS_BODY</code> contains the sections body,
+which in turn contains a set of <code>OMP_SECTION</code> nodes for
+each of the concurrent sections delimited by <code>#pragma omp
+section</code>.
+</p>
+<p>Operand <code>OMP_SECTIONS_CLAUSES</code> is the list of clauses
+associated with the directive.
+</p>
+</dd>
+<dt><code>OMP_SECTION</code></dt>
+<dd>
+<p>Section delimiter for <code>OMP_SECTIONS</code>.
+</p>
+</dd>
+<dt><code>OMP_SINGLE</code></dt>
+<dd>
+<p>Represents <code>#pragma omp single</code>.
+</p>
+<p>Operand <code>OMP_SINGLE_BODY</code> contains the body of code to be
+executed by a single thread.
+</p>
+<p>Operand <code>OMP_SINGLE_CLAUSES</code> is the list of clauses
+associated with the directive.
+</p>
+</dd>
+<dt><code>OMP_MASTER</code></dt>
+<dd>
+<p>Represents <code>#pragma omp master</code>.
+</p>
+<p>Operand <code>OMP_MASTER_BODY</code> contains the body of code to be
+executed by the master thread.
+</p>
+</dd>
+<dt><code>OMP_ORDERED</code></dt>
+<dd>
+<p>Represents <code>#pragma omp ordered</code>.
+</p>
+<p>Operand <code>OMP_ORDERED_BODY</code> contains the body of code to be
+executed in the sequential order dictated by the loop index
+variable.
+</p>
+</dd>
+<dt><code>OMP_CRITICAL</code></dt>
+<dd>
+<p>Represents <code>#pragma omp critical [name]</code>.
+</p>
+<p>Operand <code>OMP_CRITICAL_BODY</code> is the critical section.
+</p>
+<p>Operand <code>OMP_CRITICAL_NAME</code> is an optional identifier to
+label the critical section.
+</p>
+</dd>
+<dt><code>OMP_RETURN</code></dt>
+<dd>
+<p>This does not represent any OpenMP directive, it is an artificial
+marker to indicate the end of the body of an OpenMP. It is used
+by the flow graph (<code>tree-cfg.cc</code>) and OpenMP region
+building code (<code>omp-low.cc</code>).
+</p>
+</dd>
+<dt><code>OMP_CONTINUE</code></dt>
+<dd>
+<p>Similarly, this instruction does not represent an OpenMP
+directive, it is used by <code>OMP_FOR</code> (and similar codes) as well as
+<code>OMP_SECTIONS</code> to mark the place where the code needs to
+loop to the next iteration, or the next section, respectively.
+</p>
+<p>In some cases, <code>OMP_CONTINUE</code> is placed right before
+<code>OMP_RETURN</code>. But if there are cleanups that need to
+occur right after the looping body, it will be emitted between
+<code>OMP_CONTINUE</code> and <code>OMP_RETURN</code>.
+</p>
+</dd>
+<dt><code>OMP_ATOMIC</code></dt>
+<dd>
+<p>Represents <code>#pragma omp atomic</code>.
+</p>
+<p>Operand 0 is the address at which the atomic operation is to be
+performed.
+</p>
+<p>Operand 1 is the expression to evaluate. The gimplifier tries
+three alternative code generation strategies. Whenever possible,
+an atomic update built-in is used. If that fails, a
+compare-and-swap loop is attempted. If that also fails, a
+regular critical section around the expression is used.
+</p>
+</dd>
+<dt><code>OMP_CLAUSE</code></dt>
+<dd>
+<p>Represents clauses associated with one of the <code>OMP_</code> directives.
+Clauses are represented by separate subcodes defined in
+<samp>tree.h</samp>. Clauses codes can be one of:
+<code>OMP_CLAUSE_PRIVATE</code>, <code>OMP_CLAUSE_SHARED</code>,
+<code>OMP_CLAUSE_FIRSTPRIVATE</code>,
+<code>OMP_CLAUSE_LASTPRIVATE</code>, <code>OMP_CLAUSE_COPYIN</code>,
+<code>OMP_CLAUSE_COPYPRIVATE</code>, <code>OMP_CLAUSE_IF</code>,
+<code>OMP_CLAUSE_NUM_THREADS</code>, <code>OMP_CLAUSE_SCHEDULE</code>,
+<code>OMP_CLAUSE_NOWAIT</code>, <code>OMP_CLAUSE_ORDERED</code>,
+<code>OMP_CLAUSE_DEFAULT</code>, <code>OMP_CLAUSE_REDUCTION</code>,
+<code>OMP_CLAUSE_COLLAPSE</code>, <code>OMP_CLAUSE_UNTIED</code>,
+<code>OMP_CLAUSE_FINAL</code>, and <code>OMP_CLAUSE_MERGEABLE</code>. Each code
+represents the corresponding OpenMP clause.
+</p>
+<p>Clauses associated with the same directive are chained together
+via <code>OMP_CLAUSE_CHAIN</code>. Those clauses that accept a list
+of variables are restricted to exactly one, accessed with
+<code>OMP_CLAUSE_VAR</code>. Therefore, multiple variables under the
+same clause <code>C</code> need to be represented as multiple <code>C</code> clauses
+chained together. This facilitates adding new clauses during
+compilation.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="OpenACC.html#OpenACC" accesskey="n" rel="next">OpenACC</a>, Previous: <a href="Cleanups.html#Cleanups" accesskey="p" rel="previous">Cleanups</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Operands.html b/share/doc/gccint/Operands.html
new file mode 100644
index 0000000..afdd7fc
--- /dev/null
+++ b/share/doc/gccint/Operands.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Operands</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Operands">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Operands">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Compound-Expressions.html#Compound-Expressions" rel="next" title="Compound Expressions">
+<link href="Temporaries.html#Temporaries" rel="previous" title="Temporaries">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Operands"></a>
+<div class="header">
+<p>
+Next: <a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements" accesskey="n" rel="next">Manipulating GIMPLE statements</a>, Previous: <a href="Temporaries.html#Temporaries" accesskey="p" rel="previous">Temporaries</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Operands-1"></a>
+<h3 class="section">12.6 Operands</h3>
+<a name="index-Operands"></a>
+
+<p>In general, expressions in GIMPLE consist of an operation and the
+appropriate number of simple operands; these operands must either be a
+GIMPLE rvalue (<code>is_gimple_val</code>), i.e. a constant or a register
+variable. More complex operands are factored out into temporaries, so
+that
+</p><div class="smallexample">
+<pre class="smallexample">a = b + c + d
+</pre></div>
+<p>becomes
+</p><div class="smallexample">
+<pre class="smallexample">T1 = b + c;
+a = T1 + d;
+</pre></div>
+
+<p>The same rule holds for arguments to a <code>GIMPLE_CALL</code>.
+</p>
+<p>The target of an assignment is usually a variable, but can also be a
+<code>MEM_REF</code> or a compound lvalue as described below.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Compound-Expressions.html#Compound-Expressions" accesskey="1">Compound Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Compound-Lvalues.html#Compound-Lvalues" accesskey="2">Compound Lvalues</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conditional-Expressions.html#Conditional-Expressions" accesskey="3">Conditional Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Logical-Operators.html#Logical-Operators" accesskey="4">Logical Operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Optimization-groups.html b/share/doc/gccint/Optimization-groups.html
new file mode 100644
index 0000000..837fadb
--- /dev/null
+++ b/share/doc/gccint/Optimization-groups.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Optimization groups</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Optimization groups">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Optimization groups">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Optimization-info.html#Optimization-info" rel="up" title="Optimization info">
+<link href="Dump-files-and-streams.html#Dump-files-and-streams" rel="next" title="Dump files and streams">
+<link href="Dump-setup.html#Dump-setup" rel="previous" title="Dump setup">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Optimization-groups"></a>
+<div class="header">
+<p>
+Next: <a href="Dump-files-and-streams.html#Dump-files-and-streams" accesskey="n" rel="next">Dump files and streams</a>, Previous: <a href="Dump-setup.html#Dump-setup" accesskey="p" rel="previous">Dump setup</a>, Up: <a href="Optimization-info.html#Optimization-info" accesskey="u" rel="up">Optimization info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Optimization-groups-1"></a>
+<h4 class="subsection">9.7.2 Optimization groups</h4>
+<a name="index-optimization-groups"></a>
+<p>The optimization passes are grouped into several categories. Currently
+defined categories in <samp>dumpfile.h</samp> are
+</p>
+<dl compact="compact">
+<dt><code>OPTGROUP_IPA</code>
+<a name="index-OPTGROUP_005fIPA"></a>
+</dt>
+<dd><p>IPA optimization passes. Enabled by <samp>-ipa</samp>
+</p>
+</dd>
+<dt><code>OPTGROUP_LOOP</code>
+<a name="index-OPTGROUP_005fLOOP"></a>
+</dt>
+<dd><p>Loop optimization passes. Enabled by <samp>-loop</samp>.
+</p>
+</dd>
+<dt><code>OPTGROUP_INLINE</code>
+<a name="index-OPTGROUP_005fINLINE"></a>
+</dt>
+<dd><p>Inlining passes. Enabled by <samp>-inline</samp>.
+</p>
+</dd>
+<dt><code>OPTGROUP_OMP</code>
+<a name="index-OPTGROUP_005fOMP"></a>
+</dt>
+<dd><p>OMP (Offloading and Multi Processing) passes. Enabled by
+<samp>-omp</samp>.
+</p>
+</dd>
+<dt><code>OPTGROUP_VEC</code>
+<a name="index-OPTGROUP_005fVEC"></a>
+</dt>
+<dd><p>Vectorization passes. Enabled by <samp>-vec</samp>.
+</p>
+</dd>
+<dt><code>OPTGROUP_OTHER</code>
+<a name="index-OPTGROUP_005fOTHER"></a>
+</dt>
+<dd><p>All other optimization passes which do not fall into one of the above.
+</p>
+</dd>
+<dt><code>OPTGROUP_ALL</code>
+<a name="index-OPTGROUP_005fALL"></a>
+</dt>
+<dd><p>All optimization passes. Enabled by <samp>-optall</samp>.
+</p>
+</dd>
+</dl>
+
+<p>By using groups a user could selectively enable optimization
+information only for a group of passes. By default, the optimization
+information for all the passes is dumped.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Optimization-info.html b/share/doc/gccint/Optimization-info.html
new file mode 100644
index 0000000..858cd6c
--- /dev/null
+++ b/share/doc/gccint/Optimization-info.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Optimization info</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Optimization info">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Optimization info">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="Dump-setup.html#Dump-setup" rel="next" title="Dump setup">
+<link href="RTL-passes.html#RTL-passes" rel="previous" title="RTL passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Optimization-info"></a>
+<div class="header">
+<p>
+Previous: <a href="RTL-passes.html#RTL-passes" accesskey="p" rel="previous">RTL passes</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Optimization-info-1"></a>
+<h3 class="section">9.7 Optimization info</h3>
+
+<a name="index-optimization-dumps"></a>
+
+<p>This section is describes dump infrastructure which is common to both
+pass dumps as well as optimization dumps. The goal for this
+infrastructure is to provide both gcc developers and users detailed
+information about various compiler transformations and optimizations.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Dump-setup.html#Dump-setup" accesskey="1">Dump setup</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Setup of optimization dumps.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Optimization-groups.html#Optimization-groups" accesskey="2">Optimization groups</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Groups made up of optimization passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dump-files-and-streams.html#Dump-files-and-streams" accesskey="3">Dump files and streams</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dump output file names and streams.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dump-output-verbosity.html#Dump-output-verbosity" accesskey="4">Dump output verbosity</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How much information to dump.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dump-types.html#Dump-types" accesskey="5">Dump types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Various types of dump functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Dump-examples.html#Dump-examples" accesskey="6">Dump examples</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sample usage.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Option-Index.html b/share/doc/gccint/Option-Index.html
new file mode 100644
index 0000000..c0ad332
--- /dev/null
+++ b/share/doc/gccint/Option-Index.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Option Index</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Option Index">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Option Index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Concept-Index.html#Concept-Index" rel="next" title="Concept Index">
+<link href="Contributors.html#Contributors" rel="previous" title="Contributors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Option-Index"></a>
+<div class="header">
+<p>
+Next: <a href="Concept-Index.html#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="Contributors.html#Contributors" accesskey="p" rel="previous">Contributors</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Option-Index-1"></a>
+<h2 class="unnumbered">Option Index</h2>
+
+<p>GCC&rsquo;s command line options are indexed here without any initial &lsquo;<samp>-</samp>&rsquo;
+or &lsquo;<samp>--</samp>&rsquo;. Where an option has both positive and negative forms
+(such as <samp>-f<var>option</var></samp> and <samp>-fno-<var>option</var></samp>),
+relevant entries in the manual are indexed under the most appropriate
+form; it may sometimes be useful to look up both forms.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Option-Index_op_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Option-Index_op_letter-M"><b>M</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="index-op" border="0">
+<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Option-Index_op_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Internal-flags.html#index-fltrans"><code>fltrans</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Internal-flags.html#Internal-flags">Internal flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Internal-flags.html#index-fltrans_002doutput_002dlist"><code>fltrans-output-list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Internal-flags.html#Internal-flags">Internal flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Internal-flags.html#index-fresolution"><code>fresolution</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Internal-flags.html#Internal-flags">Internal flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="Internal-flags.html#index-fwpa"><code>fwpa</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Internal-flags.html#Internal-flags">Internal flags</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Option-Index_op_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Soft-float-library-routines.html#index-msoft_002dfloat"><code>msoft-float</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Soft-float-library-routines.html#Soft-float-library-routines">Soft float library routines</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Option-Index_op_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter" href="#Option-Index_op_letter-M"><b>M</b></a>
+ &nbsp;
+</td></tr></table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Option-file-format.html b/share/doc/gccint/Option-file-format.html
new file mode 100644
index 0000000..7d23247
--- /dev/null
+++ b/share/doc/gccint/Option-file-format.html
@@ -0,0 +1,267 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Option file format</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Option file format">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Option file format">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Options.html#Options" rel="up" title="Options">
+<link href="Option-properties.html#Option-properties" rel="next" title="Option properties">
+<link href="Options.html#Options" rel="previous" title="Options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Option-file-format"></a>
+<div class="header">
+<p>
+Next: <a href="Option-properties.html#Option-properties" accesskey="n" rel="next">Option properties</a>, Up: <a href="Options.html#Options" accesskey="u" rel="up">Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Option-file-format-1"></a>
+<h3 class="section">8.1 Option file format</h3>
+
+<p>Option files are a simple list of records in which each field occupies
+its own line and in which the records themselves are separated by
+blank lines. Comments may appear on their own line anywhere within
+the file and are preceded by semicolons. Whitespace is allowed before
+the semicolon.
+</p>
+<p>The files can contain the following types of record:
+</p>
+<ul>
+<li> A language definition record. These records have two fields: the
+string &lsquo;<samp>Language</samp>&rsquo; and the name of the language. Once a language
+has been declared in this way, it can be used as an option property.
+See <a href="Option-properties.html#Option-properties">Option properties</a>.
+
+</li><li> A target specific save record to save additional information. These
+records have two fields: the string &lsquo;<samp>TargetSave</samp>&rsquo;, and a
+declaration type to go in the <code>cl_target_option</code> structure.
+
+</li><li> A variable record to define a variable used to store option
+information. These records have two fields: the string
+&lsquo;<samp>Variable</samp>&rsquo;, and a declaration of the type and name of the
+variable, optionally with an initializer (but without any trailing
+&lsquo;<samp>;</samp>&rsquo;). These records may be used for variables used for many
+options where declaring the initializer in a single option definition
+record, or duplicating it in many records, would be inappropriate, or
+for variables set in option handlers rather than referenced by
+<code>Var</code> properties.
+
+</li><li> A variable record to define a variable used to store option
+information. These records have two fields: the string
+&lsquo;<samp>TargetVariable</samp>&rsquo;, and a declaration of the type and name of the
+variable, optionally with an initializer (but without any trailing
+&lsquo;<samp>;</samp>&rsquo;). &lsquo;<samp>TargetVariable</samp>&rsquo; is a combination of &lsquo;<samp>Variable</samp>&rsquo;
+and &lsquo;<samp>TargetSave</samp>&rsquo; records in that the variable is defined in the
+<code>gcc_options</code> structure, but these variables are also stored in
+the <code>cl_target_option</code> structure. The variables are saved in the
+target save code and restored in the target restore code.
+
+</li><li> A variable record to record any additional files that the
+<samp>options.h</samp> file should include. This is useful to provide
+enumeration or structure definitions needed for target variables.
+These records have two fields: the string &lsquo;<samp>HeaderInclude</samp>&rsquo; and the
+name of the include file.
+
+</li><li> A variable record to record any additional files that the
+<samp>options.cc</samp> or <samp>options-save.cc</samp> file should include. This
+is useful to provide
+inline functions needed for target variables and/or <code>#ifdef</code>
+sequences to properly set up the initialization. These records have
+two fields: the string &lsquo;<samp>SourceInclude</samp>&rsquo; and the name of the
+include file.
+
+</li><li> An enumeration record to define a set of strings that may be used as
+arguments to an option or options. These records have three fields:
+the string &lsquo;<samp>Enum</samp>&rsquo;, a space-separated list of properties and help
+text used to describe the set of strings in <samp>--help</samp> output.
+Properties use the same format as option properties; the following are
+valid:
+<dl compact="compact">
+<dt><code>Name(<var>name</var>)</code></dt>
+<dd><p>This property is required; <var>name</var> must be a name (suitable for use
+in C identifiers) used to identify the set of strings in <code>Enum</code>
+option properties.
+</p>
+</dd>
+<dt><code>Type(<var>type</var>)</code></dt>
+<dd><p>This property is required; <var>type</var> is the C type for variables set
+by options using this enumeration together with <code>Var</code>.
+</p>
+</dd>
+<dt><code>UnknownError(<var>message</var>)</code></dt>
+<dd><p>The message <var>message</var> will be used as an error message if the
+argument is invalid; for enumerations without <code>UnknownError</code>, a
+generic error message is used. <var>message</var> should contain a single
+&lsquo;<samp>%qs</samp>&rsquo; format, which will be used to format the invalid argument.
+</p></dd>
+</dl>
+
+</li><li> An enumeration value record to define one of the strings in a set
+given in an &lsquo;<samp>Enum</samp>&rsquo; record. These records have two fields: the
+string &lsquo;<samp>EnumValue</samp>&rsquo; and a space-separated list of properties.
+Properties use the same format as option properties; the following are
+valid:
+<dl compact="compact">
+<dt><code>Enum(<var>name</var>)</code></dt>
+<dd><p>This property is required; <var>name</var> says which &lsquo;<samp>Enum</samp>&rsquo; record
+this &lsquo;<samp>EnumValue</samp>&rsquo; record corresponds to.
+</p>
+</dd>
+<dt><code>String(<var>string</var>)</code></dt>
+<dd><p>This property is required; <var>string</var> is the string option argument
+being described by this record.
+</p>
+</dd>
+<dt><code>Value(<var>value</var>)</code></dt>
+<dd><p>This property is required; it says what value (representable as
+<code>int</code>) should be used for the given string.
+</p>
+</dd>
+<dt><code>Canonical</code></dt>
+<dd><p>This property is optional. If present, it says the present string is
+the canonical one among all those with the given value. Other strings
+yielding that value will be mapped to this one so specs do not need to
+handle them.
+</p>
+</dd>
+<dt><code>DriverOnly</code></dt>
+<dd><p>This property is optional. If present, the present string will only
+be accepted by the driver. This is used for cases such as
+<samp>-march=native</samp> that are processed by the driver so that
+&lsquo;<samp>gcc -v</samp>&rsquo; shows how the options chosen depended on the system on
+which the compiler was run.
+</p>
+</dd>
+<dt><code>Set(<var>number</var>)</code></dt>
+<dd><p>This property is optional, required for enumerations used in
+<code>EnumSet</code> options. <var>number</var> should be decimal number between
+1 and 64 inclusive and divides the enumeration into a set of
+sets of mutually exclusive arguments. Arguments with the same
+<var>number</var> can&rsquo;t be specified together in the same option, but
+arguments with different <var>number</var> can. <var>value</var> needs to be
+chosen such that a mask of all <var>value</var> values from the same set
+<var>number</var> bitwise ored doesn&rsquo;t overlap with masks for other sets.
+When <code>-foption=arg_from_set1,arg_from_set4</code> and
+<code>-fno-option=arg_from_set3</code> are used, the effect is that previous
+value of the <code>Var</code> will get bits from set 1 and 4 masks cleared,
+ored <code>Value</code> of <code>arg_from_set1</code> and <code>arg_from_set4</code>
+and then will get bits from set 3 mask cleared.
+</p></dd>
+</dl>
+
+</li><li> An option definition record. These records have the following fields:
+<ol>
+<li> the name of the option, with the leading &ldquo;-&rdquo; removed
+</li><li> a space-separated list of option properties (see <a href="Option-properties.html#Option-properties">Option properties</a>)
+</li><li> the help text to use for <samp>--help</samp> (omitted if the second field
+contains the <code>Undocumented</code> property).
+</li></ol>
+
+<p>By default, all options beginning with &ldquo;f&rdquo;, &ldquo;g&rdquo;, &ldquo;W&rdquo; or &ldquo;m&rdquo; are
+implicitly assumed to take a &ldquo;no-&rdquo; form. This form should not be
+listed separately. If an option beginning with one of these letters
+does not have a &ldquo;no-&rdquo; form, you can use the <code>RejectNegative</code>
+property to reject it.
+</p>
+<p>The help text is automatically line-wrapped before being displayed.
+Normally the name of the option is printed on the left-hand side of
+the output and the help text is printed on the right. However, if the
+help text contains a tab character, the text to the left of the tab is
+used instead of the option&rsquo;s name and the text to the right of the
+tab forms the help text. This allows you to elaborate on what type
+of argument the option takes.
+</p>
+<p>There is no support for different help texts for different languages.
+If an option is supported for multiple languages, use a generic
+description that is correct for all of them.
+</p>
+<p>If an option has multiple option definition records (in different
+front ends&rsquo; <samp>*.opt</samp> files, and/or <samp>gcc/common.opt</samp>, for
+example), convention is to not duplicate the help text for each of
+them, but instead put a comment like <code>; documented in common.opt</code>
+in place of the help text for all but one of the multiple option
+definition records.
+</p>
+</li><li> A target mask record. These records have one field of the form
+&lsquo;<samp>Mask(<var>x</var>)</samp>&rsquo;. The options-processing script will automatically
+allocate a bit in <code>target_flags</code> (see <a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a>) for
+each mask name <var>x</var> and set the macro <code>MASK_<var>x</var></code> to the
+appropriate bitmask. It will also declare a <code>TARGET_<var>x</var></code>
+macro that has the value 1 when bit <code>MASK_<var>x</var></code> is set and
+0 otherwise.
+
+<p>They are primarily intended to declare target masks that are not
+associated with user options, either because these masks represent
+internal switches or because the options are not available on all
+configurations and yet the masks always need to be defined.
+</p></li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Option-properties.html#Option-properties" accesskey="n" rel="next">Option properties</a>, Up: <a href="Options.html#Options" accesskey="u" rel="up">Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Option-properties.html b/share/doc/gccint/Option-properties.html
new file mode 100644
index 0000000..892d7c1
--- /dev/null
+++ b/share/doc/gccint/Option-properties.html
@@ -0,0 +1,515 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Option properties</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Option properties">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Option properties">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Options.html#Options" rel="up" title="Options">
+<link href="Passes.html#Passes" rel="next" title="Passes">
+<link href="Option-file-format.html#Option-file-format" rel="previous" title="Option file format">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Option-properties"></a>
+<div class="header">
+<p>
+Previous: <a href="Option-file-format.html#Option-file-format" accesskey="p" rel="previous">Option file format</a>, Up: <a href="Options.html#Options" accesskey="u" rel="up">Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Option-properties-1"></a>
+<h3 class="section">8.2 Option properties</h3>
+
+<p>The second field of an option record can specify any of the following
+properties. When an option takes an argument, it is enclosed in parentheses
+following the option property name. The parser that handles option files
+is quite simplistic, and will be tricked by any nested parentheses within
+the argument text itself; in this case, the entire option argument can
+be wrapped in curly braces within the parentheses to demarcate it, e.g.:
+</p>
+<div class="smallexample">
+<pre class="smallexample">Condition({defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)})
+</pre></div>
+
+<dl compact="compact">
+<dt><code>Common</code></dt>
+<dd><p>The option is available for all languages and targets.
+</p>
+</dd>
+<dt><code>Target</code></dt>
+<dd><p>The option is available for all languages but is target-specific.
+</p>
+</dd>
+<dt><code>Driver</code></dt>
+<dd><p>The option is handled by the compiler driver using code not shared
+with the compilers proper (<samp>cc1</samp> etc.).
+</p>
+</dd>
+<dt><code><var>language</var></code></dt>
+<dd><p>The option is available when compiling for the given language.
+</p>
+<p>It is possible to specify several different languages for the same
+option. Each <var>language</var> must have been declared by an earlier
+<code>Language</code> record. See <a href="Option-file-format.html#Option-file-format">Option file format</a>.
+</p>
+</dd>
+<dt><code>RejectDriver</code></dt>
+<dd><p>The option is only handled by the compilers proper (<samp>cc1</samp> etc.)
+and should not be accepted by the driver.
+</p>
+</dd>
+<dt><code>RejectNegative</code></dt>
+<dd><p>The option does not have a &ldquo;no-&rdquo; form. All options beginning with
+&ldquo;f&rdquo;, &ldquo;g&rdquo;, &ldquo;W&rdquo; or &ldquo;m&rdquo; are assumed to have a &ldquo;no-&rdquo; form unless
+this property is used.
+</p>
+</dd>
+<dt><code>Negative(<var>othername</var>)</code></dt>
+<dd><p>The option will turn off another option <var>othername</var>, which is
+the option name with the leading &ldquo;-&rdquo; removed. This chain action will
+propagate through the <code>Negative</code> property of the option to be
+turned off. The driver will prune options, removing those that are
+turned off by some later option. This pruning is not done for options
+with <code>Joined</code> or <code>JoinedOrMissing</code> properties, unless the
+options have both the <code>RejectNegative</code> property and the <code>Negative</code>
+property mentions itself.
+</p>
+<p>As a consequence, if you have a group of mutually-exclusive
+options, their <code>Negative</code> properties should form a circular chain.
+For example, if options <samp>-<var>a</var></samp>, <samp>-<var>b</var></samp> and
+<samp>-<var>c</var></samp> are mutually exclusive, their respective <code>Negative</code>
+properties should be &lsquo;<samp>Negative(<var>b</var>)</samp>&rsquo;, &lsquo;<samp>Negative(<var>c</var>)</samp>&rsquo;
+and &lsquo;<samp>Negative(<var>a</var>)</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>Joined</code></dt>
+<dt><code>Separate</code></dt>
+<dd><p>The option takes a mandatory argument. <code>Joined</code> indicates
+that the option and argument can be included in the same <code>argv</code>
+entry (as with <code>-mflush-func=<var>name</var></code>, for example).
+<code>Separate</code> indicates that the option and argument can be
+separate <code>argv</code> entries (as with <code>-o</code>). An option is
+allowed to have both of these properties.
+</p>
+</dd>
+<dt><code>JoinedOrMissing</code></dt>
+<dd><p>The option takes an optional argument. If the argument is given,
+it will be part of the same <code>argv</code> entry as the option itself.
+</p>
+<p>This property cannot be used alongside <code>Joined</code> or <code>Separate</code>.
+</p>
+</dd>
+<dt><code>MissingArgError(<var>message</var>)</code></dt>
+<dd><p>For an option marked <code>Joined</code> or <code>Separate</code>, the message
+<var>message</var> will be used as an error message if the mandatory
+argument is missing; for options without <code>MissingArgError</code>, a
+generic error message is used. <var>message</var> should contain a single
+&lsquo;<samp>%qs</samp>&rsquo; format, which will be used to format the name of the option
+passed.
+</p>
+</dd>
+<dt><code>Args(<var>n</var>)</code></dt>
+<dd><p>For an option marked <code>Separate</code>, indicate that it takes <var>n</var>
+arguments. The default is 1.
+</p>
+</dd>
+<dt><code>UInteger</code></dt>
+<dd><p>The option&rsquo;s argument is a non-negative integer consisting of either
+decimal or hexadecimal digits interpreted as <code>int</code>. Hexadecimal
+integers may optionally start with the <code>0x</code> or <code>0X</code> prefix.
+The option parser validates and converts the argument before passing
+it to the relevant option handler. <code>UInteger</code> should also be used
+with options like <code>-falign-loops</code> where both <code>-falign-loops</code>
+and <code>-falign-loops</code>=<var>n</var> are supported to make sure the saved
+options are given a full integer. Positive values of the argument in
+excess of <code>INT_MAX</code> wrap around zero.
+</p>
+</dd>
+<dt><code>Host_Wide_Int</code></dt>
+<dd><p>The option&rsquo;s argument is a non-negative integer consisting of either
+decimal or hexadecimal digits interpreted as the widest integer type
+on the host. As with an <code>UInteger</code> argument, hexadecimal integers
+may optionally start with the <code>0x</code> or <code>0X</code> prefix. The option
+parser validates and converts the argument before passing it to
+the relevant option handler. <code>Host_Wide_Int</code> should be used with
+options that need to accept very large values. Positive values of
+the argument in excess of <code>HOST_WIDE_INT_M1U</code> are assigned
+<code>HOST_WIDE_INT_M1U</code>.
+</p>
+</dd>
+<dt><code>IntegerRange(<var>n</var>, <var>m</var>)</code></dt>
+<dd><p>The options&rsquo;s arguments are integers of type <code>int</code>. The option&rsquo;s
+parser validates that the value of an option integer argument is within
+the closed range [<var>n</var>, <var>m</var>].
+</p>
+</dd>
+<dt><code>ByteSize</code></dt>
+<dd><p>A property applicable only to <code>UInteger</code> or <code>Host_Wide_Int</code>
+arguments. The option&rsquo;s integer argument is interpreted as if in infinite
+precision using saturation arithmetic in the corresponding type. The argument
+may be followed by a &lsquo;<samp>byte-size</samp>&rsquo; suffix designating a multiple of bytes
+such as <code>kB</code> and <code>KiB</code> for kilobyte and kibibyte, respectively,
+<code>MB</code> and <code>MiB</code> for megabyte and mebibyte, <code>GB</code> and <code>GiB</code>
+for gigabyte and gigibyte, and so on. <code>ByteSize</code> should be used for
+with options that take a very large argument representing a size in bytes,
+such as <samp>-Wlarger-than=</samp>.
+</p>
+</dd>
+<dt><code>ToLower</code></dt>
+<dd><p>The option&rsquo;s argument should be converted to lowercase as part of
+putting it in canonical form, and before comparing with the strings
+indicated by any <code>Enum</code> property.
+</p>
+</dd>
+<dt><code>NoDriverArg</code></dt>
+<dd><p>For an option marked <code>Separate</code>, the option only takes an
+argument in the compiler proper, not in the driver. This is for
+compatibility with existing options that are used both directly and
+via <samp>-Wp,</samp>; new options should not have this property.
+</p>
+</dd>
+<dt><code>Var(<var>var</var>)</code></dt>
+<dd><p>The state of this option should be stored in variable <var>var</var>
+(actually a macro for <code>global_options.x_<var>var</var></code>).
+The way that the state is stored depends on the type of option:
+</p>
+<ul>
+<li> If the option uses the <code>Mask</code> or <code>InverseMask</code> properties,
+<var>var</var> is the integer variable that contains the mask.
+
+</li><li> If the option is a normal on/off switch, <var>var</var> is an integer
+variable that is nonzero when the option is enabled. The options
+parser will set the variable to 1 when the positive form of the
+option is used and 0 when the &ldquo;no-&rdquo; form is used.
+
+</li><li> If the option takes an argument and has the <code>UInteger</code> property,
+<var>var</var> is an integer variable that stores the value of the argument.
+
+</li><li> If the option takes an argument and has the <code>Enum</code> property,
+<var>var</var> is a variable (type given in the <code>Type</code> property of the
+&lsquo;<samp>Enum</samp>&rsquo; record whose <code>Name</code> property has the same argument as
+the <code>Enum</code> property of this option) that stores the value of the
+argument.
+
+</li><li> If the option has the <code>Defer</code> property, <var>var</var> is a pointer to
+a <code>VEC(cl_deferred_option,heap)</code> that stores the option for later
+processing. (<var>var</var> is declared with type <code>void *</code> and needs
+to be cast to <code>VEC(cl_deferred_option,heap)</code> before use.)
+
+</li><li> Otherwise, if the option takes an argument, <var>var</var> is a pointer to
+the argument string. The pointer will be null if the argument is optional
+and wasn&rsquo;t given.
+</li></ul>
+
+<p>The option-processing script will usually zero-initialize <var>var</var>.
+You can modify this behavior using <code>Init</code>.
+</p>
+</dd>
+<dt><code>Var(<var>var</var>, <var>set</var>)</code></dt>
+<dd><p>The option controls an integer variable <var>var</var> and is active when
+<var>var</var> equals <var>set</var>. The option parser will set <var>var</var> to
+<var>set</var> when the positive form of the option is used and <code>!<var>set</var></code>
+when the &ldquo;no-&rdquo; form is used.
+</p>
+<p><var>var</var> is declared in the same way as for the single-argument form
+described above.
+</p>
+</dd>
+<dt><code>Init(<var>value</var>)</code></dt>
+<dd><p>The variable specified by the <code>Var</code> property should be statically
+initialized to <var>value</var>. If more than one option using the same
+variable specifies <code>Init</code>, all must specify the same initializer.
+</p>
+</dd>
+<dt><code>WarnRemoved</code></dt>
+<dd><p>The option is removed and every usage of such option will
+result in a warning. We use it option backward compatibility.
+</p>
+</dd>
+<dt><code>Mask(<var>name</var>)</code></dt>
+<dd><p>The option is associated with a bit in the <code>target_flags</code>
+variable (see <a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a>) and is active when that bit is set.
+You may also specify <code>Var</code> to select a variable other than
+<code>target_flags</code>.
+</p>
+<p>The options-processing script will automatically allocate a unique bit
+for the option. If the option is attached to &lsquo;<samp>target_flags</samp>&rsquo;,
+the script will set the macro <code>MASK_<var>name</var></code> to the appropriate
+bitmask. It will also declare a <code>TARGET_<var>name</var></code> macro that has
+the value 1 when the option is active and 0 otherwise. If you use <code>Var</code>
+to attach the option to a different variable, the bitmask macro with be
+called <code>OPTION_MASK_<var>name</var></code>.
+</p>
+</dd>
+<dt><code>InverseMask(<var>othername</var>)</code></dt>
+<dt><code>InverseMask(<var>othername</var>, <var>thisname</var>)</code></dt>
+<dd><p>The option is the inverse of another option that has the
+<code>Mask(<var>othername</var>)</code> property. If <var>thisname</var> is given,
+the options-processing script will declare a <code>TARGET_<var>thisname</var></code>
+macro that is 1 when the option is active and 0 otherwise.
+</p>
+</dd>
+<dt><code>Enum(<var>name</var>)</code></dt>
+<dd><p>The option&rsquo;s argument is a string from the set of strings associated
+with the corresponding &lsquo;<samp>Enum</samp>&rsquo; record. The string is checked and
+converted to the integer specified in the corresponding
+&lsquo;<samp>EnumValue</samp>&rsquo; record before being passed to option handlers.
+</p>
+</dd>
+<dt><code>EnumSet</code></dt>
+<dd><p>Must be used together with the <code>Enum(<var>name</var>)</code> property.
+Corresponding &lsquo;<samp>Enum</samp>&rsquo; record must use <code>Set</code> properties.
+The option&rsquo;s argument is either a string from the set like for
+<code>Enum(<var>name</var>)</code>, but with a slightly different behavior that
+the whole <code>Var</code> isn&rsquo;t overwritten, but only the bits in all the
+enumeration values with the same set bitwise ored together.
+Or option&rsquo;s argument can be a comma separated list of strings where
+each string is from a different <code>Set(<var>number</var>)</code>.
+</p>
+</dd>
+<dt><code>EnumBitSet</code></dt>
+<dd><p>Must be used together with the <code>Enum(<var>name</var>)</code> property.
+Similar to &lsquo;<samp>EnumSet</samp>&rsquo;, but corresponding &lsquo;<samp>Enum</samp>&rsquo; record must
+not use <code>Set</code> properties, each <code>EnumValue</code> should have
+<code>Value</code> that is a power of 2, each value is treated as its own
+set and its value as the set&rsquo;s mask, so there are no mutually
+exclusive arguments.
+</p>
+</dd>
+<dt><code>Defer</code></dt>
+<dd><p>The option should be stored in a vector, specified with <code>Var</code>,
+for later processing.
+</p>
+</dd>
+<dt><code>Alias(<var>opt</var>)</code></dt>
+<dt><code>Alias(<var>opt</var>, <var>arg</var>)</code></dt>
+<dt><code>Alias(<var>opt</var>, <var>posarg</var>, <var>negarg</var>)</code></dt>
+<dd><p>The option is an alias for <samp>-<var>opt</var></samp> (or the negative form
+of that option, depending on <code>NegativeAlias</code>). In the first form,
+any argument passed to the alias is considered to be passed to
+<samp>-<var>opt</var></samp>, and <samp>-<var>opt</var></samp> is considered to be
+negated if the alias is used in negated form. In the second form, the
+alias may not be negated or have an argument, and <var>posarg</var> is
+considered to be passed as an argument to <samp>-<var>opt</var></samp>. In the
+third form, the alias may not have an argument, if the alias is used
+in the positive form then <var>posarg</var> is considered to be passed to
+<samp>-<var>opt</var></samp>, and if the alias is used in the negative form
+then <var>negarg</var> is considered to be passed to <samp>-<var>opt</var></samp>.
+</p>
+<p>Aliases should not specify <code>Var</code> or <code>Mask</code> or
+<code>UInteger</code>. Aliases should normally specify the same languages
+as the target of the alias; the flags on the target will be used to
+determine any diagnostic for use of an option for the wrong language,
+while those on the alias will be used to identify what command-line
+text is the option and what text is any argument to that option.
+</p>
+<p>When an <code>Alias</code> definition is used for an option, driver specs do
+not need to handle it and no &lsquo;<samp>OPT_</samp>&rsquo; enumeration value is defined
+for it; only the canonical form of the option will be seen in those
+places.
+</p>
+</dd>
+<dt><code>NegativeAlias</code></dt>
+<dd><p>For an option marked with <code>Alias(<var>opt</var>)</code>, the option is
+considered to be an alias for the positive form of <samp>-<var>opt</var></samp>
+if negated and for the negative form of <samp>-<var>opt</var></samp> if not
+negated. <code>NegativeAlias</code> may not be used with the forms of
+<code>Alias</code> taking more than one argument.
+</p>
+</dd>
+<dt><code>Ignore</code></dt>
+<dd><p>This option is ignored apart from printing any warning specified using
+<code>Warn</code>. The option will not be seen by specs and no &lsquo;<samp>OPT_</samp>&rsquo;
+enumeration value is defined for it.
+</p>
+</dd>
+<dt><code>SeparateAlias</code></dt>
+<dd><p>For an option marked with <code>Joined</code>, <code>Separate</code> and
+<code>Alias</code>, the option only acts as an alias when passed a separate
+argument; with a joined argument it acts as a normal option, with an
+&lsquo;<samp>OPT_</samp>&rsquo; enumeration value. This is for compatibility with the
+Java <samp>-d</samp> option and should not be used for new options.
+</p>
+</dd>
+<dt><code>Warn(<var>message</var>)</code></dt>
+<dd><p>If this option is used, output the warning <var>message</var>.
+<var>message</var> is a format string, either taking a single operand with
+a &lsquo;<samp>%qs</samp>&rsquo; format which is the option name, or not taking any
+operands, which is passed to the &lsquo;<samp>warning</samp>&rsquo; function. If an alias
+is marked <code>Warn</code>, the target of the alias must not also be marked
+<code>Warn</code>.
+</p>
+</dd>
+<dt><code>Warning</code></dt>
+<dd><p>This is a warning option and should be shown as such in
+<samp>--help</samp> output. This flag does not currently affect anything
+other than <samp>--help</samp>.
+</p>
+</dd>
+<dt><code>Optimization</code></dt>
+<dd><p>This is an optimization option. It should be shown as such in
+<samp>--help</samp> output, and any associated variable named using
+<code>Var</code> should be saved and restored when the optimization level is
+changed with <code>optimize</code> attributes.
+</p>
+</dd>
+<dt><code>PerFunction</code></dt>
+<dd><p>This is an option that can be overridden on a per-function basis.
+<code>Optimization</code> implies <code>PerFunction</code>, but options that do not
+affect executable code generation may use this flag instead, so that the
+option is not taken into account in ways that might affect executable
+code generation.
+</p>
+</dd>
+<dt><code>Param</code></dt>
+<dd><p>This is an option that is a parameter.
+</p>
+</dd>
+<dt><code>Undocumented</code></dt>
+<dd><p>The option is deliberately missing documentation and should not
+be included in the <samp>--help</samp> output.
+</p>
+</dd>
+<dt><code>Condition(<var>cond</var>)</code></dt>
+<dd><p>The option should only be accepted if preprocessor condition
+<var>cond</var> is true. Note that any C declarations associated with the
+option will be present even if <var>cond</var> is false; <var>cond</var> simply
+controls whether the option is accepted and whether it is printed in
+the <samp>--help</samp> output.
+</p>
+</dd>
+<dt><code>Save</code></dt>
+<dd><p>Build the <code>cl_target_option</code> structure to hold a copy of the
+option, add the functions <code>cl_target_option_save</code> and
+<code>cl_target_option_restore</code> to save and restore the options.
+</p>
+</dd>
+<dt><code>SetByCombined</code></dt>
+<dd><p>The option may also be set by a combined option such as
+<samp>-ffast-math</samp>. This causes the <code>gcc_options</code> struct to
+have a field <code>frontend_set_<var>name</var></code>, where <code><var>name</var></code>
+is the name of the field holding the value of this option (without the
+leading <code>x_</code>). This gives the front end a way to indicate that
+the value has been set explicitly and should not be changed by the
+combined option. For example, some front ends use this to prevent
+<samp>-ffast-math</samp> and <samp>-fno-fast-math</samp> from changing the
+value of <samp>-fmath-errno</samp> for languages that do not use
+<code>errno</code>.
+</p>
+</dd>
+<dt><code>EnabledBy(<var>opt</var>)</code></dt>
+<dt><code>EnabledBy(<var>opt</var> || <var>opt2</var>)</code></dt>
+<dt><code>EnabledBy(<var>opt</var> &amp;&amp; <var>opt2</var>)</code></dt>
+<dd><p>If not explicitly set, the option is set to the value of
+<samp>-<var>opt</var></samp>; multiple options can be given, separated by
+<code>||</code>. The third form using <code>&amp;&amp;</code> specifies that the option is
+only set if both <var>opt</var> and <var>opt2</var> are set. The options <var>opt</var>
+and <var>opt2</var> must have the <code>Common</code> property; otherwise, use
+<code>LangEnabledBy</code>.
+</p>
+</dd>
+<dt><code>LangEnabledBy(<var>language</var>, <var>opt</var>)</code></dt>
+<dt><code>LangEnabledBy(<var>language</var>, <var>opt</var>, <var>posarg</var>, <var>negarg</var>)</code></dt>
+<dd><p>When compiling for the given language, the option is set to the value
+of <samp>-<var>opt</var></samp>, if not explicitly set. <var>opt</var> can be also a list
+of <code>||</code> separated options. In the second form, if
+<var>opt</var> is used in the positive form then <var>posarg</var> is considered
+to be passed to the option, and if <var>opt</var> is used in the negative
+form then <var>negarg</var> is considered to be passed to the option. It
+is possible to specify several different languages. Each
+<var>language</var> must have been declared by an earlier <code>Language</code>
+record. See <a href="Option-file-format.html#Option-file-format">Option file format</a>.
+</p>
+</dd>
+<dt><code>NoDWARFRecord</code></dt>
+<dd><p>The option is omitted from the producer string written by
+<samp>-grecord-gcc-switches</samp>.
+</p>
+</dd>
+<dt><code>PchIgnore</code></dt>
+<dd><p>Even if this is a target option, this option will not be recorded / compared
+to determine if a precompiled header file matches.
+</p>
+</dd>
+<dt><code>CPP(<var>var</var>)</code></dt>
+<dd><p>The state of this option should be kept in sync with the preprocessor
+option <var>var</var>. If this property is set, then properties <code>Var</code>
+and <code>Init</code> must be set as well.
+</p>
+</dd>
+<dt><code>CppReason(<var>CPP_W_Enum</var>)</code></dt>
+<dd><p>This warning option corresponds to <code>cpplib.h</code> warning reason code
+<var>CPP_W_Enum</var>. This should only be used for warning options of the
+C-family front-ends.
+</p>
+</dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Option-file-format.html#Option-file-format" accesskey="p" rel="previous">Option file format</a>, Up: <a href="Options.html#Options" accesskey="u" rel="up">Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Options.html b/share/doc/gccint/Options.html
new file mode 100644
index 0000000..2755d52
--- /dev/null
+++ b/share/doc/gccint/Options.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Options</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Options">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Options">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Option-file-format.html#Option-file-format" rel="next" title="Option file format">
+<link href="RTL-Tests.html#RTL-Tests" rel="previous" title="RTL Tests">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Options"></a>
+<div class="header">
+<p>
+Next: <a href="Passes.html#Passes" accesskey="n" rel="next">Passes</a>, Previous: <a href="Testsuites.html#Testsuites" accesskey="p" rel="previous">Testsuites</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Option-specification-files"></a>
+<h2 class="chapter">8 Option specification files</h2>
+<a name="index-option-specification-files"></a>
+<a name="index-optc_002dgen_002eawk"></a>
+
+<p>Most GCC command-line options are described by special option
+definition files, the names of which conventionally end in
+<code>.opt</code>. This chapter describes the format of these files.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Option-file-format.html#Option-file-format" accesskey="1">Option file format</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The general layout of the files
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Option-properties.html#Option-properties" accesskey="2">Option properties</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Supported option properties
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Other-poly_005fint-arithmetic.html b/share/doc/gccint/Other-poly_005fint-arithmetic.html
new file mode 100644
index 0000000..cdfa4ff
--- /dev/null
+++ b/share/doc/gccint/Other-poly_005fint-arithmetic.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Other poly_int arithmetic</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Other poly_int arithmetic">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Other poly_int arithmetic">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="up" title="Arithmetic on poly_ints">
+<link href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints" rel="next" title="Alignment of poly_ints">
+<link href="Division-of-poly_005fints.html#Division-of-poly_005fints" rel="previous" title="Division of poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Other-poly_005fint-arithmetic"></a>
+<div class="header">
+<p>
+Previous: <a href="Division-of-poly_005fints.html#Division-of-poly_005fints" accesskey="p" rel="previous">Division of <code>poly_int</code>s</a>, Up: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="u" rel="up">Arithmetic on <code>poly_int</code>s</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Other-poly_005fint-arithmetic-1"></a>
+<h4 class="subsection">10.4.4 Other <code>poly_int</code> arithmetic</h4>
+
+<p>There are tentative routines for other operations besides division:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>can_ior_p (<var>a</var>, <var>b</var>, &amp;<var>result</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if we can calculate &lsquo;<samp><var>a</var> | <var>b</var></samp>&rsquo; at compile time,
+storing the result in <var>result</var> if so.
+</p></dd>
+</dl>
+
+<p>Also, ANDs with a value &lsquo;<samp>(1 &lt;&lt; <var>y</var>) - 1</samp>&rsquo; or its inverse can be
+treated as alignment operations. See <a href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints">Alignment of <code>poly_int</code>s</a>.
+</p>
+<p>In addition, the following miscellaneous routines are available:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>coeff_gcd (<var>a</var>)</samp>&rsquo;</dt>
+<dd><p>Return the greatest common divisor of all nonzero coefficients in
+<var>a</var>, or zero if <var>a</var> is known to be zero.
+</p>
+</dd>
+<dt>&lsquo;<samp>common_multiple (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return a value that is a multiple of both <var>a</var> and <var>b</var>, where
+one value is a <code>poly_int</code> and the other is a scalar. The result
+will be the least common multiple for some indeterminate values but
+not necessarily for all.
+</p>
+</dd>
+<dt>&lsquo;<samp>force_common_multiple (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Return a value that is a multiple of both <code>poly_int</code> <var>a</var> and
+<code>poly_int</code> <var>b</var>, asserting that such a value exists. The
+result will be the least common multiple for some indeterminate values
+but not necessarily for all.
+</p>
+<p>When using this routine, please add a comment explaining why the
+assertion is known to hold.
+</p></dd>
+</dl>
+
+<p>Please add any other operations that you find to be useful.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Output-Statement.html b/share/doc/gccint/Output-Statement.html
new file mode 100644
index 0000000..99757d9
--- /dev/null
+++ b/share/doc/gccint/Output-Statement.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Output Statement</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Output Statement">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Output Statement">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Predicates.html#Predicates" rel="next" title="Predicates">
+<link href="Output-Template.html#Output-Template" rel="previous" title="Output Template">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Output-Statement"></a>
+<div class="header">
+<p>
+Next: <a href="Predicates.html#Predicates" accesskey="n" rel="next">Predicates</a>, Previous: <a href="Output-Template.html#Output-Template" accesskey="p" rel="previous">Output Template</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="C-Statements-for-Assembler-Output"></a>
+<h3 class="section">17.6 C Statements for Assembler Output</h3>
+<a name="index-output-statements"></a>
+<a name="index-C-statements-for-assembler-output"></a>
+<a name="index-generating-assembler-output"></a>
+
+<p>Often a single fixed template string cannot produce correct and efficient
+assembler code for all the cases that are recognized by a single
+instruction pattern. For example, the opcodes may depend on the kinds of
+operands; or some unfortunate combinations of operands may require extra
+machine instructions.
+</p>
+<p>If the output control string starts with a &lsquo;<samp>@</samp>&rsquo;, then it is actually
+a series of templates, each on a separate line. (Blank lines and
+leading spaces and tabs are ignored.) The templates correspond to the
+pattern&rsquo;s constraint alternatives (see <a href="Multi_002dAlternative.html#Multi_002dAlternative">Multi-Alternative</a>). For example,
+if a target machine has a two-address add instruction &lsquo;<samp>addr</samp>&rsquo; to add
+into a register and another &lsquo;<samp>addm</samp>&rsquo; to add a register to memory, you
+might write this pattern:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;addsi3&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r,m&quot;)
+ (plus:SI (match_operand:SI 1 &quot;general_operand&quot; &quot;0,0&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;g,r&quot;)))]
+ &quot;&quot;
+ &quot;@
+ addr %2,%0
+ addm %2,%0&quot;)
+</pre></div>
+
+<a name="index-_002a-in-template"></a>
+<a name="index-asterisk-in-template"></a>
+<p>If the output control string starts with a &lsquo;<samp>*</samp>&rsquo;, then it is not an
+output template but rather a piece of C program that should compute a
+template. It should execute a <code>return</code> statement to return the
+template-string you want. Most such templates use C string literals, which
+require doublequote characters to delimit them. To include these
+doublequote characters in the string, prefix each one with &lsquo;<samp>\</samp>&rsquo;.
+</p>
+<p>If the output control string is written as a brace block instead of a
+double-quoted string, it is automatically assumed to be C code. In that
+case, it is not necessary to put in a leading asterisk, or to escape the
+doublequotes surrounding C string literals.
+</p>
+<p>The operands may be found in the array <code>operands</code>, whose C data type
+is <code>rtx []</code>.
+</p>
+<p>It is very common to select different ways of generating assembler code
+based on whether an immediate operand is within a certain range. Be
+careful when doing this, because the result of <code>INTVAL</code> is an
+integer on the host machine. If the host machine has more bits in an
+<code>int</code> than the target machine has in the mode in which the constant
+will be used, then some of the bits you get from <code>INTVAL</code> will be
+superfluous. For proper results, you must carefully disregard the
+values of those bits.
+</p>
+<a name="index-output_005fasm_005finsn"></a>
+<p>It is possible to output an assembler instruction and then go on to output
+or compute more of them, using the subroutine <code>output_asm_insn</code>. This
+receives two arguments: a template-string and a vector of operands. The
+vector may be <code>operands</code>, or it may be another array of <code>rtx</code>
+that you declare locally and initialize yourself.
+</p>
+<a name="index-which_005falternative"></a>
+<p>When an insn pattern has multiple alternatives in its constraints, often
+the appearance of the assembler code is determined mostly by which alternative
+was matched. When this is so, the C code can test the variable
+<code>which_alternative</code>, which is the ordinal number of the alternative
+that was actually satisfied (0 for the first, 1 for the second alternative,
+etc.).
+</p>
+<p>For example, suppose there are two opcodes for storing zero, &lsquo;<samp>clrreg</samp>&rsquo;
+for registers and &lsquo;<samp>clrmem</samp>&rsquo; for memory locations. Here is how
+a pattern could use <code>which_alternative</code> to choose between them:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r,m&quot;)
+ (const_int 0))]
+ &quot;&quot;
+ {
+ return (which_alternative == 0
+ ? &quot;clrreg %0&quot; : &quot;clrmem %0&quot;);
+ })
+</pre></div>
+
+<p>The example above, where the assembler code to generate was
+<em>solely</em> determined by the alternative, could also have been specified
+as follows, having the output control string start with a &lsquo;<samp>@</samp>&rsquo;:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r,m&quot;)
+ (const_int 0))]
+ &quot;&quot;
+ &quot;@
+ clrreg %0
+ clrmem %0&quot;)
+</pre></div>
+
+<p>If you just need a little bit of C code in one (or a few) alternatives,
+you can use &lsquo;<samp>*</samp>&rsquo; inside of a &lsquo;<samp>@</samp>&rsquo; multi-alternative template:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r,&lt;,m&quot;)
+ (const_int 0))]
+ &quot;&quot;
+ &quot;@
+ clrreg %0
+ * return stack_mem_p (operands[0]) ? \&quot;push 0\&quot; : \&quot;clrmem %0\&quot;;
+ clrmem %0&quot;)
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Predicates.html#Predicates" accesskey="n" rel="next">Predicates</a>, Previous: <a href="Output-Template.html#Output-Template" accesskey="p" rel="previous">Output Template</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Output-Template.html b/share/doc/gccint/Output-Template.html
new file mode 100644
index 0000000..8bc1030
--- /dev/null
+++ b/share/doc/gccint/Output-Template.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Output Template</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Output Template">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Output Template">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Output-Statement.html#Output-Statement" rel="next" title="Output Statement">
+<link href="RTL-Template.html#RTL-Template" rel="previous" title="RTL Template">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Output-Template"></a>
+<div class="header">
+<p>
+Next: <a href="Output-Statement.html#Output-Statement" accesskey="n" rel="next">Output Statement</a>, Previous: <a href="RTL-Template.html#RTL-Template" accesskey="p" rel="previous">RTL Template</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-Templates-and-Operand-Substitution"></a>
+<h3 class="section">17.5 Output Templates and Operand Substitution</h3>
+<a name="index-output-templates"></a>
+<a name="index-operand-substitution"></a>
+
+<a name="index-_0025-in-template"></a>
+<a name="index-percent-sign"></a>
+<p>The <em>output template</em> is a string which specifies how to output the
+assembler code for an instruction pattern. Most of the template is a
+fixed string which is output literally. The character &lsquo;<samp>%</samp>&rsquo; is used
+to specify where to substitute an operand; it can also be used to
+identify places where different variants of the assembler require
+different syntax.
+</p>
+<p>In the simplest case, a &lsquo;<samp>%</samp>&rsquo; followed by a digit <var>n</var> says to output
+operand <var>n</var> at that point in the string.
+</p>
+<p>&lsquo;<samp>%</samp>&rsquo; followed by a letter and a digit says to output an operand in an
+alternate fashion. Four letters have standard, built-in meanings described
+below. The machine description macro <code>PRINT_OPERAND</code> can define
+additional letters with nonstandard meanings.
+</p>
+<p>&lsquo;<samp>%c<var>digit</var></samp>&rsquo; can be used to substitute an operand that is a
+constant value without the syntax that normally indicates an immediate
+operand.
+</p>
+<p>&lsquo;<samp>%n<var>digit</var></samp>&rsquo; is like &lsquo;<samp>%c<var>digit</var></samp>&rsquo; except that the value of
+the constant is negated before printing.
+</p>
+<p>&lsquo;<samp>%a<var>digit</var></samp>&rsquo; can be used to substitute an operand as if it were a
+memory reference, with the actual operand treated as the address. This may
+be useful when outputting a &ldquo;load address&rdquo; instruction, because often the
+assembler syntax for such an instruction requires you to write the operand
+as if it were a memory reference.
+</p>
+<p>&lsquo;<samp>%l<var>digit</var></samp>&rsquo; is used to substitute a <code>label_ref</code> into a jump
+instruction.
+</p>
+<p>&lsquo;<samp>%=</samp>&rsquo; outputs a number which is unique to each instruction in the
+entire compilation. This is useful for making local labels to be
+referred to more than once in a single template that generates multiple
+assembler instructions.
+</p>
+<p>&lsquo;<samp>%</samp>&rsquo; followed by a punctuation character specifies a substitution that
+does not use an operand. Only one case is standard: &lsquo;<samp>%%</samp>&rsquo; outputs a
+&lsquo;<samp>%</samp>&rsquo; into the assembler code. Other nonstandard cases can be
+defined in the <code>PRINT_OPERAND</code> macro. You must also define
+which punctuation characters are valid with the
+<code>PRINT_OPERAND_PUNCT_VALID_P</code> macro.
+</p>
+<a name="index-_005c"></a>
+<a name="index-backslash"></a>
+<p>The template may generate multiple assembler instructions. Write the text
+for the instructions, with &lsquo;<samp>\;</samp>&rsquo; between them.
+</p>
+<a name="index-matching-operands"></a>
+<p>When the RTL contains two operands which are required by constraint to match
+each other, the output template must refer only to the lower-numbered operand.
+Matching operands are not always identical, and the rest of the compiler
+arranges to put the proper RTL expression for printing into the lower-numbered
+operand.
+</p>
+<p>One use of nonstandard letters or punctuation following &lsquo;<samp>%</samp>&rsquo; is to
+distinguish between different assembler languages for the same machine; for
+example, Motorola syntax versus MIT syntax for the 68000. Motorola syntax
+requires periods in most opcode names, while MIT syntax does not. For
+example, the opcode &lsquo;<samp>movel</samp>&rsquo; in MIT syntax is &lsquo;<samp>move.l</samp>&rsquo; in Motorola
+syntax. The same file of patterns is used for both kinds of output syntax,
+but the character sequence &lsquo;<samp>%.</samp>&rsquo; is used in each place where Motorola
+syntax wants a period. The <code>PRINT_OPERAND</code> macro for Motorola syntax
+defines the sequence to output a period; the macro for MIT syntax defines
+it to do nothing.
+</p>
+<a name="index-_0023-in-template"></a>
+<p>As a special case, a template consisting of the single character <code>#</code>
+instructs the compiler to first split the insn, and then output the
+resulting instructions separately. This helps eliminate redundancy in the
+output templates. If you have a <code>define_insn</code> that needs to emit
+multiple assembler instructions, and there is a matching <code>define_split</code>
+already defined, then you can simply use <code>#</code> as the output template
+instead of writing an output template that emits the multiple assembler
+instructions.
+</p>
+<p>Note that <code>#</code> only has an effect while generating assembly code;
+it does not affect whether a split occurs earlier. An associated
+<code>define_split</code> must exist and it must be suitable for use after
+register allocation.
+</p>
+<p>If the macro <code>ASSEMBLER_DIALECT</code> is defined, you can use construct
+of the form &lsquo;<samp>{option0|option1|option2}</samp>&rsquo; in the templates. These
+describe multiple variants of assembler language syntax.
+See <a href="Instruction-Output.html#Instruction-Output">Instruction Output</a>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Output-Statement.html#Output-Statement" accesskey="n" rel="next">Output Statement</a>, Previous: <a href="RTL-Template.html#RTL-Template" accesskey="p" rel="previous">RTL Template</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Overview-of-poly_005fint.html b/share/doc/gccint/Overview-of-poly_005fint.html
new file mode 100644
index 0000000..d07df4e
--- /dev/null
+++ b/share/doc/gccint/Overview-of-poly_005fint.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Overview of poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Overview of poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Overview of poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="poly_005fint.html#poly_005fint" rel="up" title="poly_int">
+<link href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" rel="next" title="Consequences of using poly_int">
+<link href="poly_005fint.html#poly_005fint" rel="previous" title="poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Overview-of-poly_005fint"></a>
+<div class="header">
+<p>
+Next: <a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" accesskey="n" rel="next">Consequences of using <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Overview-of-poly_005fint-1"></a>
+<h3 class="section">10.1 Overview of <code>poly_int</code></h3>
+
+<a name="index-poly_005fint_002c-runtime-value"></a>
+<p>We define indeterminates <var>x1</var>, &hellip;, <var>xn</var> whose values are
+only known at runtime and use polynomials of the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>c0</var> + <var>c1</var> * <var>x1</var> + &hellip; + <var>cn</var> * <var>xn</var>
+</pre></div>
+
+<p>to represent a size or offset whose value might depend on some
+of these indeterminates. The coefficients <var>c0</var>, &hellip;, <var>cn</var>
+are always known at compile time, with the <var>c0</var> term being the
+&ldquo;constant&rdquo; part that does not depend on any runtime value.
+</p>
+<p>GCC uses the <code>poly_int</code> class to represent these coefficients.
+The class has two template parameters: the first specifies the number of
+coefficients (<var>n</var> + 1) and the second specifies the type of the
+coefficients. For example, &lsquo;<samp>poly_int&lt;2, unsigned short&gt;</samp>&rsquo; represents
+a polynomial with two coefficients (and thus one indeterminate), with each
+coefficient having type <code>unsigned short</code>. When <var>n</var> is 0,
+the class degenerates to a single compile-time constant <var>c0</var>.
+</p>
+<a name="index-poly_005fint_002c-template-parameters"></a>
+<a name="index-NUM_005fPOLY_005fINT_005fCOEFFS"></a>
+<p>The number of coefficients needed for compilation is a fixed
+property of each target and is specified by the configuration macro
+<code>NUM_POLY_INT_COEFFS</code>. The default value is 1, since most targets
+do not have such runtime invariants. Targets that need a different
+value should <code>#define</code> the macro in their <samp><var>cpu</var>-modes.def</samp>
+file. See <a href="Back-End.html#Back-End">Back End</a>.
+</p>
+<a name="index-poly_005fint_002c-invariant-range"></a>
+<p><code>poly_int</code> makes the simplifying requirement that each indeterminate
+must be a nonnegative integer. An indeterminate value of 0 should usually
+represent the minimum possible runtime value, with <var>c0</var> specifying
+the value in that case.
+</p>
+<p>For example, when targetting the Arm SVE ISA, the single indeterminate
+represents the number of 128-bit blocks in a vector <em>beyond the minimum
+length of 128 bits</em>. Thus the number of 64-bit doublewords in a vector
+is 2 + 2 * <var>x1</var>. If an aggregate has a single SVE vector and 16
+additional bytes, its total size is 32 + 16 * <var>x1</var> bytes.
+</p>
+<p>The header file <samp>poly-int-types.h</samp> provides typedefs for the
+most common forms of <code>poly_int</code>, all having
+<code>NUM_POLY_INT_COEFFS</code> coefficients:
+</p>
+<a name="index-poly_005fint_002c-main-typedefs"></a>
+<dl compact="compact">
+<dt><code>poly_uint16</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>unsigned short</code> coefficients.
+</p>
+</dd>
+<dt><code>poly_int64</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>HOST_WIDE_INT</code> coefficients.
+</p>
+</dd>
+<dt><code>poly_uint64</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>unsigned HOST_WIDE_INT</code> coefficients.
+</p>
+</dd>
+<dt><code>poly_offset_int</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>offset_int</code> coefficients.
+</p>
+</dd>
+<dt><code>poly_wide_int</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>wide_int</code> coefficients.
+</p>
+</dd>
+<dt><code>poly_widest_int</code></dt>
+<dd><p>a &lsquo;<samp>poly_int</samp>&rsquo; with <code>widest_int</code> coefficients.
+</p></dd>
+</dl>
+
+<p>Since the main purpose of <code>poly_int</code> is to represent sizes and
+offsets, the last two typedefs are only rarely used.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" accesskey="n" rel="next">Consequences of using <code>poly_int</code></a>, Up: <a href="poly_005fint.html#poly_005fint" accesskey="u" rel="up">poly_int</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Overview.html b/share/doc/gccint/Overview.html
new file mode 100644
index 0000000..cb99a94
--- /dev/null
+++ b/share/doc/gccint/Overview.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Overview</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Overview">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Overview">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Patterns.html#Patterns" rel="next" title="Patterns">
+<link href="Machine-Desc.html#Machine-Desc" rel="previous" title="Machine Desc">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Overview"></a>
+<div class="header">
+<p>
+Next: <a href="Patterns.html#Patterns" accesskey="n" rel="next">Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Overview-of-How-the-Machine-Description-is-Used"></a>
+<h3 class="section">17.1 Overview of How the Machine Description is Used</h3>
+
+<p>There are three main conversions that happen in the compiler:
+</p>
+<ol>
+<li> The front end reads the source code and builds a parse tree.
+
+</li><li> The parse tree is used to generate an RTL insn list based on named
+instruction patterns.
+
+</li><li> The insn list is matched against the RTL templates to produce assembler
+code.
+
+</li></ol>
+
+<p>For the generate pass, only the names of the insns matter, from either a
+named <code>define_insn</code> or a <code>define_expand</code>. The compiler will
+choose the pattern with the right name and apply the operands according
+to the documentation later in this chapter, without regard for the RTL
+template or operand constraints. Note that the names the compiler looks
+for are hard-coded in the compiler&mdash;it will ignore unnamed patterns and
+patterns with names it doesn&rsquo;t know about, but if you don&rsquo;t provide a
+named pattern it needs, it will abort.
+</p>
+<p>If a <code>define_insn</code> is used, the template given is inserted into the
+insn list. If a <code>define_expand</code> is used, one of three things
+happens, based on the condition logic. The condition logic may manually
+create new insns for the insn list, say via <code>emit_insn()</code>, and
+invoke <code>DONE</code>. For certain named patterns, it may invoke <code>FAIL</code> to tell the
+compiler to use an alternate way of performing that task. If it invokes
+neither <code>DONE</code> nor <code>FAIL</code>, the template given in the pattern
+is inserted, as if the <code>define_expand</code> were a <code>define_insn</code>.
+</p>
+<p>Once the insn list is generated, various optimization passes convert,
+replace, and rearrange the insns in the insn list. This is where the
+<code>define_split</code> and <code>define_peephole</code> patterns get used, for
+example.
+</p>
+<p>Finally, the insn list&rsquo;s RTL is matched up with the RTL templates in the
+<code>define_insn</code> patterns, and those patterns are used to emit the
+final assembly code. For this purpose, each named <code>define_insn</code>
+acts like it&rsquo;s unnamed, since the names are ignored.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Patterns.html#Patterns" accesskey="n" rel="next">Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/PCH-Target.html b/share/doc/gccint/PCH-Target.html
new file mode 100644
index 0000000..26ff1ff
--- /dev/null
+++ b/share/doc/gccint/PCH-Target.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: PCH Target</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: PCH Target">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: PCH Target">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="C_002b_002b-ABI.html#C_002b_002b-ABI" rel="next" title="C++ ABI">
+<link href="MIPS-Coprocessors.html#MIPS-Coprocessors" rel="previous" title="MIPS Coprocessors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="PCH-Target"></a>
+<div class="header">
+<p>
+Next: <a href="C_002b_002b-ABI.html#C_002b_002b-ABI" accesskey="n" rel="next">C++ ABI</a>, Previous: <a href="MIPS-Coprocessors.html#MIPS-Coprocessors" accesskey="p" rel="previous">MIPS Coprocessors</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Parameters-for-Precompiled-Header-Validity-Checking"></a>
+<h3 class="section">18.27 Parameters for Precompiled Header Validity Checking</h3>
+<a name="index-parameters_002c-precompiled-headers"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fPCH_005fVALIDITY"></a>Target Hook: <em>void *</em> <strong>TARGET_GET_PCH_VALIDITY</strong> <em>(size_t *<var>sz</var>)</em></dt>
+<dd><p>This hook returns a pointer to the data needed by
+<code>TARGET_PCH_VALID_P</code> and sets
+&lsquo;<samp>*<var>sz</var></samp>&rsquo; to the size of the data in bytes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPCH_005fVALID_005fP"></a>Target Hook: <em>const char *</em> <strong>TARGET_PCH_VALID_P</strong> <em>(const void *<var>data</var>, size_t <var>sz</var>)</em></dt>
+<dd><p>This hook checks whether the options used to create a PCH file are
+compatible with the current settings. It returns <code>NULL</code>
+if so and a suitable error message if not. Error messages will
+be presented to the user and must be localized using &lsquo;<samp>_(<var>msg</var>)</samp>&rsquo;.
+</p>
+<p><var>data</var> is the data that was returned by <code>TARGET_GET_PCH_VALIDITY</code>
+when the PCH file was created and <var>sz</var> is the size of that data in bytes.
+It&rsquo;s safe to assume that the data was created by the same version of the
+compiler, so no format checking is needed.
+</p>
+<p>The default definition of <code>default_pch_valid_p</code> should be
+suitable for most targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCHECK_005fPCH_005fTARGET_005fFLAGS"></a>Target Hook: <em>const char *</em> <strong>TARGET_CHECK_PCH_TARGET_FLAGS</strong> <em>(int <var>pch_flags</var>)</em></dt>
+<dd><p>If this hook is nonnull, the default implementation of
+<code>TARGET_PCH_VALID_P</code> will use it to check for compatible values
+of <code>target_flags</code>. <var>pch_flags</var> specifies the value that
+<code>target_flags</code> had when the PCH file was created. The return
+value is the same as for <code>TARGET_PCH_VALID_P</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREPARE_005fPCH_005fSAVE"></a>Target Hook: <em>void</em> <strong>TARGET_PREPARE_PCH_SAVE</strong> <em>(void)</em></dt>
+<dd><p>Called before writing out a PCH file. If the target has some
+garbage-collected data that needs to be in a particular state on PCH loads,
+it can use this hook to enforce that state. Very few targets need
+to do anything here.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="C_002b_002b-ABI.html#C_002b_002b-ABI" accesskey="n" rel="next">C++ ABI</a>, Previous: <a href="MIPS-Coprocessors.html#MIPS-Coprocessors" accesskey="p" rel="previous">MIPS Coprocessors</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/PIC.html b/share/doc/gccint/PIC.html
new file mode 100644
index 0000000..f220adb
--- /dev/null
+++ b/share/doc/gccint/PIC.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: PIC</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: PIC">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: PIC">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Assembler-Format.html#Assembler-Format" rel="next" title="Assembler Format">
+<link href="Sections.html#Sections" rel="previous" title="Sections">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="PIC"></a>
+<div class="header">
+<p>
+Next: <a href="Assembler-Format.html#Assembler-Format" accesskey="n" rel="next">Assembler Format</a>, Previous: <a href="Sections.html#Sections" accesskey="p" rel="previous">Sections</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Position-Independent-Code"></a>
+<h3 class="section">18.19 Position Independent Code</h3>
+<a name="index-position-independent-code"></a>
+<a name="index-PIC"></a>
+
+<p>This section describes macros that help implement generation of position
+independent code. Simply defining these macros is not enough to
+generate valid PIC; you must also add support to the hook
+<code>TARGET_LEGITIMATE_ADDRESS_P</code> and to the macro
+<code>PRINT_OPERAND_ADDRESS</code>, as well as <code>LEGITIMIZE_ADDRESS</code>. You
+must modify the definition of &lsquo;<samp>movsi</samp>&rsquo; to do something appropriate
+when the source operand contains a symbolic address. You may also
+need to alter the handling of switch statements so that they use
+relative addresses.
+</p>
+<dl>
+<dt><a name="index-PIC_005fOFFSET_005fTABLE_005fREGNUM"></a>Macro: <strong>PIC_OFFSET_TABLE_REGNUM</strong></dt>
+<dd><p>The register number of the register used to address a table of static
+data addresses in memory. In some cases this register is defined by a
+processor&rsquo;s &ldquo;application binary interface&rdquo; (ABI). When this macro
+is defined, RTL is generated for this register once, as with the stack
+pointer and frame pointer registers. If this macro is not defined, it
+is up to the machine-dependent files to allocate such a register (if
+necessary). Note that this register must be fixed when in use (e.g.
+when <code>flag_pic</code> is true).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PIC_005fOFFSET_005fTABLE_005fREG_005fCALL_005fCLOBBERED"></a>Macro: <strong>PIC_OFFSET_TABLE_REG_CALL_CLOBBERED</strong></dt>
+<dd><p>A C expression that is nonzero if the register defined by
+<code>PIC_OFFSET_TABLE_REGNUM</code> is clobbered by calls. If not defined,
+the default is zero. Do not define
+this macro if <code>PIC_OFFSET_TABLE_REGNUM</code> is not defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LEGITIMATE_005fPIC_005fOPERAND_005fP"></a>Macro: <strong>LEGITIMATE_PIC_OPERAND_P</strong> <em>(<var>x</var>)</em></dt>
+<dd><p>A C expression that is nonzero if <var>x</var> is a legitimate immediate
+operand on the target machine when generating position independent code.
+You can assume that <var>x</var> satisfies <code>CONSTANT_P</code>, so you need not
+check this. You can also assume <var>flag_pic</var> is true, so you need not
+check it either. You need not define this macro if all constants
+(including <code>SYMBOL_REF</code>) can be immediate operands when generating
+position independent code.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Assembler-Format.html#Assembler-Format" accesskey="n" rel="next">Assembler Format</a>, Previous: <a href="Sections.html#Sections" accesskey="p" rel="previous">Sections</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Parameterized-Names.html b/share/doc/gccint/Parameterized-Names.html
new file mode 100644
index 0000000..17b4ce4
--- /dev/null
+++ b/share/doc/gccint/Parameterized-Names.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Parameterized Names</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Parameterized Names">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Parameterized Names">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Iterators.html#Iterators" rel="up" title="Iterators">
+<link href="Target-Macros.html#Target-Macros" rel="next" title="Target Macros">
+<link href="Subst-Iterators.html#Subst-Iterators" rel="previous" title="Subst Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Parameterized-Names"></a>
+<div class="header">
+<p>
+Previous: <a href="Subst-Iterators.html#Subst-Iterators" accesskey="p" rel="previous">Subst Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Parameterized-Names-1"></a>
+<h4 class="subsection">17.23.5 Parameterized Names</h4>
+<a name="index-_0040-in-instruction-pattern-names"></a>
+<p>Ports sometimes need to apply iterators using C++ code, in order to
+get the code or RTL pattern for a specific instruction. For example,
+suppose we have the &lsquo;<samp>neon_vq&lt;absneg&gt;&lt;mode&gt;</samp>&rsquo; pattern given above:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_int_iterator QABSNEG [UNSPEC_VQABS UNSPEC_VQNEG])
+
+(define_int_attr absneg [(UNSPEC_VQABS &quot;abs&quot;) (UNSPEC_VQNEG &quot;neg&quot;)])
+
+(define_insn &quot;neon_vq&lt;absneg&gt;&lt;mode&gt;&quot;
+ [(set (match_operand:VDQIW 0 &quot;s_register_operand&quot; &quot;=w&quot;)
+ (unspec:VDQIW [(match_operand:VDQIW 1 &quot;s_register_operand&quot; &quot;w&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;i&quot;)]
+ QABSNEG))]
+ &hellip;
+)
+</pre></div>
+
+<p>A port might need to generate this pattern for a variable
+&lsquo;<samp>QABSNEG</samp>&rsquo; value and a variable &lsquo;<samp>VDQIW</samp>&rsquo; mode. There are two
+ways of doing this. The first is to build the rtx for the pattern
+directly from C++ code; this is a valid technique and avoids any risk
+of combinatorial explosion. The second is to prefix the instruction
+name with the special character &lsquo;<samp>@</samp>&rsquo;, which tells GCC to generate
+the four additional functions below. In each case, <var>name</var> is the
+name of the instruction without the leading &lsquo;<samp>@</samp>&rsquo; character,
+without the &lsquo;<samp>&lt;&hellip;&gt;</samp>&rsquo; placeholders, and with any underscore
+before a &lsquo;<samp>&lt;&hellip;&gt;</samp>&rsquo; placeholder removed if keeping it would
+lead to a double or trailing underscore.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>insn_code maybe_code_for_<var>name</var> (<var>i1</var>, <var>i2</var>, &hellip;)</samp>&rsquo;</dt>
+<dd><p>See whether replacing the first &lsquo;<samp>&lt;&hellip;&gt;</samp>&rsquo; placeholder with
+iterator value <var>i1</var>, the second with iterator value <var>i2</var>, and
+so on, gives a valid instruction. Return its code if so, otherwise
+return <code>CODE_FOR_nothing</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp>insn_code code_for_<var>name</var> (<var>i1</var>, <var>i2</var>, &hellip;)</samp>&rsquo;</dt>
+<dd><p>Same, but abort the compiler if the requested instruction does not exist.
+</p>
+</dd>
+<dt>&lsquo;<samp>rtx maybe_gen_<var>name</var> (<var>i1</var>, <var>i2</var>, &hellip;, <var>op0</var>, <var>op1</var>, &hellip;)</samp>&rsquo;</dt>
+<dd><p>Check for a valid instruction in the same way as
+<code>maybe_code_for_<var>name</var></code>. If the instruction exists,
+generate an instance of it using the operand values given by <var>op0</var>,
+<var>op1</var>, and so on, otherwise return null.
+</p>
+</dd>
+<dt>&lsquo;<samp>rtx gen_<var>name</var> (<var>i1</var>, <var>i2</var>, &hellip;, <var>op0</var>, <var>op1</var>, &hellip;)</samp>&rsquo;</dt>
+<dd><p>Same, but abort the compiler if the requested instruction does not exist,
+or if the instruction generator invoked the <code>FAIL</code> macro.
+</p></dd>
+</dl>
+
+<p>For example, changing the pattern above to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;@neon_vq&lt;absneg&gt;&lt;mode&gt;&quot;
+ [(set (match_operand:VDQIW 0 &quot;s_register_operand&quot; &quot;=w&quot;)
+ (unspec:VDQIW [(match_operand:VDQIW 1 &quot;s_register_operand&quot; &quot;w&quot;)
+ (match_operand:SI 2 &quot;immediate_operand&quot; &quot;i&quot;)]
+ QABSNEG))]
+ &hellip;
+)
+</pre></div>
+
+<p>would define the same patterns as before, but in addition would generate
+the four functions below:
+</p>
+<div class="smallexample">
+<pre class="smallexample">insn_code maybe_code_for_neon_vq (int, machine_mode);
+insn_code code_for_neon_vq (int, machine_mode);
+rtx maybe_gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
+rtx gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
+</pre></div>
+
+<p>Calling &lsquo;<samp>code_for_neon_vq (UNSPEC_VQABS, V8QImode)</samp>&rsquo;
+would then give <code>CODE_FOR_neon_vqabsv8qi</code>.
+</p>
+<p>It is possible to have multiple &lsquo;<samp>@</samp>&rsquo; patterns with the same
+name and same types of iterator. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;@some_arithmetic_op&lt;mode&gt;&quot;
+ [(set (match_operand:INTEGER_MODES 0 &quot;register_operand&quot;) &hellip;)]
+ &hellip;
+)
+
+(define_insn &quot;@some_arithmetic_op&lt;mode&gt;&quot;
+ [(set (match_operand:FLOAT_MODES 0 &quot;register_operand&quot;) &hellip;)]
+ &hellip;
+)
+</pre></div>
+
+<p>would produce a single set of functions that handles both
+<code>INTEGER_MODES</code> and <code>FLOAT_MODES</code>.
+</p>
+<p>It is also possible for these &lsquo;<samp>@</samp>&rsquo; patterns to have different
+numbers of operands from each other. For example, patterns with
+a binary rtl code might take three operands (one output and two inputs)
+while patterns with a ternary rtl code might take four operands (one
+output and three inputs). This combination would produce separate
+&lsquo;<samp>maybe_gen_<var>name</var></samp>&rsquo; and &lsquo;<samp>gen_<var>name</var></samp>&rsquo; functions for
+each operand count, but it would still produce a single
+&lsquo;<samp>maybe_code_for_<var>name</var></samp>&rsquo; and a single &lsquo;<samp>code_for_<var>name</var></samp>&rsquo;.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Subst-Iterators.html#Subst-Iterators" accesskey="p" rel="previous">Subst Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Parsing-pass.html b/share/doc/gccint/Parsing-pass.html
new file mode 100644
index 0000000..b1a0e9c
--- /dev/null
+++ b/share/doc/gccint/Parsing-pass.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Parsing pass</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Parsing pass">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Parsing pass">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="Gimplification-pass.html#Gimplification-pass" rel="next" title="Gimplification pass">
+<link href="Passes.html#Passes" rel="previous" title="Passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Parsing-pass"></a>
+<div class="header">
+<p>
+Next: <a href="Gimplification-pass.html#Gimplification-pass" accesskey="n" rel="next">Gimplification pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Parsing-pass-1"></a>
+<h3 class="section">9.1 Parsing pass</h3>
+<a name="index-GENERIC"></a>
+<a name="index-lang_005fhooks_002eparse_005ffile"></a>
+<p>The language front end is invoked only once, via
+<code>lang_hooks.parse_file</code>, to parse the entire input. The language
+front end may use any intermediate language representation deemed
+appropriate. The C front end uses GENERIC trees (see <a href="GENERIC.html#GENERIC">GENERIC</a>), plus
+a double handful of language specific tree codes defined in
+<samp>c-common.def</samp>. The Fortran front end uses a completely different
+private representation.
+</p>
+<a name="index-GIMPLE"></a>
+<a name="index-gimplification"></a>
+<a name="index-gimplifier"></a>
+<a name="index-language_002dindependent-intermediate-representation"></a>
+<a name="index-intermediate-representation-lowering"></a>
+<a name="index-lowering_002c-language_002ddependent-intermediate-representation"></a>
+<p>At some point the front end must translate the representation used in the
+front end to a representation understood by the language-independent
+portions of the compiler. Current practice takes one of two forms.
+The C front end manually invokes the gimplifier (see <a href="GIMPLE.html#GIMPLE">GIMPLE</a>) on each function,
+and uses the gimplifier callbacks to convert the language-specific tree
+nodes directly to GIMPLE before passing the function off to be compiled.
+The Fortran front end converts from a private representation to GENERIC,
+which is later lowered to GIMPLE when the function is compiled. Which
+route to choose probably depends on how well GENERIC (plus extensions)
+can be made to match up with the source language and necessary parsing
+data structures.
+</p>
+<p>BUG: Gimplification must occur before nested function lowering,
+and nested function lowering must be done by the front end before
+passing the data off to cgraph.
+</p>
+<p>TODO: Cgraph should control nested function lowering. It would
+only be invoked when it is certain that the outer-most function
+is used.
+</p>
+<p>TODO: Cgraph needs a gimplify_function callback. It should be
+invoked when (1) it is certain that the function is used, (2)
+warning flags specified by the user require some amount of
+compilation in order to honor, (3) the language indicates that
+semantic analysis is not complete until gimplification occurs.
+Hum&hellip; this sounds overly complicated. Perhaps we should just
+have the front end gimplify always; in most cases it&rsquo;s only one
+function call.
+</p>
+<p>The front end needs to pass all function definitions and top level
+declarations off to the middle-end so that they can be compiled and
+emitted to the object file. For a simple procedural language, it is
+usually most convenient to do this as each top level declaration or
+definition is seen. There is also a distinction to be made between
+generating functional code and generating complete debug information.
+The only thing that is absolutely required for functional code is that
+function and data <em>definitions</em> be passed to the middle-end. For
+complete debug information, function, data and type declarations
+should all be passed as well.
+</p>
+<a name="index-rest_005fof_005fdecl_005fcompilation"></a>
+<a name="index-rest_005fof_005ftype_005fcompilation"></a>
+<a name="index-cgraph_005ffinalize_005ffunction"></a>
+<p>In any case, the front end needs each complete top-level function or
+data declaration, and each data definition should be passed to
+<code>rest_of_decl_compilation</code>. Each complete type definition should
+be passed to <code>rest_of_type_compilation</code>. Each function definition
+should be passed to <code>cgraph_finalize_function</code>.
+</p>
+<p>TODO: I know rest_of_compilation currently has all sorts of
+RTL generation semantics. I plan to move all code generation
+bits (both Tree and RTL) to compile_function. Should we hide
+cgraph from the front ends and move back to rest_of_compilation
+as the official interface? Possibly we should rename all three
+interfaces such that the names match in some meaningful way and
+that is more descriptive than &quot;rest_of&quot;.
+</p>
+<p>The middle-end will, at its option, emit the function and data
+definitions immediately or queue them for later processing.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Gimplification-pass.html#Gimplification-pass" accesskey="n" rel="next">Gimplification pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Pass-manager.html b/share/doc/gccint/Pass-manager.html
new file mode 100644
index 0000000..df12ebd
--- /dev/null
+++ b/share/doc/gccint/Pass-manager.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Pass manager</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Pass manager">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Pass manager">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="IPA-passes.html#IPA-passes" rel="next" title="IPA passes">
+<link href="Gimplification-pass.html#Gimplification-pass" rel="previous" title="Gimplification pass">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Pass-manager"></a>
+<div class="header">
+<p>
+Next: <a href="IPA-passes.html#IPA-passes" accesskey="n" rel="next">IPA passes</a>, Previous: <a href="Gimplification-pass.html#Gimplification-pass" accesskey="p" rel="previous">Gimplification pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Pass-manager-1"></a>
+<h3 class="section">9.3 Pass manager</h3>
+
+<p>The pass manager is located in <samp>passes.cc</samp>, <samp>tree-optimize.c</samp>
+and <samp>tree-pass.h</samp>.
+It processes passes as described in <samp>passes.def</samp>.
+Its job is to run all of the individual passes in the correct order,
+and take care of standard bookkeeping that applies to every pass.
+</p>
+<p>The theory of operation is that each pass defines a structure that
+represents everything we need to know about that pass&mdash;when it
+should be run, how it should be run, what intermediate language
+form or on-the-side data structures it needs. We register the pass
+to be run in some particular order, and the pass manager arranges
+for everything to happen in the correct order.
+</p>
+<p>The actuality doesn&rsquo;t completely live up to the theory at present.
+Command-line switches and <code>timevar_id_t</code> enumerations must still
+be defined elsewhere. The pass manager validates constraints but does
+not attempt to (re-)generate data structures or lower intermediate
+language form based on the requirements of the next pass. Nevertheless,
+what is present is useful, and a far sight better than nothing at all.
+</p>
+<p>Each pass should have a unique name.
+Each pass may have its own dump file (for GCC debugging purposes).
+Passes with a name starting with a star do not dump anything.
+Sometimes passes are supposed to share a dump file / option name.
+To still give these unique names, you can use a prefix that is delimited
+by a space from the part that is used for the dump file / option name.
+E.g. When the pass name is &quot;ud dce&quot;, the name used for dump file/options
+is &quot;dce&quot;.
+</p>
+<p>TODO: describe the global variables set up by the pass manager,
+and a brief description of how a new pass should use it.
+I need to look at what info RTL passes use first<small class="enddots">...</small>
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="IPA-passes.html#IPA-passes" accesskey="n" rel="next">IPA passes</a>, Previous: <a href="Gimplification-pass.html#Gimplification-pass" accesskey="p" rel="previous">Gimplification pass</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Passes.html b/share/doc/gccint/Passes.html
new file mode 100644
index 0000000..280f8de
--- /dev/null
+++ b/share/doc/gccint/Passes.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Parsing-pass.html#Parsing-pass" rel="next" title="Parsing pass">
+<link href="Option-properties.html#Option-properties" rel="previous" title="Option properties">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Passes"></a>
+<div class="header">
+<p>
+Next: <a href="poly_005fint.html#poly_005fint" accesskey="n" rel="next">poly_int</a>, Previous: <a href="Options.html#Options" accesskey="p" rel="previous">Options</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Passes-and-Files-of-the-Compiler"></a>
+<h2 class="chapter">9 Passes and Files of the Compiler</h2>
+<a name="index-passes-and-files-of-the-compiler"></a>
+<a name="index-files-and-passes-of-the-compiler"></a>
+<a name="index-compiler-passes-and-files"></a>
+<a name="index-pass-dumps"></a>
+
+<p>This chapter is dedicated to giving an overview of the optimization and
+code generation passes of the compiler. In the process, it describes
+some of the language front end interface, though this description is no
+where near complete.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Parsing-pass.html#Parsing-pass" accesskey="1">Parsing pass</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The language front end turns text into bits.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Gimplification-pass.html#Gimplification-pass" accesskey="2">Gimplification pass</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The bits are turned into something we can optimize.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Pass-manager.html#Pass-manager" accesskey="3">Pass manager</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sequencing the optimization passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="IPA-passes.html#IPA-passes" accesskey="4">IPA passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Inter-procedural optimizations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tree-SSA-passes.html#Tree-SSA-passes" accesskey="5">Tree SSA passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Optimizations on a high-level representation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-passes.html#RTL-passes" accesskey="6">RTL passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Optimizations on a low-level representation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Optimization-info.html#Optimization-info" accesskey="7">Optimization info</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dumping optimization information from passes.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Pattern-Ordering.html b/share/doc/gccint/Pattern-Ordering.html
new file mode 100644
index 0000000..d3a9409
--- /dev/null
+++ b/share/doc/gccint/Pattern-Ordering.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Pattern Ordering</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Pattern Ordering">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Pattern Ordering">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Dependent-Patterns.html#Dependent-Patterns" rel="next" title="Dependent Patterns">
+<link href="Standard-Names.html#Standard-Names" rel="previous" title="Standard Names">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Pattern-Ordering"></a>
+<div class="header">
+<p>
+Next: <a href="Dependent-Patterns.html#Dependent-Patterns" accesskey="n" rel="next">Dependent Patterns</a>, Previous: <a href="Standard-Names.html#Standard-Names" accesskey="p" rel="previous">Standard Names</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="When-the-Order-of-Patterns-Matters"></a>
+<h3 class="section">17.10 When the Order of Patterns Matters</h3>
+<a name="index-Pattern-Ordering"></a>
+<a name="index-Ordering-of-Patterns"></a>
+
+<p>Sometimes an insn can match more than one instruction pattern. Then the
+pattern that appears first in the machine description is the one used.
+Therefore, more specific patterns (patterns that will match fewer things)
+and faster instructions (those that will produce better code when they
+do match) should usually go first in the description.
+</p>
+<p>In some cases the effect of ordering the patterns can be used to hide
+a pattern when it is not valid. For example, the 68000 has an
+instruction for converting a fullword to floating point and another
+for converting a byte to floating point. An instruction converting
+an integer to floating point could match either one. We put the
+pattern to convert the fullword first to make sure that one will
+be used rather than the other. (Otherwise a large integer might
+be generated as a single-byte immediate quantity, which would not work.)
+Instead of using this pattern ordering it would be possible to make the
+pattern for convert-a-byte smart enough to deal properly with any
+constant value.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Patterns.html b/share/doc/gccint/Patterns.html
new file mode 100644
index 0000000..d387fad
--- /dev/null
+++ b/share/doc/gccint/Patterns.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Example.html#Example" rel="next" title="Example">
+<link href="Overview.html#Overview" rel="previous" title="Overview">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Patterns"></a>
+<div class="header">
+<p>
+Next: <a href="Example.html#Example" accesskey="n" rel="next">Example</a>, Previous: <a href="Overview.html#Overview" accesskey="p" rel="previous">Overview</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Everything-about-Instruction-Patterns"></a>
+<h3 class="section">17.2 Everything about Instruction Patterns</h3>
+<a name="index-patterns"></a>
+<a name="index-instruction-patterns"></a>
+
+<a name="index-define_005finsn"></a>
+<p>A <code>define_insn</code> expression is used to define instruction patterns
+to which insns may be matched. A <code>define_insn</code> expression contains
+an incomplete RTL expression, with pieces to be filled in later, operand
+constraints that restrict how the pieces can be filled in, and an output
+template or C code to generate the assembler output.
+</p>
+<p>A <code>define_insn</code> is an RTL expression containing four or five operands:
+</p>
+<ol>
+<li> An optional name <var>n</var>. When a name is present, the compiler
+automically generates a C++ function &lsquo;<samp>gen_<var>n</var></samp>&rsquo; that takes
+the operands of the instruction as arguments and returns the instruction&rsquo;s
+rtx pattern. The compiler also assigns the instruction a unique code
+&lsquo;<samp>CODE_FOR_<var>n</var></samp>&rsquo;, with all such codes belonging to an enum
+called <code>insn_code</code>.
+
+<p>These names serve one of two purposes. The first is to indicate that the
+instruction performs a certain standard job for the RTL-generation
+pass of the compiler, such as a move, an addition, or a conditional
+jump. The second is to help the target generate certain target-specific
+operations, such as when implementing target-specific intrinsic functions.
+</p>
+<p>It is better to prefix target-specific names with the name of the
+target, to avoid any clash with current or future standard names.
+</p>
+<p>The absence of a name is indicated by writing an empty string
+where the name should go. Nameless instruction patterns are never
+used for generating RTL code, but they may permit several simpler insns
+to be combined later on.
+</p>
+<p>For the purpose of debugging the compiler, you may also specify a
+name beginning with the &lsquo;<samp>*</samp>&rsquo; character. Such a name is used only
+for identifying the instruction in RTL dumps; it is equivalent to having
+a nameless pattern for all other purposes. Names beginning with the
+&lsquo;<samp>*</samp>&rsquo; character are not required to be unique.
+</p>
+<p>The name may also have the form &lsquo;<samp>@<var>n</var></samp>&rsquo;. This has the same
+effect as a name &lsquo;<samp><var>n</var></samp>&rsquo;, but in addition tells the compiler to
+generate further helper functions; see <a href="Parameterized-Names.html#Parameterized-Names">Parameterized Names</a> for details.
+</p>
+</li><li> The <em>RTL template</em>: This is a vector of incomplete RTL expressions
+which describe the semantics of the instruction (see <a href="RTL-Template.html#RTL-Template">RTL Template</a>).
+It is incomplete because it may contain <code>match_operand</code>,
+<code>match_operator</code>, and <code>match_dup</code> expressions that stand for
+operands of the instruction.
+
+<p>If the vector has multiple elements, the RTL template is treated as a
+<code>parallel</code> expression.
+</p>
+</li><li> <a name="index-pattern-conditions"></a>
+<a name="index-conditions_002c-in-patterns"></a>
+The condition: This is a string which contains a C expression. When the
+compiler attempts to match RTL against a pattern, the condition is
+evaluated. If the condition evaluates to <code>true</code>, the match is
+permitted. The condition may be an empty string, which is treated
+as always <code>true</code>.
+
+<a name="index-named-patterns-and-conditions"></a>
+<p>For a named pattern, the condition may not depend on the data in the
+insn being matched, but only the target-machine-type flags. The compiler
+needs to test these conditions during initialization in order to learn
+exactly which named instructions are available in a particular run.
+</p>
+<a name="index-operands-1"></a>
+<p>For nameless patterns, the condition is applied only when matching an
+individual insn, and only after the insn has matched the pattern&rsquo;s
+recognition template. The insn&rsquo;s operands may be found in the vector
+<code>operands</code>.
+</p>
+<p>An instruction condition cannot become more restrictive as compilation
+progresses. If the condition accepts a particular RTL instruction at
+one stage of compilation, it must continue to accept that instruction
+until the final pass. For example, &lsquo;<samp>!reload_completed</samp>&rsquo; and
+&lsquo;<samp>can_create_pseudo_p ()</samp>&rsquo; are both invalid instruction conditions,
+because they are true during the earlier RTL passes and false during
+the later ones. For the same reason, if a condition accepts an
+instruction before register allocation, it cannot later try to control
+register allocation by excluding certain register or value combinations.
+</p>
+<p>Although a condition cannot become more restrictive as compilation
+progresses, the condition for a nameless pattern <em>can</em> become
+more permissive. For example, a nameless instruction can require
+&lsquo;<samp>reload_completed</samp>&rsquo; to be true, in which case it only matches
+after register allocation.
+</p>
+</li><li> The <em>output template</em> or <em>output statement</em>: This is either
+a string, or a fragment of C code which returns a string.
+
+<p>When simple substitution isn&rsquo;t general enough, you can specify a piece
+of C code to compute the output. See <a href="Output-Statement.html#Output-Statement">Output Statement</a>.
+</p>
+</li><li> The <em>insn attributes</em>: This is an optional vector containing the values of
+attributes for insns matching this pattern (see <a href="Insn-Attributes.html#Insn-Attributes">Insn Attributes</a>).
+</li></ol>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Example.html#Example" accesskey="n" rel="next">Example</a>, Previous: <a href="Overview.html#Overview" accesskey="p" rel="previous">Overview</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Peephole-Definitions.html b/share/doc/gccint/Peephole-Definitions.html
new file mode 100644
index 0000000..e2825b5
--- /dev/null
+++ b/share/doc/gccint/Peephole-Definitions.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Peephole Definitions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Peephole Definitions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Peephole Definitions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="define_005fpeephole.html#define_005fpeephole" rel="next" title="define_peephole">
+<link href="Including-Patterns.html#Including-Patterns" rel="previous" title="Including Patterns">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Peephole-Definitions"></a>
+<div class="header">
+<p>
+Next: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="n" rel="next">Insn Attributes</a>, Previous: <a href="Including-Patterns.html#Including-Patterns" accesskey="p" rel="previous">Including Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Machine_002dSpecific-Peephole-Optimizers"></a>
+<h3 class="section">17.18 Machine-Specific Peephole Optimizers</h3>
+<a name="index-peephole-optimizer-definitions"></a>
+<a name="index-defining-peephole-optimizers"></a>
+
+<p>In addition to instruction patterns the <samp>md</samp> file may contain
+definitions of machine-specific peephole optimizations.
+</p>
+<p>The combiner does not notice certain peephole optimizations when the data
+flow in the program does not suggest that it should try them. For example,
+sometimes two consecutive insns related in purpose can be combined even
+though the second one does not appear to use a register computed in the
+first one. A machine-specific peephole optimizer can detect such
+opportunities.
+</p>
+<p>There are two forms of peephole definitions that may be used. The
+original <code>define_peephole</code> is run at assembly output time to
+match insns and substitute assembly text. Use of <code>define_peephole</code>
+is deprecated.
+</p>
+<p>A newer <code>define_peephole2</code> matches insns and substitutes new
+insns. The <code>peephole2</code> pass is run after register allocation
+but before scheduling, which may result in much better code for
+targets that do scheduling.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="define_005fpeephole.html#define_005fpeephole" accesskey="1">define_peephole</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL to Text Peephole Optimizers
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="define_005fpeephole2.html#define_005fpeephole2" accesskey="2">define_peephole2</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL to RTL Peephole Optimizers
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Per_002dFunction-Data.html b/share/doc/gccint/Per_002dFunction-Data.html
new file mode 100644
index 0000000..8d1ccad
--- /dev/null
+++ b/share/doc/gccint/Per_002dFunction-Data.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Per-Function Data</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Per-Function Data">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Per-Function Data">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Storage-Layout.html#Storage-Layout" rel="next" title="Storage Layout">
+<link href="Run_002dtime-Target.html#Run_002dtime-Target" rel="previous" title="Run-time Target">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Per_002dFunction-Data"></a>
+<div class="header">
+<p>
+Next: <a href="Storage-Layout.html#Storage-Layout" accesskey="n" rel="next">Storage Layout</a>, Previous: <a href="Run_002dtime-Target.html#Run_002dtime-Target" accesskey="p" rel="previous">Run-time Target</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-data-structures-for-per_002dfunction-information_002e"></a>
+<h3 class="section">18.4 Defining data structures for per-function information.</h3>
+<a name="index-per_002dfunction-data"></a>
+<a name="index-data-structures"></a>
+
+<p>If the target needs to store information on a per-function basis, GCC
+provides a macro and a couple of variables to allow this. Note, just
+using statics to store the information is a bad idea, since GCC supports
+nested functions, so you can be halfway through encoding one function
+when another one comes along.
+</p>
+<p>GCC defines a data structure called <code>struct function</code> which
+contains all of the data specific to an individual function. This
+structure contains a field called <code>machine</code> whose type is
+<code>struct machine_function *</code>, which can be used by targets to point
+to their own specific data.
+</p>
+<p>If a target needs per-function specific data it should define the type
+<code>struct machine_function</code> and also the macro <code>INIT_EXPANDERS</code>.
+This macro should be used to initialize the function pointer
+<code>init_machine_status</code>. This pointer is explained below.
+</p>
+<p>One typical use of per-function, target specific data is to create an
+RTX to hold the register containing the function&rsquo;s return address. This
+RTX can then be used to implement the <code>__builtin_return_address</code>
+function, for level 0.
+</p>
+<p>Note&mdash;earlier implementations of GCC used a single data area to hold
+all of the per-function information. Thus when processing of a nested
+function began the old per-function data had to be pushed onto a
+stack, and when the processing was finished, it had to be popped off the
+stack. GCC used to provide function pointers called
+<code>save_machine_status</code> and <code>restore_machine_status</code> to handle
+the saving and restoring of the target specific information. Since the
+single data area approach is no longer used, these pointers are no
+longer supported.
+</p>
+<dl>
+<dt><a name="index-INIT_005fEXPANDERS"></a>Macro: <strong>INIT_EXPANDERS</strong></dt>
+<dd><p>Macro called to initialize any target specific information. This macro
+is called once per function, before generation of any RTL has begun.
+The intention of this macro is to allow the initialization of the
+function pointer <code>init_machine_status</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-init_005fmachine_005fstatus"></a>Variable: <em>void (*)(struct function *)</em> <strong>init_machine_status</strong></dt>
+<dd><p>If this function pointer is non-<code>NULL</code> it will be called once per
+function, before function compilation starts, in order to allow the
+target to perform any target specific initialization of the
+<code>struct function</code> structure. It is intended that this would be
+used to initialize the <code>machine</code> of that structure.
+</p>
+<p><code>struct machine_function</code> structures are expected to be freed by GC.
+Generally, any memory that they reference must be allocated by using
+GC allocation, including the structure itself.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Storage-Layout.html#Storage-Layout" accesskey="n" rel="next">Storage Layout</a>, Previous: <a href="Run_002dtime-Target.html#Run_002dtime-Target" accesskey="p" rel="previous">Run-time Target</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugin-API.html b/share/doc/gccint/Plugin-API.html
new file mode 100644
index 0000000..3b7c263
--- /dev/null
+++ b/share/doc/gccint/Plugin-API.html
@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugin API</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugin API">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugin API">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-pass.html#Plugins-pass" rel="next" title="Plugins pass">
+<link href="Plugins-loading.html#Plugins-loading" rel="previous" title="Plugins loading">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugin-API"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-pass.html#Plugins-pass" accesskey="n" rel="next">Plugins pass</a>, Previous: <a href="Plugins-loading.html#Plugins-loading" accesskey="p" rel="previous">Plugins loading</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Plugin-API-1"></a>
+<h3 class="section">24.2 Plugin API</h3>
+
+<p>Plugins are activated by the compiler at specific events as defined in
+<samp>gcc-plugin.h</samp>. For each event of interest, the plugin should
+call <code>register_callback</code> specifying the name of the event and
+address of the callback function that will handle that event.
+</p>
+<p>The header <samp>gcc-plugin.h</samp> must be the first gcc header to be included.
+</p>
+<a name="Plugin-license-check"></a>
+<h4 class="subsection">24.2.1 Plugin license check</h4>
+
+<p>Every plugin should define the global symbol <code>plugin_is_GPL_compatible</code>
+to assert that it has been licensed under a GPL-compatible license.
+If this symbol does not exist, the compiler will emit a fatal error
+and exit with the error message:
+</p>
+<div class="smallexample">
+<pre class="smallexample">fatal error: plugin <var>name</var> is not licensed under a GPL-compatible license
+<var>name</var>: undefined symbol: plugin_is_GPL_compatible
+compilation terminated
+</pre></div>
+
+<p>The declared type of the symbol should be int, to match a forward declaration
+in <samp>gcc-plugin.h</samp> that suppresses C++ mangling. It does not need to be in
+any allocated section, though. The compiler merely asserts that
+the symbol exists in the global scope. Something like this is enough:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int plugin_is_GPL_compatible;
+</pre></div>
+
+<a name="Plugin-initialization"></a>
+<h4 class="subsection">24.2.2 Plugin initialization</h4>
+
+<p>Every plugin should export a function called <code>plugin_init</code> that
+is called right after the plugin is loaded. This function is
+responsible for registering all the callbacks required by the plugin
+and do any other required initialization.
+</p>
+<p>This function is called from <code>compile_file</code> right before invoking
+the parser. The arguments to <code>plugin_init</code> are:
+</p>
+<ul>
+<li> <code>plugin_info</code>: Plugin invocation information.
+</li><li> <code>version</code>: GCC version.
+</li></ul>
+
+<p>The <code>plugin_info</code> struct is defined as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct plugin_name_args
+{
+ char *base_name; /* Short name of the plugin
+ (filename without .so suffix). */
+ const char *full_name; /* Path to the plugin as specified with
+ -fplugin=. */
+ int argc; /* Number of arguments specified with
+ -fplugin-arg-.... */
+ struct plugin_argument *argv; /* Array of ARGC key-value pairs. */
+ const char *version; /* Version string provided by plugin. */
+ const char *help; /* Help string provided by plugin. */
+}
+</pre></div>
+
+<p>If initialization fails, <code>plugin_init</code> must return a non-zero
+value. Otherwise, it should return 0.
+</p>
+<p>The version of the GCC compiler loading the plugin is described by the
+following structure:
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct plugin_gcc_version
+{
+ const char *basever;
+ const char *datestamp;
+ const char *devphase;
+ const char *revision;
+ const char *configuration_arguments;
+};
+</pre></div>
+
+<p>The function <code>plugin_default_version_check</code> takes two pointers to
+such structure and compare them field by field. It can be used by the
+plugin&rsquo;s <code>plugin_init</code> function.
+</p>
+<p>The version of GCC used to compile the plugin can be found in the symbol
+<code>gcc_version</code> defined in the header <samp>plugin-version.h</samp>. The
+recommended version check to perform looks like
+</p>
+<div class="smallexample">
+<pre class="smallexample">#include &quot;plugin-version.h&quot;
+...
+
+int
+plugin_init (struct plugin_name_args *plugin_info,
+ struct plugin_gcc_version *version)
+{
+ if (!plugin_default_version_check (version, &amp;gcc_version))
+ return 1;
+
+}
+</pre></div>
+
+<p>but you can also check the individual fields if you want a less strict check.
+</p>
+<a name="Plugin-callbacks"></a>
+<h4 class="subsection">24.2.3 Plugin callbacks</h4>
+
+<p>Callback functions have the following prototype:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* The prototype for a plugin callback function.
+ gcc_data - event-specific data provided by GCC
+ user_data - plugin-specific data provided by the plug-in. */
+typedef void (*plugin_callback_func)(void *gcc_data, void *user_data);
+</pre></div>
+
+<p>Callbacks can be invoked at the following pre-determined events:
+</p>
+
+<div class="smallexample">
+<pre class="smallexample">enum plugin_event
+{
+ PLUGIN_START_PARSE_FUNCTION, /* Called before parsing the body of a function. */
+ PLUGIN_FINISH_PARSE_FUNCTION, /* After finishing parsing a function. */
+ PLUGIN_PASS_MANAGER_SETUP, /* To hook into pass manager. */
+ PLUGIN_FINISH_TYPE, /* After finishing parsing a type. */
+ PLUGIN_FINISH_DECL, /* After finishing parsing a declaration. */
+ PLUGIN_FINISH_UNIT, /* Useful for summary processing. */
+ PLUGIN_PRE_GENERICIZE, /* Allows to see low level AST in C and C++ frontends. */
+ PLUGIN_FINISH, /* Called before GCC exits. */
+ PLUGIN_INFO, /* Information about the plugin. */
+ PLUGIN_GGC_START, /* Called at start of GCC Garbage Collection. */
+ PLUGIN_GGC_MARKING, /* Extend the GGC marking. */
+ PLUGIN_GGC_END, /* Called at end of GGC. */
+ PLUGIN_REGISTER_GGC_ROOTS, /* Register an extra GGC root table. */
+ PLUGIN_ATTRIBUTES, /* Called during attribute registration */
+ PLUGIN_START_UNIT, /* Called before processing a translation unit. */
+ PLUGIN_PRAGMAS, /* Called during pragma registration. */
+ /* Called before first pass from all_passes. */
+ PLUGIN_ALL_PASSES_START,
+ /* Called after last pass from all_passes. */
+ PLUGIN_ALL_PASSES_END,
+ /* Called before first ipa pass. */
+ PLUGIN_ALL_IPA_PASSES_START,
+ /* Called after last ipa pass. */
+ PLUGIN_ALL_IPA_PASSES_END,
+ /* Allows to override pass gate decision for current_pass. */
+ PLUGIN_OVERRIDE_GATE,
+ /* Called before executing a pass. */
+ PLUGIN_PASS_EXECUTION,
+ /* Called before executing subpasses of a GIMPLE_PASS in
+ execute_ipa_pass_list. */
+ PLUGIN_EARLY_GIMPLE_PASSES_START,
+ /* Called after executing subpasses of a GIMPLE_PASS in
+ execute_ipa_pass_list. */
+ PLUGIN_EARLY_GIMPLE_PASSES_END,
+ /* Called when a pass is first instantiated. */
+ PLUGIN_NEW_PASS,
+/* Called when a file is #include-d or given via the #line directive.
+ This could happen many times. The event data is the included file path,
+ as a const char* pointer. */
+ PLUGIN_INCLUDE_FILE,
+
+ /* Called when -fanalyzer starts. The event data is an
+ ana::plugin_analyzer_init_iface *. */
+ PLUGIN_ANALYZER_INIT,
+
+ PLUGIN_EVENT_FIRST_DYNAMIC /* Dummy event used for indexing callback
+ array. */
+};
+</pre></div>
+
+<p>In addition, plugins can also look up the enumerator of a named event,
+and / or generate new events dynamically, by calling the function
+<code>get_named_event_id</code>.
+</p>
+<p>To register a callback, the plugin calls <code>register_callback</code> with
+the arguments:
+</p>
+<ul>
+<li> <code>char *name</code>: Plugin name.
+</li><li> <code>int event</code>: The event code.
+</li><li> <code>plugin_callback_func callback</code>: The function that handles <code>event</code>.
+</li><li> <code>void *user_data</code>: Pointer to plugin-specific data.
+</li></ul>
+
+<p>For the <i>PLUGIN_PASS_MANAGER_SETUP</i>, <i>PLUGIN_INFO</i>, and
+<i>PLUGIN_REGISTER_GGC_ROOTS</i> pseudo-events the <code>callback</code> should be null,
+and the <code>user_data</code> is specific.
+</p>
+<p>When the <i>PLUGIN_PRAGMAS</i> event is triggered (with a null pointer as
+data from GCC), plugins may register their own pragmas. Notice that
+pragmas are not available from <samp>lto1</samp>, so plugins used with
+<code>-flto</code> option to GCC during link-time optimization cannot use
+pragmas and do not even see functions like <code>c_register_pragma</code> or
+<code>pragma_lex</code>.
+</p>
+<p>The <i>PLUGIN_INCLUDE_FILE</i> event, with a <code>const char*</code> file path as
+GCC data, is triggered for processing of <code>#include</code> or
+<code>#line</code> directives.
+</p>
+<p>The <i>PLUGIN_FINISH</i> event is the last time that plugins can call GCC
+functions, notably emit diagnostics with <code>warning</code>, <code>error</code>
+etc.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Plugins-pass.html#Plugins-pass" accesskey="n" rel="next">Plugins pass</a>, Previous: <a href="Plugins-loading.html#Plugins-loading" accesskey="p" rel="previous">Plugins loading</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-GC.html b/share/doc/gccint/Plugins-GC.html
new file mode 100644
index 0000000..ba470eb
--- /dev/null
+++ b/share/doc/gccint/Plugins-GC.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins GC</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins GC">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins GC">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-description.html#Plugins-description" rel="next" title="Plugins description">
+<link href="Plugins-pass.html#Plugins-pass" rel="previous" title="Plugins pass">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-GC"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-description.html#Plugins-description" accesskey="n" rel="next">Plugins description</a>, Previous: <a href="Plugins-pass.html#Plugins-pass" accesskey="p" rel="previous">Plugins pass</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Interacting-with-the-GCC-Garbage-Collector"></a>
+<h3 class="section">24.4 Interacting with the GCC Garbage Collector</h3>
+
+<p>Some plugins may want to be informed when GGC (the GCC Garbage
+Collector) is running. They can register callbacks for the
+<code>PLUGIN_GGC_START</code> and <code>PLUGIN_GGC_END</code> events (for which
+the callback is called with a null <code>gcc_data</code>) to be notified of
+the start or end of the GCC garbage collection.
+</p>
+<p>Some plugins may need to have GGC mark additional data. This can be
+done by registering a callback (called with a null <code>gcc_data</code>)
+for the <code>PLUGIN_GGC_MARKING</code> event. Such callbacks can call the
+<code>ggc_set_mark</code> routine, preferably through the <code>ggc_mark</code> macro
+(and conversely, these routines should usually not be used in plugins
+outside of the <code>PLUGIN_GGC_MARKING</code> event). Plugins that wish to hold
+weak references to gc data may also use this event to drop weak references when
+the object is about to be collected. The <code>ggc_marked_p</code> function can be
+used to tell if an object is marked, or is about to be collected. The
+<code>gt_clear_cache</code> overloads which some types define may also be of use in
+managing weak references.
+</p>
+<p>Some plugins may need to add extra GGC root tables, e.g. to handle their own
+<code>GTY</code>-ed data. This can be done with the <code>PLUGIN_REGISTER_GGC_ROOTS</code>
+pseudo-event with a null callback and the extra root table (of type <code>struct
+ggc_root_tab*</code>) as <code>user_data</code>. Running the
+ <code>gengtype -p <var>source-dir</var> <var>file-list</var> <var>plugin*.c</var> ...</code>
+utility generates these extra root tables.
+</p>
+<p>You should understand the details of memory management inside GCC
+before using <code>PLUGIN_GGC_MARKING</code> or <code>PLUGIN_REGISTER_GGC_ROOTS</code>.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-attr.html b/share/doc/gccint/Plugins-attr.html
new file mode 100644
index 0000000..8937ff5
--- /dev/null
+++ b/share/doc/gccint/Plugins-attr.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins attr</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins attr">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins attr">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-recording.html#Plugins-recording" rel="next" title="Plugins recording">
+<link href="Plugins-description.html#Plugins-description" rel="previous" title="Plugins description">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-attr"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-recording.html#Plugins-recording" accesskey="n" rel="next">Plugins recording</a>, Previous: <a href="Plugins-description.html#Plugins-description" accesskey="p" rel="previous">Plugins description</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Registering-custom-attributes-or-pragmas"></a>
+<h3 class="section">24.6 Registering custom attributes or pragmas</h3>
+
+<p>For analysis (or other) purposes it is useful to be able to add custom
+attributes or pragmas.
+</p>
+<p>The <code>PLUGIN_ATTRIBUTES</code> callback is called during attribute
+registration. Use the <code>register_attribute</code> function to register
+custom attributes.
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* Attribute handler callback */
+static tree
+handle_user_attribute (tree *node, tree name, tree args,
+ int flags, bool *no_add_attrs)
+{
+ return NULL_TREE;
+}
+
+/* Attribute definition */
+static struct attribute_spec user_attr =
+ { &quot;user&quot;, 1, 1, false, false, false, false, handle_user_attribute, NULL };
+
+/* Plugin callback called during attribute registration.
+Registered with register_callback (plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL)
+*/
+static void
+register_attributes (void *event_data, void *data)
+{
+ warning (0, G_(&quot;Callback to register attributes&quot;));
+ register_attribute (&amp;user_attr);
+}
+
+</pre></div>
+
+
+<p>The <i>PLUGIN_PRAGMAS</i> callback is called once during pragmas
+registration. Use the <code>c_register_pragma</code>,
+<code>c_register_pragma_with_data</code>,
+<code>c_register_pragma_with_expansion</code>,
+<code>c_register_pragma_with_expansion_and_data</code> functions to register
+custom pragmas and their handlers (which often want to call
+<code>pragma_lex</code>) from <samp>c-family/c-pragma.h</samp>.
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* Plugin callback called during pragmas registration. Registered with
+ register_callback (plugin_name, PLUGIN_PRAGMAS,
+ register_my_pragma, NULL);
+*/
+static void
+register_my_pragma (void *event_data, void *data)
+{
+ warning (0, G_(&quot;Callback to register pragmas&quot;));
+ c_register_pragma (&quot;GCCPLUGIN&quot;, &quot;sayhello&quot;, handle_pragma_sayhello);
+}
+</pre></div>
+
+<p>It is suggested to pass <code>&quot;GCCPLUGIN&quot;</code> (or a short name identifying
+your plugin) as the &ldquo;space&rdquo; argument of your pragma.
+</p>
+<p>Pragmas registered with <code>c_register_pragma_with_expansion</code> or
+<code>c_register_pragma_with_expansion_and_data</code> support
+preprocessor expansions. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define NUMBER 10
+#pragma GCCPLUGIN foothreshold (NUMBER)
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-building.html b/share/doc/gccint/Plugins-building.html
new file mode 100644
index 0000000..eba055a
--- /dev/null
+++ b/share/doc/gccint/Plugins-building.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins building</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins building">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins building">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="LTO.html#LTO" rel="next" title="LTO">
+<link href="Plugins-tracking.html#Plugins-tracking" rel="previous" title="Plugins tracking">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-building"></a>
+<div class="header">
+<p>
+Previous: <a href="Plugins-tracking.html#Plugins-tracking" accesskey="p" rel="previous">Plugins tracking</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Building-GCC-plugins"></a>
+<h3 class="section">24.10 Building GCC plugins</h3>
+
+<p>If plugins are enabled, GCC installs the headers needed to build a
+plugin (somewhere in the installation tree, e.g. under
+<samp>/usr/local</samp>). In particular a <samp>plugin/include</samp> directory
+is installed, containing all the header files needed to build plugins.
+</p>
+<p>On most systems, you can query this <code>plugin</code> directory by
+invoking <code>gcc -print-file-name=plugin</code> (replace if needed
+<code>gcc</code> with the appropriate program path).
+</p>
+<p>Inside plugins, this <code>plugin</code> directory name can be queried by
+calling <code>default_plugin_dir_name ()</code>.
+</p>
+<p>Plugins may know, when they are compiled, the GCC version for which
+<samp>plugin-version.h</samp> is provided. The constant macros
+<code>GCCPLUGIN_VERSION_MAJOR</code>, <code>GCCPLUGIN_VERSION_MINOR</code>,
+<code>GCCPLUGIN_VERSION_PATCHLEVEL</code>, <code>GCCPLUGIN_VERSION</code> are
+integer numbers, so a plugin could ensure it is built for GCC 4.7 with
+</p><div class="smallexample">
+<pre class="smallexample">#if GCCPLUGIN_VERSION != 4007
+#error this GCC plugin is for GCC 4.7
+#endif
+</pre></div>
+
+<p>The following GNU Makefile excerpt shows how to build a simple plugin:
+</p>
+<div class="smallexample">
+<pre class="smallexample">HOST_GCC=g++
+TARGET_GCC=gcc
+PLUGIN_SOURCE_FILES= plugin1.c plugin2.cc
+GCCPLUGINS_DIR:= $(shell $(TARGET_GCC) -print-file-name=plugin)
+CXXFLAGS+= -I$(GCCPLUGINS_DIR)/include -fPIC -fno-rtti -O2
+
+plugin.so: $(PLUGIN_SOURCE_FILES)
+ $(HOST_GCC) -shared $(CXXFLAGS) $^ -o $@
+</pre></div>
+
+<p>A single source file plugin may be built with <code>g++ -I`gcc
+-print-file-name=plugin`/include -fPIC -shared -fno-rtti -O2 plugin.cc -o
+plugin.so</code>, using backquote shell syntax to query the <samp>plugin</samp>
+directory.
+</p>
+<p>Plugin support on Windows/MinGW has a number of limitations and
+additional requirements. When building a plugin on Windows we have to
+link an import library for the corresponding backend executable, for
+example, <samp>cc1.exe</samp>, <samp>cc1plus.exe</samp>, etc., in order to gain
+access to the symbols provided by GCC. This means that on Windows a
+plugin is language-specific, for example, for C, C++, etc. If you wish
+to use your plugin with multiple languages, then you will need to
+build multiple plugin libraries and either instruct your users on how
+to load the correct version or provide a compiler wrapper that does
+this automatically.
+</p>
+<p>Additionally, on Windows the plugin library has to export the
+<code>plugin_is_GPL_compatible</code> and <code>plugin_init</code> symbols. If you
+do not wish to modify the source code of your plugin, then you can use
+the <samp>-Wl,--export-all-symbols</samp> option or provide a suitable DEF
+file. Alternatively, you can export just these two symbols by decorating
+them with <code>__declspec(dllexport)</code>, for example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int plugin_is_GPL_compatible;
+
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int plugin_init (plugin_name_args *, plugin_gcc_version *)
+</pre></div>
+
+<p>The import libraries are installed into the <code>plugin</code> directory
+and their names are derived by appending the <code>.a</code> extension to
+the backend executable names, for example, <samp>cc1.exe.a</samp>,
+<samp>cc1plus.exe.a</samp>, etc. The following command line shows how to
+build the single source file plugin on Windows to be used with the C++
+compiler:
+</p>
+<div class="smallexample">
+<pre class="smallexample">g++ -I`gcc -print-file-name=plugin`/include -shared -Wl,--export-all-symbols \
+-o plugin.dll plugin.cc `gcc -print-file-name=plugin`/cc1plus.exe.a
+</pre></div>
+
+<p>When a plugin needs to use <code>gengtype</code>, be sure that both
+<samp>gengtype</samp> and <samp>gtype.state</samp> have the same version as the
+GCC for which the plugin is built.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Plugins-tracking.html#Plugins-tracking" accesskey="p" rel="previous">Plugins tracking</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-description.html b/share/doc/gccint/Plugins-description.html
new file mode 100644
index 0000000..06b0b06
--- /dev/null
+++ b/share/doc/gccint/Plugins-description.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins description</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins description">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins description">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-attr.html#Plugins-attr" rel="next" title="Plugins attr">
+<link href="Plugins-GC.html#Plugins-GC" rel="previous" title="Plugins GC">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-description"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-attr.html#Plugins-attr" accesskey="n" rel="next">Plugins attr</a>, Previous: <a href="Plugins-GC.html#Plugins-GC" accesskey="p" rel="previous">Plugins GC</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Giving-information-about-a-plugin"></a>
+<h3 class="section">24.5 Giving information about a plugin</h3>
+
+<p>A plugin should give some information to the user about itself. This
+uses the following structure:
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct plugin_info
+{
+ const char *version;
+ const char *help;
+};
+</pre></div>
+
+<p>Such a structure is passed as the <code>user_data</code> by the plugin&rsquo;s
+init routine using <code>register_callback</code> with the
+<code>PLUGIN_INFO</code> pseudo-event and a null callback.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-gate.html b/share/doc/gccint/Plugins-gate.html
new file mode 100644
index 0000000..5592d8c
--- /dev/null
+++ b/share/doc/gccint/Plugins-gate.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins gate</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins gate">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins gate">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-tracking.html#Plugins-tracking" rel="next" title="Plugins tracking">
+<link href="Plugins-recording.html#Plugins-recording" rel="previous" title="Plugins recording">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-gate"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-tracking.html#Plugins-tracking" accesskey="n" rel="next">Plugins tracking</a>, Previous: <a href="Plugins-recording.html#Plugins-recording" accesskey="p" rel="previous">Plugins recording</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Controlling-which-passes-are-being-run"></a>
+<h3 class="section">24.8 Controlling which passes are being run</h3>
+
+<p>After the original gate function for a pass is called, its result
+- the gate status - is stored as an integer.
+Then the event <code>PLUGIN_OVERRIDE_GATE</code> is invoked, with a pointer
+to the gate status in the <code>gcc_data</code> parameter to the callback function.
+A nonzero value of the gate status means that the pass is to be executed.
+You can both read and write the gate status via the passed pointer.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-loading.html b/share/doc/gccint/Plugins-loading.html
new file mode 100644
index 0000000..5626212
--- /dev/null
+++ b/share/doc/gccint/Plugins-loading.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins loading</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins loading">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins loading">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugin-API.html#Plugin-API" rel="next" title="Plugin API">
+<link href="Plugins.html#Plugins" rel="previous" title="Plugins">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-loading"></a>
+<div class="header">
+<p>
+Next: <a href="Plugin-API.html#Plugin-API" accesskey="n" rel="next">Plugin API</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Loading-Plugins"></a>
+<h3 class="section">24.1 Loading Plugins</h3>
+
+<p>Plugins are supported on platforms that support <samp>-ldl
+-rdynamic</samp> as well as Windows/MinGW. They are loaded by the compiler
+using <code>dlopen</code> or equivalent and invoked at pre-determined
+locations in the compilation process.
+</p>
+<p>Plugins are loaded with
+</p>
+<p><samp>-fplugin=/path/to/<var>name</var>.<var>ext</var></samp> <samp>-fplugin-arg-<var>name</var>-<var>key1</var>[=<var>value1</var>]</samp>
+</p>
+<p>Where <var>name</var> is the plugin name and <var>ext</var> is the platform-specific
+dynamic library extension. It should be <code>dll</code> on Windows/MinGW,
+<code>dylib</code> on Darwin/Mac OS X, and <code>so</code> on all other platforms.
+The plugin arguments are parsed by GCC and passed to respective
+plugins as key-value pairs. Multiple plugins can be invoked by
+specifying multiple <samp>-fplugin</samp> arguments.
+</p>
+<p>A plugin can be simply given by its short name (no dots or
+slashes). When simply passing <samp>-fplugin=<var>name</var></samp>, the plugin is
+loaded from the <samp>plugin</samp> directory, so <samp>-fplugin=<var>name</var></samp> is
+the same as <samp>-fplugin=`gcc -print-file-name=plugin`/<var>name</var>.<var>ext</var></samp>,
+using backquote shell syntax to query the <samp>plugin</samp> directory.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-pass.html b/share/doc/gccint/Plugins-pass.html
new file mode 100644
index 0000000..5351d6f
--- /dev/null
+++ b/share/doc/gccint/Plugins-pass.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins pass</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins pass">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins pass">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-GC.html#Plugins-GC" rel="next" title="Plugins GC">
+<link href="Plugin-API.html#Plugin-API" rel="previous" title="Plugin API">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-pass"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-GC.html#Plugins-GC" accesskey="n" rel="next">Plugins GC</a>, Previous: <a href="Plugin-API.html#Plugin-API" accesskey="p" rel="previous">Plugin API</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Interacting-with-the-pass-manager"></a>
+<h3 class="section">24.3 Interacting with the pass manager</h3>
+
+<p>There needs to be a way to add/reorder/remove passes dynamically. This
+is useful for both analysis plugins (plugging in after a certain pass
+such as CFG or an IPA pass) and optimization plugins.
+</p>
+<p>Basic support for inserting new passes or replacing existing passes is
+provided. A plugin registers a new pass with GCC by calling
+<code>register_callback</code> with the <code>PLUGIN_PASS_MANAGER_SETUP</code>
+event and a pointer to a <code>struct register_pass_info</code> object defined as follows
+</p>
+<div class="smallexample">
+<pre class="smallexample">enum pass_positioning_ops
+{
+ PASS_POS_INSERT_AFTER, // Insert after the reference pass.
+ PASS_POS_INSERT_BEFORE, // Insert before the reference pass.
+ PASS_POS_REPLACE // Replace the reference pass.
+};
+
+struct register_pass_info
+{
+ struct opt_pass *pass; /* New pass provided by the plugin. */
+ const char *reference_pass_name; /* Name of the reference pass for hooking
+ up the new pass. */
+ int ref_pass_instance_number; /* Insert the pass at the specified
+ instance number of the reference pass. */
+ /* Do it for every instance if it is 0. */
+ enum pass_positioning_ops pos_op; /* how to insert the new pass. */
+};
+
+
+/* Sample plugin code that registers a new pass. */
+int
+plugin_init (struct plugin_name_args *plugin_info,
+ struct plugin_gcc_version *version)
+{
+ struct register_pass_info pass_info;
+
+ ...
+
+ /* Code to fill in the pass_info object with new pass information. */
+
+ ...
+
+ /* Register the new pass. */
+ register_callback (plugin_info-&gt;base_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &amp;pass_info);
+
+ ...
+}
+</pre></div>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-recording.html b/share/doc/gccint/Plugins-recording.html
new file mode 100644
index 0000000..0c276b2
--- /dev/null
+++ b/share/doc/gccint/Plugins-recording.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins recording</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins recording">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins recording">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-gate.html#Plugins-gate" rel="next" title="Plugins gate">
+<link href="Plugins-attr.html#Plugins-attr" rel="previous" title="Plugins attr">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-recording"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-gate.html#Plugins-gate" accesskey="n" rel="next">Plugins gate</a>, Previous: <a href="Plugins-attr.html#Plugins-attr" accesskey="p" rel="previous">Plugins attr</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Recording-information-about-pass-execution"></a>
+<h3 class="section">24.7 Recording information about pass execution</h3>
+
+<p>The event PLUGIN_PASS_EXECUTION passes the pointer to the executed pass
+(the same as current_pass) as <code>gcc_data</code> to the callback. You can also
+inspect cfun to find out about which function this pass is executed for.
+Note that this event will only be invoked if the gate check (if
+applicable, modified by PLUGIN_OVERRIDE_GATE) succeeds.
+You can use other hooks, like <code>PLUGIN_ALL_PASSES_START</code>,
+<code>PLUGIN_ALL_PASSES_END</code>, <code>PLUGIN_ALL_IPA_PASSES_START</code>,
+<code>PLUGIN_ALL_IPA_PASSES_END</code>, <code>PLUGIN_EARLY_GIMPLE_PASSES_START</code>,
+and/or <code>PLUGIN_EARLY_GIMPLE_PASSES_END</code> to manipulate global state
+in your plugin(s) in order to get context for the pass execution.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins-tracking.html b/share/doc/gccint/Plugins-tracking.html
new file mode 100644
index 0000000..6285620
--- /dev/null
+++ b/share/doc/gccint/Plugins-tracking.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins tracking</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins tracking">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins tracking">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Plugins.html#Plugins" rel="up" title="Plugins">
+<link href="Plugins-building.html#Plugins-building" rel="next" title="Plugins building">
+<link href="Plugins-gate.html#Plugins-gate" rel="previous" title="Plugins gate">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins-tracking"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins-building.html#Plugins-building" accesskey="n" rel="next">Plugins building</a>, Previous: <a href="Plugins-gate.html#Plugins-gate" accesskey="p" rel="previous">Plugins gate</a>, Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Keeping-track-of-available-passes"></a>
+<h3 class="section">24.9 Keeping track of available passes</h3>
+
+<p>When your plugin is loaded, you can inspect the various
+pass lists to determine what passes are available. However, other
+plugins might add new passes. Also, future changes to GCC might cause
+generic passes to be added after plugin loading.
+When a pass is first added to one of the pass lists, the event
+<code>PLUGIN_NEW_PASS</code> is invoked, with the callback parameter
+<code>gcc_data</code> pointing to the new pass.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Plugins.html b/share/doc/gccint/Plugins.html
new file mode 100644
index 0000000..d14ac5c
--- /dev/null
+++ b/share/doc/gccint/Plugins.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Plugins</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Plugins">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Plugins">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Plugins-loading.html#Plugins-loading" rel="next" title="Plugins loading">
+<link href="Troubleshooting.html#Troubleshooting" rel="previous" title="Troubleshooting">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Plugins"></a>
+<div class="header">
+<p>
+Next: <a href="LTO.html#LTO" accesskey="n" rel="next">LTO</a>, Previous: <a href="Type-Information.html#Type-Information" accesskey="p" rel="previous">Type Information</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Plugins-1"></a>
+<h2 class="chapter">24 Plugins</h2>
+<a name="index-Plugins"></a>
+
+<p>GCC plugins are loadable modules that provide extra features to the
+compiler. Like GCC itself they can be distributed in source and
+binary forms.
+</p>
+<p>GCC plugins provide developers with a rich subset of
+the GCC API to allow them to extend GCC as they see fit.
+Whether it is writing an additional optimization pass,
+transforming code, or analyzing information, plugins
+can be quite useful.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Plugins-loading.html#Plugins-loading" accesskey="1">Plugins loading</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How can we load plugins.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugin-API.html#Plugin-API" accesskey="2">Plugin API</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The APIs for plugins.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-pass.html#Plugins-pass" accesskey="3">Plugins pass</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How a plugin interact with the pass manager.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-GC.html#Plugins-GC" accesskey="4">Plugins GC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How a plugin Interact with GCC Garbage Collector.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-description.html#Plugins-description" accesskey="5">Plugins description</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Giving information about a plugin itself.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-attr.html#Plugins-attr" accesskey="6">Plugins attr</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Registering custom attributes or pragmas.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-recording.html#Plugins-recording" accesskey="7">Plugins recording</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Recording information about pass execution.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-gate.html#Plugins-gate" accesskey="8">Plugins gate</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling which passes are being run.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-tracking.html#Plugins-tracking" accesskey="9">Plugins tracking</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Keeping track of available passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins-building.html#Plugins-building">Plugins building</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How can we build a plugin.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Portability.html b/share/doc/gccint/Portability.html
new file mode 100644
index 0000000..73ba742
--- /dev/null
+++ b/share/doc/gccint/Portability.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Portability</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Portability">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Portability">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Interface.html#Interface" rel="next" title="Interface">
+<link href="Contributing.html#Contributing" rel="previous" title="Contributing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Portability"></a>
+<div class="header">
+<p>
+Next: <a href="Interface.html#Interface" accesskey="n" rel="next">Interface</a>, Previous: <a href="Contributing.html#Contributing" accesskey="p" rel="previous">Contributing</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="GCC-and-Portability"></a>
+<h2 class="chapter">2 GCC and Portability</h2>
+<a name="index-portability"></a>
+<a name="index-GCC-and-portability"></a>
+
+<p>GCC itself aims to be portable to any machine where <code>int</code> is at least
+a 32-bit type. It aims to target machines with a flat (non-segmented) byte
+addressed data address space (the code address space can be separate).
+Target ABIs may have 8, 16, 32 or 64-bit <code>int</code> type. <code>char</code>
+can be wider than 8 bits.
+</p>
+<p>GCC gets most of the information about the target machine from a machine
+description which gives an algebraic formula for each of the machine&rsquo;s
+instructions. This is a very clean way to describe the target. But when
+the compiler needs information that is difficult to express in this
+fashion, ad-hoc parameters have been defined for machine descriptions.
+The purpose of portability is to reduce the total work needed on the
+compiler; it was not of interest for its own sake.
+</p>
+<a name="index-endianness"></a>
+<a name="index-autoincrement-addressing_002c-availability"></a>
+<a name="index-abort"></a>
+<p>GCC does not contain machine dependent code, but it does contain code
+that depends on machine parameters such as endianness (whether the most
+significant byte has the highest or lowest address of the bytes in a word)
+and the availability of autoincrement addressing. In the RTL-generation
+pass, it is often necessary to have multiple strategies for generating code
+for a particular kind of syntax tree, strategies that are usable for different
+combinations of parameters. Often, not all possible cases have been
+addressed, but only the common ones or only the ones that have been
+encountered. As a result, a new target may require additional
+strategies. You will know
+if this happens because the compiler will call <code>abort</code>. Fortunately,
+the new strategies can be added in a machine-independent fashion, and will
+affect only the target machines that need them.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Interface.html#Interface" accesskey="n" rel="next">Interface</a>, Previous: <a href="Contributing.html#Contributing" accesskey="p" rel="previous">Contributing</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Predicates.html b/share/doc/gccint/Predicates.html
new file mode 100644
index 0000000..ed49177
--- /dev/null
+++ b/share/doc/gccint/Predicates.html
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Predicates</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Predicates">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Predicates">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates" rel="next" title="Machine-Independent Predicates">
+<link href="Output-Statement.html#Output-Statement" rel="previous" title="Output Statement">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Predicates"></a>
+<div class="header">
+<p>
+Next: <a href="Constraints.html#Constraints" accesskey="n" rel="next">Constraints</a>, Previous: <a href="Output-Statement.html#Output-Statement" accesskey="p" rel="previous">Output Statement</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Predicates-1"></a>
+<h3 class="section">17.7 Predicates</h3>
+<a name="index-predicates"></a>
+<a name="index-operand-predicates"></a>
+<a name="index-operator-predicates"></a>
+
+<p>A predicate determines whether a <code>match_operand</code> or
+<code>match_operator</code> expression matches, and therefore whether the
+surrounding instruction pattern will be used for that combination of
+operands. GCC has a number of machine-independent predicates, and you
+can define machine-specific predicates as needed. By convention,
+predicates used with <code>match_operand</code> have names that end in
+&lsquo;<samp>_operand</samp>&rsquo;, and those used with <code>match_operator</code> have names
+that end in &lsquo;<samp>_operator</samp>&rsquo;.
+</p>
+<p>All predicates are boolean functions (in the mathematical sense) of
+two arguments: the RTL expression that is being considered at that
+position in the instruction pattern, and the machine mode that the
+<code>match_operand</code> or <code>match_operator</code> specifies. In this
+section, the first argument is called <var>op</var> and the second argument
+<var>mode</var>. Predicates can be called from C as ordinary two-argument
+functions; this can be useful in output templates or other
+machine-specific code.
+</p>
+<p>Operand predicates can allow operands that are not actually acceptable
+to the hardware, as long as the constraints give reload the ability to
+fix them up (see <a href="Constraints.html#Constraints">Constraints</a>). However, GCC will usually generate
+better code if the predicates specify the requirements of the machine
+instructions as closely as possible. Reload cannot fix up operands
+that must be constants (&ldquo;immediate operands&rdquo;); you must use a
+predicate that allows only constants, or else enforce the requirement
+in the extra condition.
+</p>
+<a name="index-predicates-and-machine-modes"></a>
+<a name="index-normal-predicates"></a>
+<a name="index-special-predicates"></a>
+<p>Most predicates handle their <var>mode</var> argument in a uniform manner.
+If <var>mode</var> is <code>VOIDmode</code> (unspecified), then <var>op</var> can have
+any mode. If <var>mode</var> is anything else, then <var>op</var> must have the
+same mode, unless <var>op</var> is a <code>CONST_INT</code> or integer
+<code>CONST_DOUBLE</code>. These RTL expressions always have
+<code>VOIDmode</code>, so it would be counterproductive to check that their
+mode matches. Instead, predicates that accept <code>CONST_INT</code> and/or
+integer <code>CONST_DOUBLE</code> check that the value stored in the
+constant will fit in the requested mode.
+</p>
+<p>Predicates with this behavior are called <em>normal</em>.
+<code>genrecog</code> can optimize the instruction recognizer based on
+knowledge of how normal predicates treat modes. It can also diagnose
+certain kinds of common errors in the use of normal predicates; for
+instance, it is almost always an error to use a normal predicate
+without specifying a mode.
+</p>
+<p>Predicates that do something different with their <var>mode</var> argument
+are called <em>special</em>. The generic predicates
+<code>address_operand</code> and <code>pmode_register_operand</code> are special
+predicates. <code>genrecog</code> does not do any optimizations or
+diagnosis when special predicates are used.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates" accesskey="1">Machine-Independent Predicates</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Predicates available to all back ends.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Defining-Predicates.html#Defining-Predicates" accesskey="2">Defining Predicates</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to write machine-specific predicate
+ functions.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Constraints.html#Constraints" accesskey="n" rel="next">Constraints</a>, Previous: <a href="Output-Statement.html#Output-Statement" accesskey="p" rel="previous">Output Statement</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Processor-pipeline-description.html b/share/doc/gccint/Processor-pipeline-description.html
new file mode 100644
index 0000000..009354c
--- /dev/null
+++ b/share/doc/gccint/Processor-pipeline-description.html
@@ -0,0 +1,595 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Processor pipeline description</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Processor pipeline description">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Processor pipeline description">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Conditional-Execution.html#Conditional-Execution" rel="next" title="Conditional Execution">
+<link href="Delay-Slots.html#Delay-Slots" rel="previous" title="Delay Slots">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Processor-pipeline-description"></a>
+<div class="header">
+<p>
+Previous: <a href="Delay-Slots.html#Delay-Slots" accesskey="p" rel="previous">Delay Slots</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Specifying-processor-pipeline-description"></a>
+<h4 class="subsection">17.19.9 Specifying processor pipeline description</h4>
+<a name="index-processor-pipeline-description"></a>
+<a name="index-processor-functional-units"></a>
+<a name="index-instruction-latency-time"></a>
+<a name="index-interlock-delays"></a>
+<a name="index-data-dependence-delays"></a>
+<a name="index-reservation-delays"></a>
+<a name="index-pipeline-hazard-recognizer"></a>
+<a name="index-automaton-based-pipeline-description"></a>
+<a name="index-regular-expressions"></a>
+<a name="index-deterministic-finite-state-automaton"></a>
+<a name="index-automaton-based-scheduler"></a>
+<a name="index-RISC"></a>
+<a name="index-VLIW"></a>
+
+<p>To achieve better performance, most modern processors
+(super-pipelined, superscalar <acronym>RISC</acronym>, and <acronym>VLIW</acronym>
+processors) have many <em>functional units</em> on which several
+instructions can be executed simultaneously. An instruction starts
+execution if its issue conditions are satisfied. If not, the
+instruction is stalled until its conditions are satisfied. Such
+<em>interlock (pipeline) delay</em> causes interruption of the fetching
+of successor instructions (or demands nop instructions, e.g. for some
+MIPS processors).
+</p>
+<p>There are two major kinds of interlock delays in modern processors.
+The first one is a data dependence delay determining <em>instruction
+latency time</em>. The instruction execution is not started until all
+source data have been evaluated by prior instructions (there are more
+complex cases when the instruction execution starts even when the data
+are not available but will be ready in given time after the
+instruction execution start). Taking the data dependence delays into
+account is simple. The data dependence (true, output, and
+anti-dependence) delay between two instructions is given by a
+constant. In most cases this approach is adequate. The second kind
+of interlock delays is a reservation delay. The reservation delay
+means that two instructions under execution will be in need of shared
+processors resources, i.e. buses, internal registers, and/or
+functional units, which are reserved for some time. Taking this kind
+of delay into account is complex especially for modern <acronym>RISC</acronym>
+processors.
+</p>
+<p>The task of exploiting more processor parallelism is solved by an
+instruction scheduler. For a better solution to this problem, the
+instruction scheduler has to have an adequate description of the
+processor parallelism (or <em>pipeline description</em>). GCC
+machine descriptions describe processor parallelism and functional
+unit reservations for groups of instructions with the aid of
+<em>regular expressions</em>.
+</p>
+<p>The GCC instruction scheduler uses a <em>pipeline hazard recognizer</em> to
+figure out the possibility of the instruction issue by the processor
+on a given simulated processor cycle. The pipeline hazard recognizer is
+automatically generated from the processor pipeline description. The
+pipeline hazard recognizer generated from the machine description
+is based on a deterministic finite state automaton (<acronym>DFA</acronym>):
+the instruction issue is possible if there is a transition from one
+automaton state to another one. This algorithm is very fast, and
+furthermore, its speed is not dependent on processor
+complexity<a name="DOCF7" href="#FOOT7"><sup>7</sup></a>.
+</p>
+<a name="index-automaton-based-pipeline-description-1"></a>
+<p>The rest of this section describes the directives that constitute
+an automaton-based processor pipeline description. The order of
+these constructions within the machine description file is not
+important.
+</p>
+<a name="index-define_005fautomaton"></a>
+<a name="index-pipeline-hazard-recognizer-1"></a>
+<p>The following optional construction describes names of automata
+generated and used for the pipeline hazards recognition. Sometimes
+the generated finite state automaton used by the pipeline hazard
+recognizer is large. If we use more than one automaton and bind functional
+units to the automata, the total size of the automata is usually
+less than the size of the single automaton. If there is no one such
+construction, only one finite state automaton is generated.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_automaton <var>automata-names</var>)
+</pre></div>
+
+<p><var>automata-names</var> is a string giving names of the automata. The
+names are separated by commas. All the automata should have unique names.
+The automaton name is used in the constructions <code>define_cpu_unit</code> and
+<code>define_query_cpu_unit</code>.
+</p>
+<a name="index-define_005fcpu_005funit"></a>
+<a name="index-processor-functional-units-1"></a>
+<p>Each processor functional unit used in the description of instruction
+reservations should be described by the following construction.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_cpu_unit <var>unit-names</var> [<var>automaton-name</var>])
+</pre></div>
+
+<p><var>unit-names</var> is a string giving the names of the functional units
+separated by commas. Don&rsquo;t use name &lsquo;<samp>nothing</samp>&rsquo;, it is reserved
+for other goals.
+</p>
+<p><var>automaton-name</var> is a string giving the name of the automaton with
+which the unit is bound. The automaton should be described in
+construction <code>define_automaton</code>. You should give
+<em>automaton-name</em>, if there is a defined automaton.
+</p>
+<p>The assignment of units to automata are constrained by the uses of the
+units in insn reservations. The most important constraint is: if a
+unit reservation is present on a particular cycle of an alternative
+for an insn reservation, then some unit from the same automaton must
+be present on the same cycle for the other alternatives of the insn
+reservation. The rest of the constraints are mentioned in the
+description of the subsequent constructions.
+</p>
+<a name="index-define_005fquery_005fcpu_005funit"></a>
+<a name="index-querying-function-unit-reservations"></a>
+<p>The following construction describes CPU functional units analogously
+to <code>define_cpu_unit</code>. The reservation of such units can be
+queried for an automaton state. The instruction scheduler never
+queries reservation of functional units for given automaton state. So
+as a rule, you don&rsquo;t need this construction. This construction could
+be used for future code generation goals (e.g. to generate
+<acronym>VLIW</acronym> insn templates).
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_query_cpu_unit <var>unit-names</var> [<var>automaton-name</var>])
+</pre></div>
+
+<p><var>unit-names</var> is a string giving names of the functional units
+separated by commas.
+</p>
+<p><var>automaton-name</var> is a string giving the name of the automaton with
+which the unit is bound.
+</p>
+<a name="index-define_005finsn_005freservation"></a>
+<a name="index-instruction-latency-time-1"></a>
+<a name="index-regular-expressions-1"></a>
+<a name="index-data-bypass"></a>
+<p>The following construction is the major one to describe pipeline
+characteristics of an instruction.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_reservation <var>insn-name</var> <var>default_latency</var>
+ <var>condition</var> <var>regexp</var>)
+</pre></div>
+
+<p><var>default_latency</var> is a number giving latency time of the
+instruction. There is an important difference between the old
+description and the automaton based pipeline description. The latency
+time is used for all dependencies when we use the old description. In
+the automaton based pipeline description, the given latency time is only
+used for true dependencies. The cost of anti-dependencies is always
+zero and the cost of output dependencies is the difference between
+latency times of the producing and consuming insns (if the difference
+is negative, the cost is considered to be zero). You can always
+change the default costs for any description by using the target hook
+<code>TARGET_SCHED_ADJUST_COST</code> (see <a href="Scheduling.html#Scheduling">Scheduling</a>).
+</p>
+<p><var>insn-name</var> is a string giving the internal name of the insn. The
+internal names are used in constructions <code>define_bypass</code> and in
+the automaton description file generated for debugging. The internal
+name has nothing in common with the names in <code>define_insn</code>. It is a
+good practice to use insn classes described in the processor manual.
+</p>
+<p><var>condition</var> defines what RTL insns are described by this
+construction. You should remember that you will be in trouble if
+<var>condition</var> for two or more different
+<code>define_insn_reservation</code> constructions is TRUE for an insn. In
+this case what reservation will be used for the insn is not defined.
+Such cases are not checked during generation of the pipeline hazards
+recognizer because in general recognizing that two conditions may have
+the same value is quite difficult (especially if the conditions
+contain <code>symbol_ref</code>). It is also not checked during the
+pipeline hazard recognizer work because it would slow down the
+recognizer considerably.
+</p>
+<p><var>regexp</var> is a string describing the reservation of the cpu&rsquo;s functional
+units by the instruction. The reservations are described by a regular
+expression according to the following syntax:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> regexp = regexp &quot;,&quot; oneof
+ | oneof
+
+ oneof = oneof &quot;|&quot; allof
+ | allof
+
+ allof = allof &quot;+&quot; repeat
+ | repeat
+
+ repeat = element &quot;*&quot; number
+ | element
+
+ element = cpu_function_unit_name
+ | reservation_name
+ | result_name
+ | &quot;nothing&quot;
+ | &quot;(&quot; regexp &quot;)&quot;
+</pre></div>
+
+<ul>
+<li> &lsquo;<samp>,</samp>&rsquo; is used for describing the start of the next cycle in
+the reservation.
+
+</li><li> &lsquo;<samp>|</samp>&rsquo; is used for describing a reservation described by the first
+regular expression <strong>or</strong> a reservation described by the second
+regular expression <strong>or</strong> etc.
+
+</li><li> &lsquo;<samp>+</samp>&rsquo; is used for describing a reservation described by the first
+regular expression <strong>and</strong> a reservation described by the
+second regular expression <strong>and</strong> etc.
+
+</li><li> &lsquo;<samp>*</samp>&rsquo; is used for convenience and simply means a sequence in which
+the regular expression are repeated <var>number</var> times with cycle
+advancing (see &lsquo;<samp>,</samp>&rsquo;).
+
+</li><li> &lsquo;<samp>cpu_function_unit_name</samp>&rsquo; denotes reservation of the named
+functional unit.
+
+</li><li> &lsquo;<samp>reservation_name</samp>&rsquo; &mdash; see description of construction
+&lsquo;<samp>define_reservation</samp>&rsquo;.
+
+</li><li> &lsquo;<samp>nothing</samp>&rsquo; denotes no unit reservations.
+</li></ul>
+
+<a name="index-define_005freservation"></a>
+<p>Sometimes unit reservations for different insns contain common parts.
+In such case, you can simplify the pipeline description by describing
+the common part by the following construction
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_reservation <var>reservation-name</var> <var>regexp</var>)
+</pre></div>
+
+<p><var>reservation-name</var> is a string giving name of <var>regexp</var>.
+Functional unit names and reservation names are in the same name
+space. So the reservation names should be different from the
+functional unit names and cannot be the reserved name &lsquo;<samp>nothing</samp>&rsquo;.
+</p>
+<a name="index-define_005fbypass"></a>
+<a name="index-instruction-latency-time-2"></a>
+<a name="index-data-bypass-1"></a>
+<p>The following construction is used to describe exceptions in the
+latency time for given instruction pair. This is so called bypasses.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_bypass <var>number</var> <var>out_insn_names</var> <var>in_insn_names</var>
+ [<var>guard</var>])
+</pre></div>
+
+<p><var>number</var> defines when the result generated by the instructions
+given in string <var>out_insn_names</var> will be ready for the
+instructions given in string <var>in_insn_names</var>. Each of these
+strings is a comma-separated list of filename-style globs and
+they refer to the names of <code>define_insn_reservation</code>s.
+For example:
+</p><div class="smallexample">
+<pre class="smallexample">(define_bypass 1 &quot;cpu1_load_*, cpu1_store_*&quot; &quot;cpu1_load_*&quot;)
+</pre></div>
+<p>defines a bypass between instructions that start with
+&lsquo;<samp>cpu1_load_</samp>&rsquo; or &lsquo;<samp>cpu1_store_</samp>&rsquo; and those that start with
+&lsquo;<samp>cpu1_load_</samp>&rsquo;.
+</p>
+<p><var>guard</var> is an optional string giving the name of a C function which
+defines an additional guard for the bypass. The function will get the
+two insns as parameters. If the function returns zero the bypass will
+be ignored for this case. The additional guard is necessary to
+recognize complicated bypasses, e.g. when the consumer is only an address
+of insn &lsquo;<samp>store</samp>&rsquo; (not a stored value).
+</p>
+<p>If there are more one bypass with the same output and input insns, the
+chosen bypass is the first bypass with a guard in description whose
+guard function returns nonzero. If there is no such bypass, then
+bypass without the guard function is chosen.
+</p>
+<a name="index-exclusion_005fset"></a>
+<a name="index-presence_005fset"></a>
+<a name="index-final_005fpresence_005fset"></a>
+<a name="index-absence_005fset"></a>
+<a name="index-final_005fabsence_005fset"></a>
+<a name="index-VLIW-1"></a>
+<a name="index-RISC-1"></a>
+<p>The following five constructions are usually used to describe
+<acronym>VLIW</acronym> processors, or more precisely, to describe a placement
+of small instructions into <acronym>VLIW</acronym> instruction slots. They
+can be used for <acronym>RISC</acronym> processors, too.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(exclusion_set <var>unit-names</var> <var>unit-names</var>)
+(presence_set <var>unit-names</var> <var>patterns</var>)
+(final_presence_set <var>unit-names</var> <var>patterns</var>)
+(absence_set <var>unit-names</var> <var>patterns</var>)
+(final_absence_set <var>unit-names</var> <var>patterns</var>)
+</pre></div>
+
+<p><var>unit-names</var> is a string giving names of functional units
+separated by commas.
+</p>
+<p><var>patterns</var> is a string giving patterns of functional units
+separated by comma. Currently pattern is one unit or units
+separated by white-spaces.
+</p>
+<p>The first construction (&lsquo;<samp>exclusion_set</samp>&rsquo;) means that each
+functional unit in the first string cannot be reserved simultaneously
+with a unit whose name is in the second string and vice versa. For
+example, the construction is useful for describing processors
+(e.g. some SPARC processors) with a fully pipelined floating point
+functional unit which can execute simultaneously only single floating
+point insns or only double floating point insns.
+</p>
+<p>The second construction (&lsquo;<samp>presence_set</samp>&rsquo;) means that each
+functional unit in the first string cannot be reserved unless at
+least one of pattern of units whose names are in the second string is
+reserved. This is an asymmetric relation. For example, it is useful
+for description that <acronym>VLIW</acronym> &lsquo;<samp>slot1</samp>&rsquo; is reserved after
+&lsquo;<samp>slot0</samp>&rsquo; reservation. We could describe it by the following
+construction
+</p>
+<div class="smallexample">
+<pre class="smallexample">(presence_set &quot;slot1&quot; &quot;slot0&quot;)
+</pre></div>
+
+<p>Or &lsquo;<samp>slot1</samp>&rsquo; is reserved only after &lsquo;<samp>slot0</samp>&rsquo; and unit &lsquo;<samp>b0</samp>&rsquo;
+reservation. In this case we could write
+</p>
+<div class="smallexample">
+<pre class="smallexample">(presence_set &quot;slot1&quot; &quot;slot0 b0&quot;)
+</pre></div>
+
+<p>The third construction (&lsquo;<samp>final_presence_set</samp>&rsquo;) is analogous to
+&lsquo;<samp>presence_set</samp>&rsquo;. The difference between them is when checking is
+done. When an instruction is issued in given automaton state
+reflecting all current and planned unit reservations, the automaton
+state is changed. The first state is a source state, the second one
+is a result state. Checking for &lsquo;<samp>presence_set</samp>&rsquo; is done on the
+source state reservation, checking for &lsquo;<samp>final_presence_set</samp>&rsquo; is
+done on the result reservation. This construction is useful to
+describe a reservation which is actually two subsequent reservations.
+For example, if we use
+</p>
+<div class="smallexample">
+<pre class="smallexample">(presence_set &quot;slot1&quot; &quot;slot0&quot;)
+</pre></div>
+
+<p>the following insn will be never issued (because &lsquo;<samp>slot1</samp>&rsquo; requires
+&lsquo;<samp>slot0</samp>&rsquo; which is absent in the source state).
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_reservation &quot;insn_and_nop&quot; &quot;slot0 + slot1&quot;)
+</pre></div>
+
+<p>but it can be issued if we use analogous &lsquo;<samp>final_presence_set</samp>&rsquo;.
+</p>
+<p>The forth construction (&lsquo;<samp>absence_set</samp>&rsquo;) means that each functional
+unit in the first string can be reserved only if each pattern of units
+whose names are in the second string is not reserved. This is an
+asymmetric relation (actually &lsquo;<samp>exclusion_set</samp>&rsquo; is analogous to
+this one but it is symmetric). For example it might be useful in a
+<acronym>VLIW</acronym> description to say that &lsquo;<samp>slot0</samp>&rsquo; cannot be reserved
+after either &lsquo;<samp>slot1</samp>&rsquo; or &lsquo;<samp>slot2</samp>&rsquo; have been reserved. This
+can be described as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(absence_set &quot;slot0&quot; &quot;slot1, slot2&quot;)
+</pre></div>
+
+<p>Or &lsquo;<samp>slot2</samp>&rsquo; cannot be reserved if &lsquo;<samp>slot0</samp>&rsquo; and unit &lsquo;<samp>b0</samp>&rsquo;
+are reserved or &lsquo;<samp>slot1</samp>&rsquo; and unit &lsquo;<samp>b1</samp>&rsquo; are reserved. In
+this case we could write
+</p>
+<div class="smallexample">
+<pre class="smallexample">(absence_set &quot;slot2&quot; &quot;slot0 b0, slot1 b1&quot;)
+</pre></div>
+
+<p>All functional units mentioned in a set should belong to the same
+automaton.
+</p>
+<p>The last construction (&lsquo;<samp>final_absence_set</samp>&rsquo;) is analogous to
+&lsquo;<samp>absence_set</samp>&rsquo; but checking is done on the result (state)
+reservation. See comments for &lsquo;<samp>final_presence_set</samp>&rsquo;.
+</p>
+<a name="index-automata_005foption"></a>
+<a name="index-deterministic-finite-state-automaton-1"></a>
+<a name="index-nondeterministic-finite-state-automaton"></a>
+<a name="index-finite-state-automaton-minimization"></a>
+<p>You can control the generator of the pipeline hazard recognizer with
+the following construction.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(automata_option <var>options</var>)
+</pre></div>
+
+<p><var>options</var> is a string giving options which affect the generated
+code. Currently there are the following options:
+</p>
+<ul>
+<li> <em>no-minimization</em> makes no minimization of the automaton. This is
+only worth to do when we are debugging the description and need to
+look more accurately at reservations of states.
+
+</li><li> <em>time</em> means printing time statistics about the generation of
+automata.
+
+</li><li> <em>stats</em> means printing statistics about the generated automata
+such as the number of DFA states, NDFA states and arcs.
+
+</li><li> <em>v</em> means a generation of the file describing the result automata.
+The file has suffix &lsquo;<samp>.dfa</samp>&rsquo; and can be used for the description
+verification and debugging.
+
+</li><li> <em>w</em> means a generation of warning instead of error for
+non-critical errors.
+
+</li><li> <em>no-comb-vect</em> prevents the automaton generator from generating
+two data structures and comparing them for space efficiency. Using
+a comb vector to represent transitions may be better, but it can be
+very expensive to construct. This option is useful if the build
+process spends an unacceptably long time in genautomata.
+
+</li><li> <em>ndfa</em> makes nondeterministic finite state automata. This affects
+the treatment of operator &lsquo;<samp>|</samp>&rsquo; in the regular expressions. The
+usual treatment of the operator is to try the first alternative and,
+if the reservation is not possible, the second alternative. The
+nondeterministic treatment means trying all alternatives, some of them
+may be rejected by reservations in the subsequent insns.
+
+</li><li> <em>collapse-ndfa</em> modifies the behavior of the generator when
+producing an automaton. An additional state transition to collapse a
+nondeterministic <acronym>NDFA</acronym> state to a deterministic <acronym>DFA</acronym>
+state is generated. It can be triggered by passing <code>const0_rtx</code> to
+state_transition. In such an automaton, cycle advance transitions are
+available only for these collapsed states. This option is useful for
+ports that want to use the <code>ndfa</code> option, but also want to use
+<code>define_query_cpu_unit</code> to assign units to insns issued in a cycle.
+
+</li><li> <em>progress</em> means output of a progress bar showing how many states
+were generated so far for automaton being processed. This is useful
+during debugging a <acronym>DFA</acronym> description. If you see too many
+generated states, you could interrupt the generator of the pipeline
+hazard recognizer and try to figure out a reason for generation of the
+huge automaton.
+</li></ul>
+
+<p>As an example, consider a superscalar <acronym>RISC</acronym> machine which can
+issue three insns (two integer insns and one floating point insn) on
+the cycle but can finish only two insns. To describe this, we define
+the following functional units.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_cpu_unit &quot;i0_pipeline, i1_pipeline, f_pipeline&quot;)
+(define_cpu_unit &quot;port0, port1&quot;)
+</pre></div>
+
+<p>All simple integer insns can be executed in any integer pipeline and
+their result is ready in two cycles. The simple integer insns are
+issued into the first pipeline unless it is reserved, otherwise they
+are issued into the second pipeline. Integer division and
+multiplication insns can be executed only in the second integer
+pipeline and their results are ready correspondingly in 9 and 4
+cycles. The integer division is not pipelined, i.e. the subsequent
+integer division insn cannot be issued until the current division
+insn finished. Floating point insns are fully pipelined and their
+results are ready in 3 cycles. Where the result of a floating point
+insn is used by an integer insn, an additional delay of one cycle is
+incurred. To describe all of this we could specify
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_cpu_unit &quot;div&quot;)
+
+(define_insn_reservation &quot;simple&quot; 2 (eq_attr &quot;type&quot; &quot;int&quot;)
+ &quot;(i0_pipeline | i1_pipeline), (port0 | port1)&quot;)
+
+(define_insn_reservation &quot;mult&quot; 4 (eq_attr &quot;type&quot; &quot;mult&quot;)
+ &quot;i1_pipeline, nothing*2, (port0 | port1)&quot;)
+
+(define_insn_reservation &quot;div&quot; 9 (eq_attr &quot;type&quot; &quot;div&quot;)
+ &quot;i1_pipeline, div*7, div + (port0 | port1)&quot;)
+
+(define_insn_reservation &quot;float&quot; 3 (eq_attr &quot;type&quot; &quot;float&quot;)
+ &quot;f_pipeline, nothing, (port0 | port1))
+
+(define_bypass 4 &quot;float&quot; &quot;simple,mult,div&quot;)
+</pre></div>
+
+<p>To simplify the description we could describe the following reservation
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_reservation &quot;finish&quot; &quot;port0|port1&quot;)
+</pre></div>
+
+<p>and use it in all <code>define_insn_reservation</code> as in the following
+construction
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn_reservation &quot;simple&quot; 2 (eq_attr &quot;type&quot; &quot;int&quot;)
+ &quot;(i0_pipeline | i1_pipeline), finish&quot;)
+</pre></div>
+
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT7" href="#DOCF7">(7)</a></h3>
+<p>However, the size of the automaton depends on
+processor complexity. To limit this effect, machine descriptions
+can split orthogonal parts of the machine description among several
+automata: but then, since each of these must be stepped independently,
+this does cause a small decrease in the algorithm&rsquo;s performance.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Delay-Slots.html#Delay-Slots" accesskey="p" rel="previous">Delay Slots</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Profile-information.html b/share/doc/gccint/Profile-information.html
new file mode 100644
index 0000000..b5f4178
--- /dev/null
+++ b/share/doc/gccint/Profile-information.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Profile information</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Profile information">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Profile information">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Control-Flow.html#Control-Flow" rel="up" title="Control Flow">
+<link href="Maintaining-the-CFG.html#Maintaining-the-CFG" rel="next" title="Maintaining the CFG">
+<link href="Edges.html#Edges" rel="previous" title="Edges">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Profile-information"></a>
+<div class="header">
+<p>
+Next: <a href="Maintaining-the-CFG.html#Maintaining-the-CFG" accesskey="n" rel="next">Maintaining the CFG</a>, Previous: <a href="Edges.html#Edges" accesskey="p" rel="previous">Edges</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Profile-information-1"></a>
+<h3 class="section">15.3 Profile information</h3>
+
+<a name="index-profile-representation"></a>
+<p>In many cases a compiler must make a choice whether to trade speed in
+one part of code for speed in another, or to trade code size for code
+speed. In such cases it is useful to know information about how often
+some given block will be executed. That is the purpose for
+maintaining profile within the flow graph.
+GCC can handle profile information obtained through <em>profile
+feedback</em>, but it can also estimate branch probabilities based on
+statics and heuristics.
+</p>
+<a name="index-profile-feedback"></a>
+<p>The feedback based profile is produced by compiling the program with
+instrumentation, executing it on a train run and reading the numbers
+of executions of basic blocks and edges back to the compiler while
+re-compiling the program to produce the final executable. This method
+provides very accurate information about where a program spends most
+of its time on the train run. Whether it matches the average run of
+course depends on the choice of train data set, but several studies
+have shown that the behavior of a program usually changes just
+marginally over different data sets.
+</p>
+<a name="index-Static-profile-estimation"></a>
+<a name="index-branch-prediction"></a>
+<a name="index-predict_002edef"></a>
+<p>When profile feedback is not available, the compiler may be asked to
+attempt to predict the behavior of each branch in the program using a
+set of heuristics (see <samp>predict.def</samp> for details) and compute
+estimated frequencies of each basic block by propagating the
+probabilities over the graph.
+</p>
+<a name="index-frequency_002c-count_002c-BB_005fFREQ_005fBASE"></a>
+<p>Each <code>basic_block</code> contains two integer fields to represent
+profile information: <code>frequency</code> and <code>count</code>. The
+<code>frequency</code> is an estimation how often is basic block executed
+within a function. It is represented as an integer scaled in the
+range from 0 to <code>BB_FREQ_BASE</code>. The most frequently executed
+basic block in function is initially set to <code>BB_FREQ_BASE</code> and
+the rest of frequencies are scaled accordingly. During optimization,
+the frequency of the most frequent basic block can both decrease (for
+instance by loop unrolling) or grow (for instance by cross-jumping
+optimization), so scaling sometimes has to be performed multiple
+times.
+</p>
+<a name="index-gcov_005ftype"></a>
+<p>The <code>count</code> contains hard-counted numbers of execution measured
+during training runs and is nonzero only when profile feedback is
+available. This value is represented as the host&rsquo;s widest integer
+(typically a 64 bit integer) of the special type <code>gcov_type</code>.
+</p>
+<p>Most optimization passes can use only the frequency information of a
+basic block, but a few passes may want to know hard execution counts.
+The frequencies should always match the counts after scaling, however
+during updating of the profile information numerical error may
+accumulate into quite large errors.
+</p>
+<a name="index-REG_005fBR_005fPROB_005fBASE_002c-EDGE_005fFREQUENCY"></a>
+<p>Each edge also contains a branch probability field: an integer in the
+range from 0 to <code>REG_BR_PROB_BASE</code>. It represents probability of
+passing control from the end of the <code>src</code> basic block to the
+<code>dest</code> basic block, i.e. the probability that control will flow
+along this edge. The <code>EDGE_FREQUENCY</code> macro is available to
+compute how frequently a given edge is taken. There is a <code>count</code>
+field for each edge as well, representing same information as for a
+basic block.
+</p>
+<p>The basic block frequencies are not represented in the instruction
+stream, but in the RTL representation the edge frequencies are
+represented for conditional jumps (via the <code>REG_BR_PROB</code>
+macro) since they are used when instructions are output to the
+assembly file and the flow graph is no longer maintained.
+</p>
+<a name="index-reverse-probability"></a>
+<p>The probability that control flow arrives via a given edge to its
+destination basic block is called <em>reverse probability</em> and is not
+directly represented, but it may be easily computed from frequencies
+of basic blocks.
+</p>
+<a name="index-redirect_005fedge_005fand_005fbranch"></a>
+<p>Updating profile information is a delicate task that can unfortunately
+not be easily integrated with the CFG manipulation API. Many of the
+functions and hooks to modify the CFG, such as
+<code>redirect_edge_and_branch</code>, do not have enough information to
+easily update the profile, so updating it is in the majority of cases
+left up to the caller. It is difficult to uncover bugs in the profile
+updating code, because they manifest themselves only by producing
+worse code, and checking profile consistency is not possible because
+of numeric error accumulation. Hence special attention needs to be
+given to this issue in each pass that modifies the CFG.
+</p>
+<a name="index-REG_005fBR_005fPROB_005fBASE_002c-BB_005fFREQ_005fBASE_002c-count"></a>
+<p>It is important to point out that <code>REG_BR_PROB_BASE</code> and
+<code>BB_FREQ_BASE</code> are both set low enough to be possible to compute
+second power of any frequency or probability in the flow graph, it is
+not possible to even square the <code>count</code> field, as modern CPUs are
+fast enough to execute $2^32$ operations quickly.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Maintaining-the-CFG.html#Maintaining-the-CFG" accesskey="n" rel="next">Maintaining the CFG</a>, Previous: <a href="Edges.html#Edges" accesskey="p" rel="previous">Edges</a>, Up: <a href="Control-Flow.html#Control-Flow" accesskey="u" rel="up">Control Flow</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Profiling.html b/share/doc/gccint/Profiling.html
new file mode 100644
index 0000000..4bac2d2
--- /dev/null
+++ b/share/doc/gccint/Profiling.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Profiling</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Profiling">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Profiling">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Tail-Calls.html#Tail-Calls" rel="next" title="Tail Calls">
+<link href="Function-Entry.html#Function-Entry" rel="previous" title="Function Entry">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Profiling"></a>
+<div class="header">
+<p>
+Next: <a href="Tail-Calls.html#Tail-Calls" accesskey="n" rel="next">Tail Calls</a>, Previous: <a href="Function-Entry.html#Function-Entry" accesskey="p" rel="previous">Function Entry</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Generating-Code-for-Profiling"></a>
+<h4 class="subsection">18.9.12 Generating Code for Profiling</h4>
+<a name="index-profiling_002c-code-generation"></a>
+
+<p>These macros will help you generate code for profiling.
+</p>
+<dl>
+<dt><a name="index-FUNCTION_005fPROFILER"></a>Macro: <strong>FUNCTION_PROFILER</strong> <em>(<var>file</var>, <var>labelno</var>)</em></dt>
+<dd><p>A C statement or compound statement to output to <var>file</var> some
+assembler code to call the profiling subroutine <code>mcount</code>.
+</p>
+<a name="index-mcount"></a>
+<p>The details of how <code>mcount</code> expects to be called are determined by
+your operating system environment, not by GCC. To figure them out,
+compile a small program for profiling using the system&rsquo;s installed C
+compiler and look at the assembler code that results.
+</p>
+<p>Older implementations of <code>mcount</code> expect the address of a counter
+variable to be loaded into some register. The name of this variable is
+&lsquo;<samp>LP</samp>&rsquo; followed by the number <var>labelno</var>, so you would generate
+the name using &lsquo;<samp>LP%d</samp>&rsquo; in a <code>fprintf</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PROFILE_005fHOOK"></a>Macro: <strong>PROFILE_HOOK</strong></dt>
+<dd><p>A C statement or compound statement to output to <var>file</var> some assembly
+code to call the profiling subroutine <code>mcount</code> even the target does
+not support profiling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-NO_005fPROFILE_005fCOUNTERS"></a>Macro: <strong>NO_PROFILE_COUNTERS</strong></dt>
+<dd><p>Define this macro to be an expression with a nonzero value if the
+<code>mcount</code> subroutine on your system does not need a counter variable
+allocated for each function. This is true for almost all modern
+implementations. If you define this macro, you must not use the
+<var>labelno</var> argument to <code>FUNCTION_PROFILER</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PROFILE_005fBEFORE_005fPROLOGUE"></a>Macro: <strong>PROFILE_BEFORE_PROLOGUE</strong></dt>
+<dd><p>Define this macro if the code for function profiling should come before
+the function prologue. Normally, the profiling code comes after.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fKEEP_005fLEAF_005fWHEN_005fPROFILED"></a>Target Hook: <em>bool</em> <strong>TARGET_KEEP_LEAF_WHEN_PROFILED</strong> <em>(void)</em></dt>
+<dd><p>This target hook returns true if the target wants the leaf flag for
+the current function to stay true even if it calls mcount. This might
+make sense for targets using the leaf flag only to determine whether a
+stack frame needs to be generated or not and for which the call to
+mcount is generated before the function prologue.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Tail-Calls.html#Tail-Calls" accesskey="n" rel="next">Tail Calls</a>, Previous: <a href="Function-Entry.html#Function-Entry" accesskey="p" rel="previous">Function Entry</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Properties-of-the-poly_005fint-comparisons.html b/share/doc/gccint/Properties-of-the-poly_005fint-comparisons.html
new file mode 100644
index 0000000..9b28cc2
--- /dev/null
+++ b/share/doc/gccint/Properties-of-the-poly_005fint-comparisons.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Properties of the poly_int comparisons</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Properties of the poly_int comparisons">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Properties of the poly_int comparisons">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" rel="next" title="Comparing potentially-unordered poly_ints">
+<link href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint" rel="previous" title="Comparison functions for poly_int">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Properties-of-the-poly_005fint-comparisons"></a>
+<div class="header">
+<p>
+Next: <a href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" accesskey="n" rel="next">Comparing potentially-unordered <code>poly_int</code>s</a>, Previous: <a href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint" accesskey="p" rel="previous">Comparison functions for <code>poly_int</code></a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Properties-of-the-poly_005fint-comparisons-1"></a>
+<h4 class="subsection">10.3.2 Properties of the <code>poly_int</code> comparisons</h4>
+
+<p>All &ldquo;maybe&rdquo; relations except <code>maybe_ne</code> are transitive, so for example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_lt (<var>a</var>, <var>b</var>) &amp;&amp; maybe_lt (<var>b</var>, <var>c</var>) implies maybe_lt (<var>a</var>, <var>c</var>)
+</pre></div>
+
+<p>for all <var>a</var>, <var>b</var> and <var>c</var>. <code>maybe_lt</code>, <code>maybe_gt</code>
+and <code>maybe_ne</code> are irreflexive, so for example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">!maybe_lt (<var>a</var>, <var>a</var>)
+</pre></div>
+
+<p>is true for all <var>a</var>. <code>maybe_le</code>, <code>maybe_eq</code> and <code>maybe_ge</code>
+are reflexive, so for example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_le (<var>a</var>, <var>a</var>)
+</pre></div>
+
+<p>is true for all <var>a</var>. <code>maybe_eq</code> and <code>maybe_ne</code> are symmetric, so:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_eq (<var>a</var>, <var>b</var>) == maybe_eq (<var>b</var>, <var>a</var>)
+maybe_ne (<var>a</var>, <var>b</var>) == maybe_ne (<var>b</var>, <var>a</var>)
+</pre></div>
+
+<p>for all <var>a</var> and <var>b</var>. In addition:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_le (<var>a</var>, <var>b</var>) == maybe_lt (<var>a</var>, <var>b</var>) || maybe_eq (<var>a</var>, <var>b</var>)
+maybe_ge (<var>a</var>, <var>b</var>) == maybe_gt (<var>a</var>, <var>b</var>) || maybe_eq (<var>a</var>, <var>b</var>)
+maybe_lt (<var>a</var>, <var>b</var>) == maybe_gt (<var>b</var>, <var>a</var>)
+maybe_le (<var>a</var>, <var>b</var>) == maybe_ge (<var>b</var>, <var>a</var>)
+</pre></div>
+
+<p>However:
+</p>
+<div class="smallexample">
+<pre class="smallexample">maybe_le (<var>a</var>, <var>b</var>) &amp;&amp; maybe_le (<var>b</var>, <var>a</var>) does not imply !maybe_ne (<var>a</var>, <var>b</var>) [== known_eq (<var>a</var>, <var>b</var>)]
+maybe_ge (<var>a</var>, <var>b</var>) &amp;&amp; maybe_ge (<var>b</var>, <var>a</var>) does not imply !maybe_ne (<var>a</var>, <var>b</var>) [== known_eq (<var>a</var>, <var>b</var>)]
+</pre></div>
+
+<p>One example is again &lsquo;<samp><var>a</var> == 3 + 4<var>x</var></samp>&rsquo;
+and &lsquo;<samp><var>b</var> == 1 + 5<var>x</var></samp>&rsquo;, where &lsquo;<samp>maybe_le (<var>a</var>, <var>b</var>)</samp>&rsquo;,
+&lsquo;<samp>maybe_ge (<var>a</var>, <var>b</var>)</samp>&rsquo; and &lsquo;<samp>maybe_ne (<var>a</var>, <var>b</var>)</samp>&rsquo;
+all hold. <code>maybe_le</code> and <code>maybe_ge</code> are therefore not antisymetric
+and do not form a partial order.
+</p>
+<p>From the above, it follows that:
+</p>
+<ul>
+<li> All &ldquo;known&rdquo; relations except <code>known_ne</code> are transitive.
+
+</li><li> <code>known_lt</code>, <code>known_ne</code> and <code>known_gt</code> are irreflexive.
+
+</li><li> <code>known_le</code>, <code>known_eq</code> and <code>known_ge</code> are reflexive.
+</li></ul>
+
+<p>Also:
+</p>
+<div class="smallexample">
+<pre class="smallexample">known_lt (<var>a</var>, <var>b</var>) == known_gt (<var>b</var>, <var>a</var>)
+known_le (<var>a</var>, <var>b</var>) == known_ge (<var>b</var>, <var>a</var>)
+known_lt (<var>a</var>, <var>b</var>) implies !known_lt (<var>b</var>, <var>a</var>) [asymmetry]
+known_gt (<var>a</var>, <var>b</var>) implies !known_gt (<var>b</var>, <var>a</var>)
+known_le (<var>a</var>, <var>b</var>) &amp;&amp; known_le (<var>b</var>, <var>a</var>) == known_eq (<var>a</var>, <var>b</var>) [== !maybe_ne (<var>a</var>, <var>b</var>)]
+known_ge (<var>a</var>, <var>b</var>) &amp;&amp; known_ge (<var>b</var>, <var>a</var>) == known_eq (<var>a</var>, <var>b</var>) [== !maybe_ne (<var>a</var>, <var>b</var>)]
+</pre></div>
+
+<p><code>known_le</code> and <code>known_ge</code> are therefore antisymmetric and are
+partial orders. However:
+</p>
+<div class="smallexample">
+<pre class="smallexample">known_le (<var>a</var>, <var>b</var>) does not imply known_lt (<var>a</var>, <var>b</var>) || known_eq (<var>a</var>, <var>b</var>)
+known_ge (<var>a</var>, <var>b</var>) does not imply known_gt (<var>a</var>, <var>b</var>) || known_eq (<var>a</var>, <var>b</var>)
+</pre></div>
+
+<p>For example, &lsquo;<samp>known_le (4, 4 + 4<var>x</var>)</samp>&rsquo; holds because the runtime
+indeterminate <var>x</var> is a nonnegative integer, but neither
+<code>known_lt (4, 4 + 4<var>x</var>)</code> nor <code>known_eq (4, 4 + 4<var>x</var>)</code> hold.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints" accesskey="n" rel="next">Comparing potentially-unordered <code>poly_int</code>s</a>, Previous: <a href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint" accesskey="p" rel="previous">Comparison functions for <code>poly_int</code></a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-Classes.html b/share/doc/gccint/RTL-Classes.html
new file mode 100644
index 0000000..006fc67
--- /dev/null
+++ b/share/doc/gccint/RTL-Classes.html
@@ -0,0 +1,302 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL Classes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL Classes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL Classes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Accessors.html#Accessors" rel="next" title="Accessors">
+<link href="RTL-Objects.html#RTL-Objects" rel="previous" title="RTL Objects">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-Classes"></a>
+<div class="header">
+<p>
+Next: <a href="Accessors.html#Accessors" accesskey="n" rel="next">Accessors</a>, Previous: <a href="RTL-Objects.html#RTL-Objects" accesskey="p" rel="previous">RTL Objects</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Classes-and-Formats"></a>
+<h3 class="section">14.2 RTL Classes and Formats</h3>
+<a name="index-RTL-classes"></a>
+<a name="index-classes-of-RTX-codes"></a>
+<a name="index-RTX-codes_002c-classes-of"></a>
+<a name="index-GET_005fRTX_005fCLASS"></a>
+
+<p>The various expression codes are divided into several <em>classes</em>,
+which are represented by single characters. You can determine the class
+of an RTX code with the macro <code>GET_RTX_CLASS (<var>code</var>)</code>.
+Currently, <samp>rtl.def</samp> defines these classes:
+</p>
+<dl compact="compact">
+<dt><code>RTX_OBJ</code></dt>
+<dd><p>An RTX code that represents an actual object, such as a register
+(<code>REG</code>) or a memory location (<code>MEM</code>, <code>SYMBOL_REF</code>).
+<code>LO_SUM</code> is also included; instead, <code>SUBREG</code> and
+<code>STRICT_LOW_PART</code> are not in this class, but in class
+<code>RTX_EXTRA</code>.
+</p>
+</dd>
+<dt><code>RTX_CONST_OBJ</code></dt>
+<dd><p>An RTX code that represents a constant object. <code>HIGH</code> is also
+included in this class.
+</p>
+</dd>
+<dt><code>RTX_COMPARE</code></dt>
+<dd><p>An RTX code for a non-symmetric comparison, such as <code>GEU</code> or
+<code>LT</code>.
+</p>
+</dd>
+<dt><code>RTX_COMM_COMPARE</code></dt>
+<dd><p>An RTX code for a symmetric (commutative) comparison, such as <code>EQ</code>
+or <code>ORDERED</code>.
+</p>
+</dd>
+<dt><code>RTX_UNARY</code></dt>
+<dd><p>An RTX code for a unary arithmetic operation, such as <code>NEG</code>,
+<code>NOT</code>, or <code>ABS</code>. This category also includes value extension
+(sign or zero) and conversions between integer and floating point.
+</p>
+</dd>
+<dt><code>RTX_COMM_ARITH</code></dt>
+<dd><p>An RTX code for a commutative binary operation, such as <code>PLUS</code> or
+<code>AND</code>. <code>NE</code> and <code>EQ</code> are comparisons, so they have class
+<code>RTX_COMM_COMPARE</code>.
+</p>
+</dd>
+<dt><code>RTX_BIN_ARITH</code></dt>
+<dd><p>An RTX code for a non-commutative binary operation, such as <code>MINUS</code>,
+<code>DIV</code>, or <code>ASHIFTRT</code>.
+</p>
+</dd>
+<dt><code>RTX_BITFIELD_OPS</code></dt>
+<dd><p>An RTX code for a bit-field operation. Currently only
+<code>ZERO_EXTRACT</code> and <code>SIGN_EXTRACT</code>. These have three inputs
+and are lvalues (so they can be used for insertion as well).
+See <a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a>.
+</p>
+</dd>
+<dt><code>RTX_TERNARY</code></dt>
+<dd><p>An RTX code for other three input operations. Currently only
+<code>IF_THEN_ELSE</code>, <code>VEC_MERGE</code>, <code>SIGN_EXTRACT</code>,
+<code>ZERO_EXTRACT</code>, and <code>FMA</code>.
+</p>
+</dd>
+<dt><code>RTX_INSN</code></dt>
+<dd><p>An RTX code for an entire instruction: <code>INSN</code>, <code>JUMP_INSN</code>, and
+<code>CALL_INSN</code>. See <a href="Insns.html#Insns">Insns</a>.
+</p>
+</dd>
+<dt><code>RTX_MATCH</code></dt>
+<dd><p>An RTX code for something that matches in insns, such as
+<code>MATCH_DUP</code>. These only occur in machine descriptions.
+</p>
+</dd>
+<dt><code>RTX_AUTOINC</code></dt>
+<dd><p>An RTX code for an auto-increment addressing mode, such as
+<code>POST_INC</code>. &lsquo;<samp>XEXP (<var>x</var>, 0)</samp>&rsquo; gives the auto-modified
+register.
+</p>
+</dd>
+<dt><code>RTX_EXTRA</code></dt>
+<dd><p>All other RTX codes. This category includes the remaining codes used
+only in machine descriptions (<code>DEFINE_*</code>, etc.). It also includes
+all the codes describing side effects (<code>SET</code>, <code>USE</code>,
+<code>CLOBBER</code>, etc.) and the non-insns that may appear on an insn
+chain, such as <code>NOTE</code>, <code>BARRIER</code>, and <code>CODE_LABEL</code>.
+<code>SUBREG</code> is also part of this class.
+</p></dd>
+</dl>
+
+<a name="index-RTL-format"></a>
+<p>For each expression code, <samp>rtl.def</samp> specifies the number of
+contained objects and their kinds using a sequence of characters
+called the <em>format</em> of the expression code. For example,
+the format of <code>subreg</code> is &lsquo;<samp>ep</samp>&rsquo;.
+</p>
+<a name="index-RTL-format-characters"></a>
+<p>These are the most commonly used format characters:
+</p>
+<dl compact="compact">
+<dt><code>e</code></dt>
+<dd><p>An expression (actually a pointer to an expression).
+</p>
+</dd>
+<dt><code>i</code></dt>
+<dd><p>An integer.
+</p>
+</dd>
+<dt><code>w</code></dt>
+<dd><p>A wide integer.
+</p>
+</dd>
+<dt><code>s</code></dt>
+<dd><p>A string.
+</p>
+</dd>
+<dt><code>E</code></dt>
+<dd><p>A vector of expressions.
+</p></dd>
+</dl>
+
+<p>A few other format characters are used occasionally:
+</p>
+<dl compact="compact">
+<dt><code>u</code></dt>
+<dd><p>&lsquo;<samp>u</samp>&rsquo; is equivalent to &lsquo;<samp>e</samp>&rsquo; except that it is printed differently
+in debugging dumps. It is used for pointers to insns.
+</p>
+</dd>
+<dt><code>n</code></dt>
+<dd><p>&lsquo;<samp>n</samp>&rsquo; is equivalent to &lsquo;<samp>i</samp>&rsquo; except that it is printed differently
+in debugging dumps. It is used for the line number or code number of a
+<code>note</code> insn.
+</p>
+</dd>
+<dt><code>S</code></dt>
+<dd><p>&lsquo;<samp>S</samp>&rsquo; indicates a string which is optional. In the RTL objects in
+core, &lsquo;<samp>S</samp>&rsquo; is equivalent to &lsquo;<samp>s</samp>&rsquo;, but when the object is read,
+from an &lsquo;<samp>md</samp>&rsquo; file, the string value of this operand may be omitted.
+An omitted string is taken to be the null string.
+</p>
+</dd>
+<dt><code>V</code></dt>
+<dd><p>&lsquo;<samp>V</samp>&rsquo; indicates a vector which is optional. In the RTL objects in
+core, &lsquo;<samp>V</samp>&rsquo; is equivalent to &lsquo;<samp>E</samp>&rsquo;, but when the object is read
+from an &lsquo;<samp>md</samp>&rsquo; file, the vector value of this operand may be omitted.
+An omitted vector is effectively the same as a vector of no elements.
+</p>
+</dd>
+<dt><code>B</code></dt>
+<dd><p>&lsquo;<samp>B</samp>&rsquo; indicates a pointer to basic block structure.
+</p>
+</dd>
+<dt><code>p</code></dt>
+<dd><p>A polynomial integer. At present this is used only for <code>SUBREG_BYTE</code>.
+</p>
+</dd>
+<dt><code>0</code></dt>
+<dd><p>&lsquo;<samp>0</samp>&rsquo; means a slot whose contents do not fit any normal category.
+&lsquo;<samp>0</samp>&rsquo; slots are not printed at all in dumps, and are often used in
+special ways by small parts of the compiler.
+</p></dd>
+</dl>
+
+<p>There are macros to get the number of operands and the format
+of an expression code:
+</p>
+<dl compact="compact">
+<dd><a name="index-GET_005fRTX_005fLENGTH"></a>
+</dd>
+<dt><code>GET_RTX_LENGTH (<var>code</var>)</code></dt>
+<dd><p>Number of operands of an RTX of code <var>code</var>.
+</p>
+<a name="index-GET_005fRTX_005fFORMAT"></a>
+</dd>
+<dt><code>GET_RTX_FORMAT (<var>code</var>)</code></dt>
+<dd><p>The format of an RTX of code <var>code</var>, as a C string.
+</p></dd>
+</dl>
+
+<p>Some classes of RTX codes always have the same format. For example, it
+is safe to assume that all comparison operations have format <code>ee</code>.
+</p>
+<dl compact="compact">
+<dt><code>RTX_UNARY</code></dt>
+<dd><p>All codes of this class have format <code>e</code>.
+</p>
+</dd>
+<dt><code>RTX_BIN_ARITH</code></dt>
+<dt><code>RTX_COMM_ARITH</code></dt>
+<dt><code>RTX_COMM_COMPARE</code></dt>
+<dt><code>RTX_COMPARE</code></dt>
+<dd><p>All codes of these classes have format <code>ee</code>.
+</p>
+</dd>
+<dt><code>RTX_BITFIELD_OPS</code></dt>
+<dt><code>RTX_TERNARY</code></dt>
+<dd><p>All codes of these classes have format <code>eee</code>.
+</p>
+</dd>
+<dt><code>RTX_INSN</code></dt>
+<dd><p>All codes of this class have formats that begin with <code>iuueiee</code>.
+See <a href="Insns.html#Insns">Insns</a>. Note that not all RTL objects linked onto an insn chain
+are of class <code>RTX_INSN</code>.
+</p>
+</dd>
+<dt><code>RTX_CONST_OBJ</code></dt>
+<dt><code>RTX_OBJ</code></dt>
+<dt><code>RTX_MATCH</code></dt>
+<dt><code>RTX_EXTRA</code></dt>
+<dd><p>You can make no assumptions about the format of these codes.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Accessors.html#Accessors" accesskey="n" rel="next">Accessors</a>, Previous: <a href="RTL-Objects.html#RTL-Objects" accesskey="p" rel="previous">RTL Objects</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-Declarations.html b/share/doc/gccint/RTL-Declarations.html
new file mode 100644
index 0000000..fb354b7
--- /dev/null
+++ b/share/doc/gccint/RTL-Declarations.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL Declarations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL Declarations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL Declarations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Side-Effects.html#Side-Effects" rel="next" title="Side Effects">
+<link href="Conversions.html#Conversions" rel="previous" title="Conversions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-Declarations"></a>
+<div class="header">
+<p>
+Next: <a href="Side-Effects.html#Side-Effects" accesskey="n" rel="next">Side Effects</a>, Previous: <a href="Conversions.html#Conversions" accesskey="p" rel="previous">Conversions</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Declarations-2"></a>
+<h3 class="section">14.14 Declarations</h3>
+<a name="index-RTL-declarations"></a>
+<a name="index-declarations_002c-RTL"></a>
+
+<p>Declaration expression codes do not represent arithmetic operations
+but rather state assertions about their operands.
+</p>
+<dl compact="compact">
+<dd><a name="index-strict_005flow_005fpart"></a>
+<a name="index-subreg_002c-in-strict_005flow_005fpart"></a>
+</dd>
+<dt><code>(strict_low_part (subreg:<var>m</var> (reg:<var>n</var> <var>r</var>) 0))</code></dt>
+<dd><p>This expression code is used in only one context: as the destination operand of a
+<code>set</code> expression. In addition, the operand of this expression
+must be a non-paradoxical <code>subreg</code> expression.
+</p>
+<p>The presence of <code>strict_low_part</code> says that the part of the
+register which is meaningful in mode <var>n</var>, but is not part of
+mode <var>m</var>, is not to be altered. Normally, an assignment to such
+a subreg is allowed to have undefined effects on the rest of the
+register when <var>m</var> is smaller than &lsquo;<samp>REGMODE_NATURAL_SIZE (<var>n</var>)</samp>&rsquo;.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-Objects.html b/share/doc/gccint/RTL-Objects.html
new file mode 100644
index 0000000..c0077f3
--- /dev/null
+++ b/share/doc/gccint/RTL-Objects.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL Objects</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL Objects">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL Objects">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="RTL-Classes.html#RTL-Classes" rel="next" title="RTL Classes">
+<link href="RTL.html#RTL" rel="previous" title="RTL">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-Objects"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-Classes.html#RTL-Classes" accesskey="n" rel="next">RTL Classes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Object-Types"></a>
+<h3 class="section">14.1 RTL Object Types</h3>
+<a name="index-RTL-object-types"></a>
+
+<a name="index-RTL-integers"></a>
+<a name="index-RTL-strings"></a>
+<a name="index-RTL-vectors"></a>
+<a name="index-RTL-expression"></a>
+<a name="index-RTX-_0028See-RTL_0029"></a>
+<p>RTL uses five kinds of objects: expressions, integers, wide integers,
+strings and vectors. Expressions are the most important ones. An RTL
+expression (&ldquo;RTX&rdquo;, for short) is a C structure, but it is usually
+referred to with a pointer; a type that is given the typedef name
+<code>rtx</code>.
+</p>
+<p>An integer is simply an <code>int</code>; their written form uses decimal
+digits. A wide integer is an integral object whose type is
+<code>HOST_WIDE_INT</code>; their written form uses decimal digits.
+</p>
+<p>A string is a sequence of characters. In core it is represented as a
+<code>char *</code> in usual C fashion, and it is written in C syntax as well.
+However, strings in RTL may never be null. If you write an empty string in
+a machine description, it is represented in core as a null pointer rather
+than as a pointer to a null character. In certain contexts, these null
+pointers instead of strings are valid. Within RTL code, strings are most
+commonly found inside <code>symbol_ref</code> expressions, but they appear in
+other contexts in the RTL expressions that make up machine descriptions.
+</p>
+<p>In a machine description, strings are normally written with double
+quotes, as you would in C. However, strings in machine descriptions may
+extend over many lines, which is invalid C, and adjacent string
+constants are not concatenated as they are in C. Any string constant
+may be surrounded with a single set of parentheses. Sometimes this
+makes the machine description easier to read.
+</p>
+<p>There is also a special syntax for strings, which can be useful when C
+code is embedded in a machine description. Wherever a string can
+appear, it is also valid to write a C-style brace block. The entire
+brace block, including the outermost pair of braces, is considered to be
+the string constant. Double quote characters inside the braces are not
+special. Therefore, if you write string constants in the C code, you
+need not escape each quote character with a backslash.
+</p>
+<p>A vector contains an arbitrary number of pointers to expressions. The
+number of elements in the vector is explicitly present in the vector.
+The written form of a vector consists of square brackets
+(&lsquo;<samp>[&hellip;]</samp>&rsquo;) surrounding the elements, in sequence and with
+whitespace separating them. Vectors of length zero are not created;
+null pointers are used instead.
+</p>
+<a name="index-expression-codes"></a>
+<a name="index-codes_002c-RTL-expression"></a>
+<a name="index-GET_005fCODE"></a>
+<a name="index-PUT_005fCODE"></a>
+<p>Expressions are classified by <em>expression codes</em> (also called RTX
+codes). The expression code is a name defined in <samp>rtl.def</samp>, which is
+also (in uppercase) a C enumeration constant. The possible expression
+codes and their meanings are machine-independent. The code of an RTX can
+be extracted with the macro <code>GET_CODE (<var>x</var>)</code> and altered with
+<code>PUT_CODE (<var>x</var>, <var>newcode</var>)</code>.
+</p>
+<p>The expression code determines how many operands the expression contains,
+and what kinds of objects they are. In RTL, unlike Lisp, you cannot tell
+by looking at an operand what kind of object it is. Instead, you must know
+from its context&mdash;from the expression code of the containing expression.
+For example, in an expression of code <code>subreg</code>, the first operand is
+to be regarded as an expression and the second operand as a polynomial
+integer. In an expression of code <code>plus</code>, there are two operands,
+both of which are to be regarded as expressions. In a <code>symbol_ref</code>
+expression, there is one operand, which is to be regarded as a string.
+</p>
+<p>Expressions are written as parentheses containing the name of the
+expression type, its flags and machine mode if any, and then the operands
+of the expression (separated by spaces).
+</p>
+<p>Expression code names in the &lsquo;<samp>md</samp>&rsquo; file are written in lowercase,
+but when they appear in C code they are written in uppercase. In this
+manual, they are shown as follows: <code>const_int</code>.
+</p>
+<a name="index-_0028nil_0029"></a>
+<a name="index-nil"></a>
+<p>In a few contexts a null pointer is valid where an expression is normally
+wanted. The written form of this is <code>(nil)</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-Classes.html#RTL-Classes" accesskey="n" rel="next">RTL Classes</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Access-Lists.html b/share/doc/gccint/RTL-SSA-Access-Lists.html
new file mode 100644
index 0000000..998268e
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Access-Lists.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Access Lists</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Access Lists">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Access Lists">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" rel="next" title="Changing RTL Instructions">
+<link href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" rel="previous" title="RTL SSA Phi Nodes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Access-Lists"></a>
+<div class="header">
+<p>
+Next: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="n" rel="next">Changing RTL Instructions</a>, Previous: <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" accesskey="p" rel="previous">RTL SSA Phi Nodes</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Access-Lists-1"></a>
+<h4 class="subsection">14.21.7 RTL SSA Access Lists</h4>
+
+<p>All the definitions of a resource are chained together in reverse postorder.
+In general, this list can contain an arbitrary mix of both sets
+(<code>rtl_ssa::set_info</code>) and clobbers (<code>rtl_ssa::clobber_info</code>).
+However, it is often useful to skip over all intervening clobbers
+of a resource in order to find the next set. The list is constructed
+in such a way that this can be done in amortized constant time.
+</p>
+<p>All uses (<code>rtl_ssa::use_info</code>) of a given set are also chained
+together into a list. This list of uses is divided into three parts:
+</p>
+<ol>
+<li> uses by &ldquo;real&rdquo; nondebug instructions (see <a href="RTL-SSA-Basic-Blocks.html#real-RTL-SSA-insns">real RTL SSA insns</a>)
+
+</li><li> uses by real debug instructions
+
+</li><li> uses by phi nodes (see <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">RTL SSA Phi Nodes</a>)
+</li></ol>
+
+<p>The first and second parts individually follow reverse postorder.
+The third part has no particular order.
+</p>
+<a name="index-degenerate-phi-node_002c-RTL-SSA"></a>
+<p>The last use by a real nondebug instruction always comes earlier in
+the reverse postorder than the next definition of the resource (if any).
+This means that the accesses follow a linear sequence of the form:
+</p>
+<ul>
+<li> first definition of resource R
+
+<ul>
+<li> first use by a real nondebug instruction of the first definition of resource R
+
+</li><li> &hellip;
+
+</li><li> last use by a real nondebug instruction of the first definition of resource R
+</li></ul>
+
+</li><li> second definition of resource R
+
+<ul>
+<li> first use by a real nondebug instruction of the second definition of resource R
+
+</li><li> &hellip;
+
+</li><li> last use by a real nondebug instruction of the second definition of resource R
+</li></ul>
+
+</li><li> &hellip;
+
+</li><li> last definition of resource R
+
+<ul>
+<li> first use by a real nondebug instruction of the last definition of resource R
+
+</li><li> &hellip;
+
+</li><li> last use by a real nondebug instruction of the last definition of resource R
+</li></ul>
+</li></ul>
+
+<p>(Note that clobbers never have uses; only sets do.)
+</p>
+<p>This linear view is easy to achieve when there is only a single definition
+of a resource, which is commonly true for pseudo registers. However,
+things are more complex if code has a structure like the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">// ebb2, bb2
+R = <var>va</var>; // A
+if (&hellip;)
+ {
+ // ebb2, bb3
+ use1 (R); // B
+ &hellip;
+ R = <var>vc</var>; // C
+ }
+else
+ {
+ // ebb4, bb4
+ use2 (R); // D
+ }
+</pre></div>
+
+<p>The list of accesses would begin as follows:
+</p>
+<ul>
+<li> definition of R by A
+
+<ul>
+<li> use of A&rsquo;s definition of R by B
+</li></ul>
+
+</li><li> definition of R by C
+</li></ul>
+
+<p>The next access to R is in D, but the value of R that D uses comes from
+A rather than C.
+</p>
+<p>This is resolved by adding a phi node for <code>ebb4</code>. All inputs to this
+phi node have the same value, which in the example above is A&rsquo;s definition
+of R. In other circumstances, it would not be necessary to create a phi
+node when all inputs are equal, so these phi nodes are referred to as
+&ldquo;degenerate&rdquo; phi nodes.
+</p>
+<p>The full list of accesses to R is therefore:
+</p>
+<ul>
+<li> definition of R by A
+
+<ul>
+<li> use of A&rsquo;s definition of R by B
+</li></ul>
+
+</li><li> definition of R by C
+
+</li><li> definition of R by ebb4&rsquo;s phi instruction, with the input coming from A
+
+<ul>
+<li> use of the ebb4&rsquo;s R phi definition of R by B
+</li></ul>
+</li></ul>
+
+<p>Note that A&rsquo;s definition is also used by ebb4&rsquo;s phi node, but this
+use belongs to the third part of the use list described above and
+so does not form part of the linear sequence.
+</p>
+<p>It is possible to &ldquo;look through&rdquo; any degenerate phi to the ultimate
+definition using the function <code>look_through_degenerate_phi</code>.
+Note that the input to a degenerate phi is never itself provided
+by a degenerate phi.
+</p>
+<p>At present, the SSA form takes this principle one step further
+and guarantees that, for any given resource <var>res</var>, one of the
+following is true:
+</p>
+<ul>
+<li> The resource has a single definition <var>def</var>, which is not a phi node.
+Excluding uses of undefined registers, all uses of <var>res</var> by real
+nondebug instructions use the value provided by <var>def</var>.
+
+</li><li> Excluding uses of undefined registers, all uses of <var>res</var> use
+values provided by definitions that occur earlier in the same
+extended basic block. These definitions might come from phi nodes
+or from real instructions.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="n" rel="next">Changing RTL Instructions</a>, Previous: <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" accesskey="p" rel="previous">RTL SSA Phi Nodes</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Accesses.html b/share/doc/gccint/RTL-SSA-Accesses.html
new file mode 100644
index 0000000..72fd9e9
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Accesses.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Accesses</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Accesses">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Accesses">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" rel="next" title="RTL SSA Phi Nodes">
+<link href="RTL-SSA-Resources.html#RTL-SSA-Resources" rel="previous" title="RTL SSA Resources">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Accesses"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" accesskey="n" rel="next">RTL SSA Phi Nodes</a>, Previous: <a href="RTL-SSA-Resources.html#RTL-SSA-Resources" accesskey="p" rel="previous">RTL SSA Resources</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Register-and-Memory-Accesses"></a>
+<h4 class="subsection">14.21.5 RTL SSA Register and Memory Accesses</h4>
+
+<p>In the RTL SSA form, most reads or writes of a resource are
+represented as a <code>rtl_ssa::access_info</code><a name="DOCF6" href="#FOOT6"><sup>6</sup></a>.
+These <code>rtl_ssa::access_info</code>s are organized into the following
+class hierarchy:
+</p>
+<a name="index-rtl_005fssa_003a_003aaccess_005finfo"></a>
+<a name="index-rtl_005fssa_003a_003ause_005finfo"></a>
+<a name="index-rtl_005fssa_003a_003adef_005finfo"></a>
+<a name="index-rtl_005fssa_003a_003aclobber_005finfo"></a>
+<a name="index-rtl_005fssa_003a_003aset_005finfo"></a>
+<a name="index-rtl_005fssa_003a_003aphi_005finfo"></a>
+<div class="smallexample">
+<pre class="smallexample">rtl_ssa::access_info
+ |
+ +-- rtl_ssa::use_info
+ |
+ +-- rtl_ssa::def_info
+ |
+ +-- rtl_ssa::clobber_info
+ |
+ +-- rtl_ssa::set_info
+ |
+ +-- rtl_ssa::phi_info
+</pre></div>
+
+<p>A <code>rtl_ssa::use_info</code> represents a read or use of a resource and
+a <code>rtl_ssa::def_info</code> represents a write or definition of a resource.
+As in the main RTL representation, there are two basic types of
+definition: clobbers and sets. The difference is that a clobber
+leaves the register with an unspecified value that cannot be used
+or relied on by later instructions, while a set leaves the register
+with a known value that later instructions could use if they wanted to.
+A <code>rtl_ssa::clobber_info</code> represents a clobber and
+a <code>rtl_ssa::set_info</code> represent a set.
+</p>
+<p>Each <code>rtl_ssa::use_info</code> records which single <code>rtl_ssa::set_info</code>
+provides the value of the resource; this is null if the resource is
+completely undefined at the point of use. Each <code>rtl_ssa::set_info</code>
+in turn records all the <code>rtl_ssa::use_info</code>s that use its value.
+</p>
+<p>If a value of a resource can come from multiple sources,
+a <code>rtl_ssa::phi_info</code> brings those multiple sources together
+into a single definition (see <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">RTL SSA Phi Nodes</a>).
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT6" href="#DOCF6">(6)</a></h3>
+<p>The exceptions
+are call clobbers, which are generally represented separately.
+See the comment above <code>rtl_ssa::insn_info</code> for details.</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Basic-Blocks.html b/share/doc/gccint/RTL-SSA-Basic-Blocks.html
new file mode 100644
index 0000000..342f3eb
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Basic-Blocks.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Basic Blocks</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Basic Blocks">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Basic Blocks">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Resources.html#RTL-SSA-Resources" rel="next" title="RTL SSA Resources">
+<link href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" rel="previous" title="RTL SSA Instructions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Basic-Blocks"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Resources.html#RTL-SSA-Resources" accesskey="n" rel="next">RTL SSA Resources</a>, Previous: <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" accesskey="p" rel="previous">RTL SSA Instructions</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Basic-Blocks-1"></a>
+<h4 class="subsection">14.21.3 RTL SSA Basic Blocks</h4>
+
+<a name="index-basic-blocks_002c-RTL-SSA"></a>
+<a name="index-basic_005fblock"></a>
+<a name="index-rtl_005fssa_003a_003abb_005finfo"></a>
+<p>RTL SSA instructions (see <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">RTL SSA Instructions</a>) are organized into
+basic blocks, with each block being represented by an <code>rtl_ssa:bb_info</code>.
+There is a one-to-one mapping between these <code>rtl_ssa:bb_info</code>
+structures and the underlying CFG <code>basic_block</code> structures
+(see <a href="Basic-Blocks.html#Basic-Blocks">Basic Blocks</a>).
+</p>
+<a name="index-_0060_0060real_0027_0027-instructions_002c-RTL-SSA"></a>
+<a name="real-RTL-SSA-insns"></a><p>If a CFG basic block <var>bb</var> contains an RTL instruction <var>insn</var>,
+the RTL SSA represenation of <var>bb</var> also contains an RTL SSA representation
+of <var>insn</var><a name="DOCF5" href="#FOOT5"><sup>5</sup></a>. Within RTL SSA, these instructions are referred to as
+&ldquo;real&rdquo; instructions. These real instructions fall into two groups:
+debug instructions and nondebug instructions. Only nondebug instructions
+should affect code generation decisions.
+</p>
+<p>In addition, each RTL SSA basic block has two &ldquo;artificial&rdquo;
+instructions: a &ldquo;head&rdquo; instruction that comes before all the real
+instructions and an &ldquo;end&rdquo; instruction that comes after all real
+instructions. These instructions exist to represent things that
+are conceptually defined or used at the start and end of a basic block.
+The instructions always exist, even if they do not currently do anything.
+</p>
+<p>Like instructions, these blocks are chained together in a reverse
+postorder. This list includes the entry block (which always comes
+first) and the exit block (which always comes last).
+</p>
+<a name="index-extended-basic-blocks_002c-RTL-SSA"></a>
+<a name="index-rtl_005fssa_003a_003aebb_005finfo"></a>
+<p>RTL SSA basic blocks are chained together into &ldquo;extended basic blocks&rdquo;
+(EBBs), represented by an <code>rtl_ssa::ebb_info</code>. Extended basic
+blocks contain one or more basic blocks. They have the property
+that if a block <var>bby</var> comes immediately after a block <var>bbx</var>
+in an EBB, then <var>bby</var> can only be reached by <var>bbx</var>; in other words,
+<var>bbx</var> is the sole predecessor of <var>bby</var>.
+</p>
+<p>Each extended basic block starts with an artificial &ldquo;phi node&rdquo;
+instruction. This instruction defines all phi nodes for the EBB
+(see <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">RTL SSA Phi Nodes</a>). (Individual blocks in an EBB do not
+need phi nodes because their live values can only come from one source.)
+</p>
+<p>The contents of a function are therefore represented using a
+four-level hierarchy:
+</p>
+<ul>
+<li> functions (<code>rtl_ssa::function_info</code>), which contain &hellip;
+
+</li><li> extended basic blocks (<code>rtl_ssa::ebb_info</code>), which contain &hellip;
+
+</li><li> basic blocks (<code>rtl_ssa::bb_info</code>), which contain &hellip;
+
+</li><li> instructions (<code>rtl_ssa::insn_info</code>)
+</li></ul>
+
+<p>In dumps, a basic block is identified as <code>bb<var>n</var></code>, where <var>n</var>
+is the index of the associated CFG <code>basic_block</code> structure.
+An EBB is in turn identified by the index of its first block.
+For example, an EBB that contains &lsquo;<samp>bb10</samp>&rsquo;, <code>bb5</code>, <code>bb6</code>
+and <code>bb9</code> is identified as <var>ebb10</var>.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT5" href="#DOCF5">(5)</a></h3>
+<p>Note that this excludes non-instruction things like
+<code>note</code>s and <code>barrier</code>s that also appear in the chain of RTL
+instructions.</p>
+</div>
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Resources.html#RTL-SSA-Resources" accesskey="n" rel="next">RTL SSA Resources</a>, Previous: <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" accesskey="p" rel="previous">RTL SSA Instructions</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Instructions.html b/share/doc/gccint/RTL-SSA-Instructions.html
new file mode 100644
index 0000000..a0fb1d2
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Instructions.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Instructions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Instructions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Instructions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks" rel="next" title="RTL SSA Basic Blocks">
+<link href="Using-RTL-SSA.html#Using-RTL-SSA" rel="previous" title="Using RTL SSA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Instructions"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks" accesskey="n" rel="next">RTL SSA Basic Blocks</a>, Previous: <a href="Using-RTL-SSA.html#Using-RTL-SSA" accesskey="p" rel="previous">Using RTL SSA</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Instructions-1"></a>
+<h4 class="subsection">14.21.2 RTL SSA Instructions</h4>
+
+<a name="index-RPO"></a>
+<a name="index-reverse-postorder"></a>
+<a name="index-instructions_002c-RTL-SSA"></a>
+<a name="index-rtl_005fssa_003a_003ainsn_005finfo"></a>
+<p>RTL SSA instructions are represented by an <code>rtl_ssa::insn_info</code>.
+These instructions are chained together in a single list that follows
+a reverse postorder (RPO) traversal of the function. This means that
+if any path through the function can execute an instruction <var>I1</var>
+and then later execute an instruction <var>I2</var> for the first time,
+<var>I1</var> appears before <var>I2</var> in the list<a name="DOCF4" href="#FOOT4"><sup>4</sup></a>.
+</p>
+<p>Two RTL SSA instructions can be compared to find which instruction
+occurs earlier than the other in the RPO. One way to do this is
+to use the C++ comparison operators, such as:
+</p>
+<div class="example">
+<pre class="example">*<var>insn1</var> &lt; *<var>insn2</var>
+</pre></div>
+
+<p>Another way is to use the <code>compare_with</code> function:
+</p>
+<div class="example">
+<pre class="example"><var>insn1</var>-&gt;compare_with (<var>insn2</var>)
+</pre></div>
+
+<p>This expression is greater than zero if <var>insn1</var> comes after <var>insn2</var>
+in the RPO, less than zero if <var>insn1</var> comes before <var>insn2</var> in the
+RPO, or zero if <var>insn1</var> and <var>insn2</var> are the same. This order is
+maintained even if instructions are added to the function or moved around.
+</p>
+<p>The main purpose of <code>rtl_ssa::insn_info</code> is to hold
+SSA information about an instruction. However, it also caches
+certain properties of the instruction, such as whether it is an
+inline assembly instruction, whether it has volatile accesses, and so on.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT4" href="#DOCF4">(4)</a></h3>
+<p>Note that this
+order is different from the order of the underlying RTL instructions,
+which follow machine code order instead.</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Phi-Nodes.html b/share/doc/gccint/RTL-SSA-Phi-Nodes.html
new file mode 100644
index 0000000..2c63fd2
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Phi-Nodes.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Phi Nodes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Phi Nodes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Phi Nodes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" rel="next" title="RTL SSA Access Lists">
+<link href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" rel="previous" title="RTL SSA Accesses">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Phi-Nodes"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" accesskey="n" rel="next">RTL SSA Access Lists</a>, Previous: <a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" accesskey="p" rel="previous">RTL SSA Accesses</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Phi-Nodes-1"></a>
+<h4 class="subsection">14.21.6 RTL SSA Phi Nodes</h4>
+
+<a name="index-phi-nodes_002c-RTL-SSA"></a>
+<a name="index-rtl_005fssa_003a_003aphi_005finfo-1"></a>
+<p>If a resource is live on entry to an extended basic block and if the
+resource&rsquo;s value can come from multiple sources, the extended basic block
+has a &ldquo;phi node&rdquo; that collects together these multiple sources.
+The phi node conceptually has one input for each incoming edge of
+the extended basic block, with the input specifying the value of
+the resource on that edge. For example, suppose a function contains
+the following RTL:
+</p>
+<div class="smallexample">
+<pre class="smallexample">;; Basic block bb3
+&hellip;
+(set (reg:SI R1) (const_int 0)) ;; A
+(set (pc) (label_ref bb5))
+
+;; Basic block bb4
+&hellip;
+(set (reg:SI R1) (const_int 1)) ;; B
+;; Fall through
+
+;; Basic block bb5
+;; preds: bb3, bb4
+;; live in: R1 &hellip;
+(code_label bb5)
+&hellip;
+(set (reg:SI <var>R2</var>)
+ (plus:SI (reg:SI R1) &hellip;)) ;; C
+</pre></div>
+
+<p>The value of R1 on entry to block 5 can come from either A or B.
+The extended basic block that contains block 5 would therefore have a
+phi node with two inputs: the first input would have the value of
+R1 defined by A and the second input would have the value of
+R1 defined by B. This phi node would then provide the value of
+R1 for C (assuming that R1 does not change again between
+the start of block 5 and C).
+</p>
+<p>Since RTL is not a &ldquo;native&rdquo; SSA representation, these phi nodes
+simply collect together definitions that already exist. Each input
+to a phi node for a resource <var>R</var> is itself a definition of
+resource <var>R</var> (or is null if the resource is completely
+undefined for a particular incoming edge). This is in contrast
+to a native SSA representation like GIMPLE, where the phi inputs
+can be arbitrary expressions. As a result, RTL SSA phi nodes
+never involve &ldquo;hidden&rdquo; moves: all moves are instead explicit.
+</p>
+<p>Phi nodes are represented as a <code>rtl_ssa::phi_node</code>.
+Each input to a phi node is represented as an <code>rtl_ssa::use_info</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" accesskey="n" rel="next">RTL SSA Access Lists</a>, Previous: <a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" accesskey="p" rel="previous">RTL SSA Accesses</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA-Resources.html b/share/doc/gccint/RTL-SSA-Resources.html
new file mode 100644
index 0000000..db9b209
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA-Resources.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA Resources</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA Resources">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA Resources">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" rel="next" title="RTL SSA Accesses">
+<link href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks" rel="previous" title="RTL SSA Basic Blocks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA-Resources"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" accesskey="n" rel="next">RTL SSA Accesses</a>, Previous: <a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks" accesskey="p" rel="previous">RTL SSA Basic Blocks</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-SSA-Resources-1"></a>
+<h4 class="subsection">14.21.4 RTL SSA Resources</h4>
+
+<p>The RTL SSA form tracks two types of &ldquo;resource&rdquo;: registers and memory.
+Each hard and pseudo register is a separate resource. Memory is a
+single unified resource, like it is in GIMPLE (see <a href="GIMPLE.html#GIMPLE">GIMPLE</a>).
+</p>
+<p>Each resource has a unique identifier. The unique identifier for a
+register is simply its register number. The unique identifier for
+memory is a special register number called <code>MEM_REGNO</code>.
+</p>
+<p>Since resource numbers so closely match register numbers, it is sometimes
+convenient to refer to them simply as register numbers, or &ldquo;regnos&rdquo;
+for short. However, the RTL SSA form also provides an abstraction
+of resources in the form of <code>rtl_ssa::resource_info</code>.
+This is a lightweight class that records both the regno of a resource
+and the <code>machine_mode</code> that the resource has (see <a href="Machine-Modes.html#Machine-Modes">Machine Modes</a>).
+It has functions for testing whether a resource is a register or memory.
+In principle it could be extended to other kinds of resource in future.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-SSA.html b/share/doc/gccint/RTL-SSA.html
new file mode 100644
index 0000000..cf317d9
--- /dev/null
+++ b/share/doc/gccint/RTL-SSA.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL SSA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL SSA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL SSA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Using-RTL-SSA.html#Using-RTL-SSA" rel="next" title="Using RTL SSA">
+<link href="Calls.html#Calls" rel="previous" title="Calls">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-SSA"></a>
+<div class="header">
+<p>
+Next: <a href="Sharing.html#Sharing" accesskey="n" rel="next">Sharing</a>, Previous: <a href="Calls.html#Calls" accesskey="p" rel="previous">Calls</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="On_002dthe_002dSide-SSA-Form-for-RTL"></a>
+<h3 class="section">14.21 On-the-Side SSA Form for RTL</h3>
+<a name="index-SSA_002c-RTL-form"></a>
+<a name="index-RTL-SSA"></a>
+
+<p>The patterns of an individual RTL instruction describe which registers
+are inputs to that instruction and which registers are outputs from
+that instruction. However, it is often useful to know where the
+definition of a register input comes from and where the result of
+a register output is used. One way of obtaining this information
+is to use the RTL SSA form, which provides a Static Single Assignment
+representation of the RTL instructions.
+</p>
+<p>The RTL SSA code is located in the <samp>rtl-ssa</samp> subdirectory of the GCC
+source tree. This section only gives a brief overview of it; please
+see the comments in the source code for more details.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Using-RTL-SSA.html#Using-RTL-SSA" accesskey="1">Using RTL SSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What a pass needs to do to use the RTL SSA form
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" accesskey="2">RTL SSA Instructions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How instructions are represented and organized
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks" accesskey="3">RTL SSA Basic Blocks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How instructions are grouped into blocks
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Resources.html#RTL-SSA-Resources" accesskey="4">RTL SSA Resources</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How registers and memory are represented
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Accesses.html#RTL-SSA-Accesses" accesskey="5">RTL SSA Accesses</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How register and memory accesses are represented
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes" accesskey="6">RTL SSA Phi Nodes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How multiple sources are combined into one
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists" accesskey="7">RTL SSA Access Lists</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How accesses are chained together
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Changing-RTL-Instructions.html#Changing-RTL-Instructions" accesskey="8">Changing RTL Instructions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to use the RTL SSA framework to change insns
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sharing.html#Sharing" accesskey="n" rel="next">Sharing</a>, Previous: <a href="Calls.html#Calls" accesskey="p" rel="previous">Calls</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-Template.html b/share/doc/gccint/RTL-Template.html
new file mode 100644
index 0000000..70279a9
--- /dev/null
+++ b/share/doc/gccint/RTL-Template.html
@@ -0,0 +1,342 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL Template</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL Template">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL Template">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Output-Template.html#Output-Template" rel="next" title="Output Template">
+<link href="Example.html#Example" rel="previous" title="Example">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-Template"></a>
+<div class="header">
+<p>
+Next: <a href="Output-Template.html#Output-Template" accesskey="n" rel="next">Output Template</a>, Previous: <a href="Example.html#Example" accesskey="p" rel="previous">Example</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Template-1"></a>
+<h3 class="section">17.4 RTL Template</h3>
+<a name="index-RTL-insn-template"></a>
+<a name="index-generating-insns"></a>
+<a name="index-insns_002c-generating"></a>
+<a name="index-recognizing-insns"></a>
+<a name="index-insns_002c-recognizing"></a>
+
+<p>The RTL template is used to define which insns match the particular pattern
+and how to find their operands. For named patterns, the RTL template also
+says how to construct an insn from specified operands.
+</p>
+<p>Construction involves substituting specified operands into a copy of the
+template. Matching involves determining the values that serve as the
+operands in the insn being matched. Both of these activities are
+controlled by special expression types that direct matching and
+substitution of the operands.
+</p>
+<dl compact="compact">
+<dd><a name="index-match_005foperand"></a>
+</dd>
+<dt><code>(match_operand:<var>m</var> <var>n</var> <var>predicate</var> <var>constraint</var>)</code></dt>
+<dd><p>This expression is a placeholder for operand number <var>n</var> of
+the insn. When constructing an insn, operand number <var>n</var>
+will be substituted at this point. When matching an insn, whatever
+appears at this position in the insn will be taken as operand
+number <var>n</var>; but it must satisfy <var>predicate</var> or this instruction
+pattern will not match at all.
+</p>
+<p>Operand numbers must be chosen consecutively counting from zero in
+each instruction pattern. There may be only one <code>match_operand</code>
+expression in the pattern for each operand number. Usually operands
+are numbered in the order of appearance in <code>match_operand</code>
+expressions. In the case of a <code>define_expand</code>, any operand numbers
+used only in <code>match_dup</code> expressions have higher values than all
+other operand numbers.
+</p>
+<p><var>predicate</var> is a string that is the name of a function that
+accepts two arguments, an expression and a machine mode.
+See <a href="Predicates.html#Predicates">Predicates</a>. During matching, the function will be called with
+the putative operand as the expression and <var>m</var> as the mode
+argument (if <var>m</var> is not specified, <code>VOIDmode</code> will be used,
+which normally causes <var>predicate</var> to accept any mode). If it
+returns zero, this instruction pattern fails to match.
+<var>predicate</var> may be an empty string; then it means no test is to be
+done on the operand, so anything which occurs in this position is
+valid.
+</p>
+<p>Most of the time, <var>predicate</var> will reject modes other than <var>m</var>&mdash;but
+not always. For example, the predicate <code>address_operand</code> uses
+<var>m</var> as the mode of memory ref that the address should be valid for.
+Many predicates accept <code>const_int</code> nodes even though their mode is
+<code>VOIDmode</code>.
+</p>
+<p><var>constraint</var> controls reloading and the choice of the best register
+class to use for a value, as explained later (see <a href="Constraints.html#Constraints">Constraints</a>).
+If the constraint would be an empty string, it can be omitted.
+</p>
+<p>People are often unclear on the difference between the constraint and the
+predicate. The predicate helps decide whether a given insn matches the
+pattern. The constraint plays no role in this decision; instead, it
+controls various decisions in the case of an insn which does match.
+</p>
+<a name="index-match_005fscratch"></a>
+</dd>
+<dt><code>(match_scratch:<var>m</var> <var>n</var> <var>constraint</var>)</code></dt>
+<dd><p>This expression is also a placeholder for operand number <var>n</var>
+and indicates that operand must be a <code>scratch</code> or <code>reg</code>
+expression.
+</p>
+<p>When matching patterns, this is equivalent to
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_operand:<var>m</var> <var>n</var> &quot;scratch_operand&quot; <var>constraint</var>)
+</pre></div>
+
+<p>but, when generating RTL, it produces a (<code>scratch</code>:<var>m</var>)
+expression.
+</p>
+<p>If the last few expressions in a <code>parallel</code> are <code>clobber</code>
+expressions whose operands are either a hard register or
+<code>match_scratch</code>, the combiner can add or delete them when
+necessary. See <a href="Side-Effects.html#Side-Effects">Side Effects</a>.
+</p>
+<a name="index-match_005fdup"></a>
+</dd>
+<dt><code>(match_dup <var>n</var>)</code></dt>
+<dd><p>This expression is also a placeholder for operand number <var>n</var>.
+It is used when the operand needs to appear more than once in the
+insn.
+</p>
+<p>In construction, <code>match_dup</code> acts just like <code>match_operand</code>:
+the operand is substituted into the insn being constructed. But in
+matching, <code>match_dup</code> behaves differently. It assumes that operand
+number <var>n</var> has already been determined by a <code>match_operand</code>
+appearing earlier in the recognition template, and it matches only an
+identical-looking expression.
+</p>
+<p>Note that <code>match_dup</code> should not be used to tell the compiler that
+a particular register is being used for two operands (example:
+<code>add</code> that adds one register to another; the second register is
+both an input operand and the output operand). Use a matching
+constraint (see <a href="Simple-Constraints.html#Simple-Constraints">Simple Constraints</a>) for those. <code>match_dup</code> is for the cases where one
+operand is used in two places in the template, such as an instruction
+that computes both a quotient and a remainder, where the opcode takes
+two input operands but the RTL template has to refer to each of those
+twice; once for the quotient pattern and once for the remainder pattern.
+</p>
+<a name="index-match_005foperator"></a>
+</dd>
+<dt><code>(match_operator:<var>m</var> <var>n</var> <var>predicate</var> [<var>operands</var>&hellip;])</code></dt>
+<dd><p>This pattern is a kind of placeholder for a variable RTL expression
+code.
+</p>
+<p>When constructing an insn, it stands for an RTL expression whose
+expression code is taken from that of operand <var>n</var>, and whose
+operands are constructed from the patterns <var>operands</var>.
+</p>
+<p>When matching an expression, it matches an expression if the function
+<var>predicate</var> returns nonzero on that expression <em>and</em> the
+patterns <var>operands</var> match the operands of the expression.
+</p>
+<p>Suppose that the function <code>commutative_operator</code> is defined as
+follows, to match any expression whose operator is one of the
+commutative arithmetic operators of RTL and whose mode is <var>mode</var>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int
+commutative_operator (x, mode)
+ rtx x;
+ machine_mode mode;
+{
+ enum rtx_code code = GET_CODE (x);
+ if (GET_MODE (x) != mode)
+ return 0;
+ return (GET_RTX_CLASS (code) == RTX_COMM_ARITH
+ || code == EQ || code == NE);
+}
+</pre></div>
+
+<p>Then the following pattern will match any RTL expression consisting
+of a commutative operator applied to two general operands:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match_operator:SI 3 &quot;commutative_operator&quot;
+ [(match_operand:SI 1 &quot;general_operand&quot; &quot;g&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;g&quot;)])
+</pre></div>
+
+<p>Here the vector <code>[<var>operands</var>&hellip;]</code> contains two patterns
+because the expressions to be matched all contain two operands.
+</p>
+<p>When this pattern does match, the two operands of the commutative
+operator are recorded as operands 1 and 2 of the insn. (This is done
+by the two instances of <code>match_operand</code>.) Operand 3 of the insn
+will be the entire commutative expression: use <code>GET_CODE
+(operands[3])</code> to see which commutative operator was used.
+</p>
+<p>The machine mode <var>m</var> of <code>match_operator</code> works like that of
+<code>match_operand</code>: it is passed as the second argument to the
+predicate function, and that function is solely responsible for
+deciding whether the expression to be matched &ldquo;has&rdquo; that mode.
+</p>
+<p>When constructing an insn, argument 3 of the gen-function will specify
+the operation (i.e. the expression code) for the expression to be
+made. It should be an RTL expression, whose expression code is copied
+into a new expression whose operands are arguments 1 and 2 of the
+gen-function. The subexpressions of argument 3 are not used;
+only its expression code matters.
+</p>
+<p>When <code>match_operator</code> is used in a pattern for matching an insn,
+it usually best if the operand number of the <code>match_operator</code>
+is higher than that of the actual operands of the insn. This improves
+register allocation because the register allocator often looks at
+operands 1 and 2 of insns to see if it can do register tying.
+</p>
+<p>There is no way to specify constraints in <code>match_operator</code>. The
+operand of the insn which corresponds to the <code>match_operator</code>
+never has any constraints because it is never reloaded as a whole.
+However, if parts of its <var>operands</var> are matched by
+<code>match_operand</code> patterns, those parts may have constraints of
+their own.
+</p>
+<a name="index-match_005fop_005fdup"></a>
+</dd>
+<dt><code>(match_op_dup:<var>m</var> <var>n</var>[<var>operands</var>&hellip;])</code></dt>
+<dd><p>Like <code>match_dup</code>, except that it applies to operators instead of
+operands. When constructing an insn, operand number <var>n</var> will be
+substituted at this point. But in matching, <code>match_op_dup</code> behaves
+differently. It assumes that operand number <var>n</var> has already been
+determined by a <code>match_operator</code> appearing earlier in the
+recognition template, and it matches only an identical-looking
+expression.
+</p>
+<a name="index-match_005fparallel"></a>
+</dd>
+<dt><code>(match_parallel <var>n</var> <var>predicate</var> [<var>subpat</var>&hellip;])</code></dt>
+<dd><p>This pattern is a placeholder for an insn that consists of a
+<code>parallel</code> expression with a variable number of elements. This
+expression should only appear at the top level of an insn pattern.
+</p>
+<p>When constructing an insn, operand number <var>n</var> will be substituted at
+this point. When matching an insn, it matches if the body of the insn
+is a <code>parallel</code> expression with at least as many elements as the
+vector of <var>subpat</var> expressions in the <code>match_parallel</code>, if each
+<var>subpat</var> matches the corresponding element of the <code>parallel</code>,
+<em>and</em> the function <var>predicate</var> returns nonzero on the
+<code>parallel</code> that is the body of the insn. It is the responsibility
+of the predicate to validate elements of the <code>parallel</code> beyond
+those listed in the <code>match_parallel</code>.
+</p>
+<p>A typical use of <code>match_parallel</code> is to match load and store
+multiple expressions, which can contain a variable number of elements
+in a <code>parallel</code>. For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(match_parallel 0 &quot;load_multiple_operation&quot;
+ [(set (match_operand:SI 1 &quot;gpc_reg_operand&quot; &quot;=r&quot;)
+ (match_operand:SI 2 &quot;memory_operand&quot; &quot;m&quot;))
+ (use (reg:SI 179))
+ (clobber (reg:SI 179))])]
+ &quot;&quot;
+ &quot;loadm 0,0,%1,%2&quot;)
+</pre></div>
+
+<p>This example comes from <samp>a29k.md</samp>. The function
+<code>load_multiple_operation</code> is defined in <samp>a29k.c</samp> and checks
+that subsequent elements in the <code>parallel</code> are the same as the
+<code>set</code> in the pattern, except that they are referencing subsequent
+registers and memory locations.
+</p>
+<p>An insn that matches this pattern might look like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(parallel
+ [(set (reg:SI 20) (mem:SI (reg:SI 100)))
+ (use (reg:SI 179))
+ (clobber (reg:SI 179))
+ (set (reg:SI 21)
+ (mem:SI (plus:SI (reg:SI 100)
+ (const_int 4))))
+ (set (reg:SI 22)
+ (mem:SI (plus:SI (reg:SI 100)
+ (const_int 8))))])
+</pre></div>
+
+<a name="index-match_005fpar_005fdup"></a>
+</dd>
+<dt><code>(match_par_dup <var>n</var> [<var>subpat</var>&hellip;])</code></dt>
+<dd><p>Like <code>match_op_dup</code>, but for <code>match_parallel</code> instead of
+<code>match_operator</code>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Output-Template.html#Output-Template" accesskey="n" rel="next">Output Template</a>, Previous: <a href="Example.html#Example" accesskey="p" rel="previous">Example</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-Tests.html b/share/doc/gccint/RTL-Tests.html
new file mode 100644
index 0000000..947422b
--- /dev/null
+++ b/share/doc/gccint/RTL-Tests.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL Tests</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL Tests">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL Tests">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="Options.html#Options" rel="next" title="Options">
+<link href="GIMPLE-Tests.html#GIMPLE-Tests" rel="previous" title="GIMPLE Tests">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-Tests"></a>
+<div class="header">
+<p>
+Previous: <a href="GIMPLE-Tests.html#GIMPLE-Tests" accesskey="p" rel="previous">GIMPLE Tests</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-RTL-passes"></a>
+<h3 class="section">7.11 Support for testing RTL passes</h3>
+
+<p>As of gcc 7, C functions can be tagged with <code>__RTL</code> to indicate that the
+function body will be RTL, rather than C. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">double __RTL (startwith (&quot;ira&quot;)) test (struct foo *f, const struct bar *b)
+{
+ (function &quot;test&quot;
+ [...snip; various directives go in here...]
+ ) ;; function &quot;test&quot;
+}
+</pre></div>
+
+<p>The <code>startwith</code> argument indicates at which pass to begin.
+</p>
+<p>The parser expects the RTL body to be in the format emitted by this
+dumping function:
+</p>
+<div class="smallexample">
+<pre class="smallexample">DEBUG_FUNCTION void
+print_rtx_function (FILE *outfile, function *fn, bool compact);
+</pre></div>
+
+<p>when &quot;compact&quot; is true. So you can capture RTL in the correct format
+from the debugger using:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(gdb) print_rtx_function (stderr, cfun, true);
+</pre></div>
+
+<p>and copy and paste the output into the body of the C function.
+</p>
+<p>Example DejaGnu tests of RTL can be seen in the source tree under
+<samp>gcc/testsuite/gcc.dg/rtl</samp>.
+</p>
+<p>The <code>__RTL</code> parser is not integrated with the C tokenizer or
+preprocessor, and works simply by reading the relevant lines within
+the braces. In particular, the RTL body must be on separate lines from
+the enclosing braces, and the preprocessor is not usable within it.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL-passes.html b/share/doc/gccint/RTL-passes.html
new file mode 100644
index 0000000..0c1cba9
--- /dev/null
+++ b/share/doc/gccint/RTL-passes.html
@@ -0,0 +1,356 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="Optimization-info.html#Optimization-info" rel="next" title="Optimization info">
+<link href="Tree-SSA-passes.html#Tree-SSA-passes" rel="previous" title="Tree SSA passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL-passes"></a>
+<div class="header">
+<p>
+Next: <a href="Optimization-info.html#Optimization-info" accesskey="n" rel="next">Optimization info</a>, Previous: <a href="Tree-SSA-passes.html#Tree-SSA-passes" accesskey="p" rel="previous">Tree SSA passes</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-passes-1"></a>
+<h3 class="section">9.6 RTL passes</h3>
+
+<p>The following briefly describes the RTL generation and optimization
+passes that are run after the Tree optimization passes.
+</p>
+<ul>
+<li> RTL generation
+
+<p>The source files for RTL generation include
+<samp>stmt.cc</samp>,
+<samp>calls.cc</samp>,
+<samp>expr.cc</samp>,
+<samp>explow.cc</samp>,
+<samp>expmed.cc</samp>,
+<samp>function.cc</samp>,
+<samp>optabs.cc</samp>
+and <samp>emit-rtl.cc</samp>.
+Also, the file
+<samp>insn-emit.cc</samp>, generated from the machine description by the
+program <code>genemit</code>, is used in this pass. The header file
+<samp>expr.h</samp> is used for communication within this pass.
+</p>
+<a name="index-genflags"></a>
+<a name="index-gencodes"></a>
+<p>The header files <samp>insn-flags.h</samp> and <samp>insn-codes.h</samp>,
+generated from the machine description by the programs <code>genflags</code>
+and <code>gencodes</code>, tell this pass which standard names are available
+for use and which patterns correspond to them.
+</p>
+</li><li> Generation of exception landing pads
+
+<p>This pass generates the glue that handles communication between the
+exception handling library routines and the exception handlers within
+the function. Entry points in the function that are invoked by the
+exception handling library are called <em>landing pads</em>. The code
+for this pass is located in <samp>except.cc</samp>.
+</p>
+</li><li> Control flow graph cleanup
+
+<p>This pass removes unreachable code, simplifies jumps to next, jumps to
+jump, jumps across jumps, etc. The pass is run multiple times.
+For historical reasons, it is occasionally referred to as the &ldquo;jump
+optimization pass&rdquo;. The bulk of the code for this pass is in
+<samp>cfgcleanup.cc</samp>, and there are support routines in <samp>cfgrtl.cc</samp>
+and <samp>jump.cc</samp>.
+</p>
+</li><li> Forward propagation of single-def values
+
+<p>This pass attempts to remove redundant computation by substituting
+variables that come from a single definition, and
+seeing if the result can be simplified. It performs copy propagation
+and addressing mode selection. The pass is run twice, with values
+being propagated into loops only on the second run. The code is
+located in <samp>fwprop.cc</samp>.
+</p>
+</li><li> Common subexpression elimination
+
+<p>This pass removes redundant computation within basic blocks, and
+optimizes addressing modes based on cost. The pass is run twice.
+The code for this pass is located in <samp>cse.cc</samp>.
+</p>
+</li><li> Global common subexpression elimination
+
+<p>This pass performs two
+different types of GCSE depending on whether you are optimizing for
+size or not (LCM based GCSE tends to increase code size for a gain in
+speed, while Morel-Renvoise based GCSE does not).
+When optimizing for size, GCSE is done using Morel-Renvoise Partial
+Redundancy Elimination, with the exception that it does not try to move
+invariants out of loops&mdash;that is left to the loop optimization pass.
+If MR PRE GCSE is done, code hoisting (aka unification) is also done, as
+well as load motion.
+If you are optimizing for speed, LCM (lazy code motion) based GCSE is
+done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM
+based GCSE also does loop invariant code motion. We also perform load
+and store motion when optimizing for speed.
+Regardless of which type of GCSE is used, the GCSE pass also performs
+global constant and copy propagation.
+The source file for this pass is <samp>gcse.cc</samp>, and the LCM routines
+are in <samp>lcm.cc</samp>.
+</p>
+</li><li> Loop optimization
+
+<p>This pass performs several loop related optimizations.
+The source files <samp>cfgloopanal.cc</samp> and <samp>cfgloopmanip.cc</samp> contain
+generic loop analysis and manipulation code. Initialization and finalization
+of loop structures is handled by <samp>loop-init.cc</samp>.
+A loop invariant motion pass is implemented in <samp>loop-invariant.cc</samp>.
+Basic block level optimizations&mdash;unrolling, and peeling loops&mdash;
+are implemented in <samp>loop-unroll.cc</samp>.
+Replacing of the exit condition of loops by special machine-dependent
+instructions is handled by <samp>loop-doloop.cc</samp>.
+</p>
+</li><li> Jump bypassing
+
+<p>This pass is an aggressive form of GCSE that transforms the control
+flow graph of a function by propagating constants into conditional
+branch instructions. The source file for this pass is <samp>gcse.cc</samp>.
+</p>
+</li><li> If conversion
+
+<p>This pass attempts to replace conditional branches and surrounding
+assignments with arithmetic, boolean value producing comparison
+instructions, and conditional move instructions. In the very last
+invocation after reload/LRA, it will generate predicated instructions
+when supported by the target. The code is located in <samp>ifcvt.cc</samp>.
+</p>
+</li><li> Web construction
+
+<p>This pass splits independent uses of each pseudo-register. This can
+improve effect of the other transformation, such as CSE or register
+allocation. The code for this pass is located in <samp>web.cc</samp>.
+</p>
+</li><li> Instruction combination
+
+<p>This pass attempts to combine groups of two or three instructions that
+are related by data flow into single instructions. It combines the
+RTL expressions for the instructions by substitution, simplifies the
+result using algebra, and then attempts to match the result against
+the machine description. The code is located in <samp>combine.cc</samp>.
+</p>
+</li><li> Mode switching optimization
+
+<p>This pass looks for instructions that require the processor to be in a
+specific &ldquo;mode&rdquo; and minimizes the number of mode changes required to
+satisfy all users. What these modes are, and what they apply to are
+completely target-specific. The code for this pass is located in
+<samp>mode-switching.cc</samp>.
+</p>
+</li><li> <a name="index-modulo-scheduling"></a>
+<a name="index-sms_002c-swing_002c-software-pipelining"></a>
+Modulo scheduling
+
+<p>This pass looks at innermost loops and reorders their instructions
+by overlapping different iterations. Modulo scheduling is performed
+immediately before instruction scheduling. The code for this pass is
+located in <samp>modulo-sched.cc</samp>.
+</p>
+</li><li> Instruction scheduling
+
+<p>This pass looks for instructions whose output will not be available by
+the time that it is used in subsequent instructions. Memory loads and
+floating point instructions often have this behavior on RISC machines.
+It re-orders instructions within a basic block to try to separate the
+definition and use of items that otherwise would cause pipeline
+stalls. This pass is performed twice, before and after register
+allocation. The code for this pass is located in <samp>haifa-sched.cc</samp>,
+<samp>sched-deps.cc</samp>, <samp>sched-ebb.cc</samp>, <samp>sched-rgn.cc</samp> and
+<samp>sched-vis.c</samp>.
+</p>
+</li><li> Register allocation
+
+<p>These passes make sure that all occurrences of pseudo registers are
+eliminated, either by allocating them to a hard register, replacing
+them by an equivalent expression (e.g. a constant) or by placing
+them on the stack. This is done in several subpasses:
+</p>
+<ul>
+<li> The integrated register allocator (<acronym>IRA</acronym>). It is called
+integrated because coalescing, register live range splitting, and hard
+register preferencing are done on-the-fly during coloring. It also
+has better integration with the reload/LRA pass. Pseudo-registers spilled
+by the allocator or the reload/LRA have still a chance to get
+hard-registers if the reload/LRA evicts some pseudo-registers from
+hard-registers. The allocator helps to choose better pseudos for
+spilling based on their live ranges and to coalesce stack slots
+allocated for the spilled pseudo-registers. IRA is a regional
+register allocator which is transformed into Chaitin-Briggs allocator
+if there is one region. By default, IRA chooses regions using
+register pressure but the user can force it to use one region or
+regions corresponding to all loops.
+
+<p>Source files of the allocator are <samp>ira.cc</samp>, <samp>ira-build.cc</samp>,
+<samp>ira-costs.cc</samp>, <samp>ira-conflicts.cc</samp>, <samp>ira-color.cc</samp>,
+<samp>ira-emit.cc</samp>, <samp>ira-lives</samp>, plus header files <samp>ira.h</samp>
+and <samp>ira-int.h</samp> used for the communication between the allocator
+and the rest of the compiler and between the IRA files.
+</p>
+</li><li> <a name="index-reloading"></a>
+Reloading. This pass renumbers pseudo registers with the hardware
+registers numbers they were allocated. Pseudo registers that did not
+get hard registers are replaced with stack slots. Then it finds
+instructions that are invalid because a value has failed to end up in
+a register, or has ended up in a register of the wrong kind. It fixes
+up these instructions by reloading the problematical values
+temporarily into registers. Additional instructions are generated to
+do the copying.
+
+<p>The reload pass also optionally eliminates the frame pointer and inserts
+instructions to save and restore call-clobbered registers around calls.
+</p>
+<p>Source files are <samp>reload.cc</samp> and <samp>reload1.cc</samp>, plus the header
+<samp>reload.h</samp> used for communication between them.
+</p>
+</li><li> <a name="index-Local-Register-Allocator-_0028LRA_0029"></a>
+This pass is a modern replacement of the reload pass. Source files
+are <samp>lra.cc</samp>, <samp>lra-assign.c</samp>, <samp>lra-coalesce.cc</samp>,
+<samp>lra-constraints.cc</samp>, <samp>lra-eliminations.cc</samp>,
+<samp>lra-lives.cc</samp>, <samp>lra-remat.cc</samp>, <samp>lra-spills.cc</samp>, the
+header <samp>lra-int.h</samp> used for communication between them, and the
+header <samp>lra.h</samp> used for communication between LRA and the rest of
+compiler.
+
+<p>Unlike the reload pass, intermediate LRA decisions are reflected in
+RTL as much as possible. This reduces the number of target-dependent
+macros and hooks, leaving instruction constraints as the primary
+source of control.
+</p>
+<p>LRA is run on targets for which TARGET_LRA_P returns true.
+</p></li></ul>
+
+</li><li> Basic block reordering
+
+<p>This pass implements profile guided code positioning. If profile
+information is not available, various types of static analysis are
+performed to make the predictions normally coming from the profile
+feedback (IE execution frequency, branch probability, etc). It is
+implemented in the file <samp>bb-reorder.cc</samp>, and the various
+prediction routines are in <samp>predict.cc</samp>.
+</p>
+</li><li> Variable tracking
+
+<p>This pass computes where the variables are stored at each
+position in code and generates notes describing the variable locations
+to RTL code. The location lists are then generated according to these
+notes to debug information if the debugging information format supports
+location lists. The code is located in <samp>var-tracking.cc</samp>.
+</p>
+</li><li> Delayed branch scheduling
+
+<p>This optional pass attempts to find instructions that can go into the
+delay slots of other instructions, usually jumps and calls. The code
+for this pass is located in <samp>reorg.cc</samp>.
+</p>
+</li><li> Branch shortening
+
+<p>On many RISC machines, branch instructions have a limited range.
+Thus, longer sequences of instructions must be used for long branches.
+In this pass, the compiler figures out what how far each instruction
+will be from each other instruction, and therefore whether the usual
+instructions, or the longer sequences, must be used for each branch.
+The code for this pass is located in <samp>final.cc</samp>.
+</p>
+</li><li> Register-to-stack conversion
+
+<p>Conversion from usage of some hard registers to usage of a register
+stack may be done at this point. Currently, this is supported only
+for the floating-point registers of the Intel 80387 coprocessor. The
+code for this pass is located in <samp>reg-stack.cc</samp>.
+</p>
+</li><li> Final
+
+<p>This pass outputs the assembler code for the function. The source files
+are <samp>final.cc</samp> plus <samp>insn-output.cc</samp>; the latter is generated
+automatically from the machine description by the tool <samp>genoutput</samp>.
+The header file <samp>conditions.h</samp> is used for communication between
+these files.
+</p>
+</li><li> Debugging information output
+
+<p>This is run after final because it must output the stack slot offsets
+for pseudo registers that did not get hard registers. Source files
+are <samp>dwarfout.c</samp> for
+DWARF symbol table format, files <samp>dwarf2out.cc</samp> and <samp>dwarf2asm.cc</samp>
+for DWARF2 symbol table format, and <samp>vmsdbgout.cc</samp> for VMS debug
+symbol table format.
+</p>
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Optimization-info.html#Optimization-info" accesskey="n" rel="next">Optimization info</a>, Previous: <a href="Tree-SSA-passes.html#Tree-SSA-passes" accesskey="p" rel="previous">Tree SSA passes</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/RTL.html b/share/doc/gccint/RTL.html
new file mode 100644
index 0000000..b286450
--- /dev/null
+++ b/share/doc/gccint/RTL.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: RTL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: RTL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: RTL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="RTL-Objects.html#RTL-Objects" rel="next" title="RTL Objects">
+<link href="Memory-model.html#Memory-model" rel="previous" title="Memory model">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="RTL"></a>
+<div class="header">
+<p>
+Next: <a href="Control-Flow.html#Control-Flow" accesskey="n" rel="next">Control Flow</a>, Previous: <a href="Tree-SSA.html#Tree-SSA" accesskey="p" rel="previous">Tree SSA</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-Representation"></a>
+<h2 class="chapter">14 RTL Representation</h2>
+<a name="index-RTL-representation"></a>
+<a name="index-representation-of-RTL"></a>
+<a name="index-Register-Transfer-Language-_0028RTL_0029"></a>
+
+<p>The last part of the compiler work is done on a low-level intermediate
+representation called Register Transfer Language. In this language, the
+instructions to be output are described, pretty much one by one, in an
+algebraic form that describes what the instruction does.
+</p>
+<p>RTL is inspired by Lisp lists. It has both an internal form, made up of
+structures that point at other structures, and a textual form that is used
+in the machine description and in printed debugging dumps. The textual
+form uses nested parentheses to indicate the pointers in the internal form.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="RTL-Objects.html#RTL-Objects" accesskey="1">RTL Objects</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions vs vectors vs strings vs integers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-Classes.html#RTL-Classes" accesskey="2">RTL Classes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Categories of RTL expression objects, and their structure.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Accessors.html#Accessors" accesskey="3">Accessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros to access expression operands or vector elts.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Special-Accessors.html#Special-Accessors" accesskey="4">Special Accessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros to access specific annotations on RTL.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Flags.html#Flags" accesskey="5">Flags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other flags in an RTL expression.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Machine-Modes.html#Machine-Modes" accesskey="6">Machine Modes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Describing the size and format of a datum.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Constants.html#Constants" accesskey="7">Constants</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions with constant values.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Regs-and-Memory.html#Regs-and-Memory" accesskey="8">Regs and Memory</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing register contents or memory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arithmetic.html#Arithmetic" accesskey="9">Arithmetic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing arithmetic on other expressions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comparisons.html#Comparisons">Comparisons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing comparison of expressions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Bit_002dFields.html#Bit_002dFields">Bit-Fields</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing bit-fields in memory or reg.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Vector-Operations.html#Vector-Operations">Vector Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions involving vector datatypes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Conversions.html#Conversions">Conversions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Extending, truncating, floating or fixing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-Declarations.html#RTL-Declarations">RTL Declarations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring volatility, constancy, etc.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Side-Effects.html#Side-Effects">Side Effects</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions for storing in registers, etc.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Incdec.html#Incdec">Incdec</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Embedded side-effects for autoincrement addressing.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assembler.html#Assembler">Assembler</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representing <code>asm</code> with operands.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Debug-Information.html#Debug-Information">Debug Information</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions representing debugging information.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Insns.html#Insns">Insns</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expression types for entire insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Calls.html#Calls">Calls</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL representation of function call insns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-SSA.html#RTL-SSA">RTL SSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An on-the-side SSA form for RTL
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sharing.html#Sharing">Sharing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some expressions are unique; others *must* be copied.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Reading-RTL.html#Reading-RTL">Reading RTL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reading textual RTL from a file.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Control-Flow.html#Control-Flow" accesskey="n" rel="next">Control Flow</a>, Previous: <a href="Tree-SSA.html#Tree-SSA" accesskey="p" rel="previous">Tree SSA</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Range-checks-on-poly_005fints.html b/share/doc/gccint/Range-checks-on-poly_005fints.html
new file mode 100644
index 0000000..f96904e
--- /dev/null
+++ b/share/doc/gccint/Range-checks-on-poly_005fints.html
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Range checks on poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Range checks on poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Range checks on poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Sorting-poly_005fints.html#Sorting-poly_005fints" rel="next" title="Sorting poly_ints">
+<link href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" rel="previous" title="Checking for a poly_int marker value">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Range-checks-on-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Sorting-poly_005fints.html#Sorting-poly_005fints" accesskey="n" rel="next">Sorting <code>poly_int</code>s</a>, Previous: <a href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" accesskey="p" rel="previous">Checking for a <code>poly_int</code> marker value</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Range-checks-on-poly_005fints-1"></a>
+<h4 class="subsection">10.3.6 Range checks on <code>poly_int</code>s</h4>
+
+<p>As well as the core comparisons
+(see <a href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint">Comparison functions for <code>poly_int</code></a>), <code>poly_int</code> provides
+utilities for various kinds of range check. In each case the range
+is represented by a start position and a size rather than a start
+position and an end position; this is because the former is used
+much more often than the latter in GCC. Also, the sizes can be
+-1 (or all ones for unsigned sizes) to indicate a range with a known
+start position but an unknown size. All other sizes must be nonnegative.
+A range of size 0 does not contain anything or overlap anything.
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>known_size_p (<var>size</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>size</var> represents a known range size, false if it
+is -1 or all ones (for signed and unsigned types respectively).
+</p>
+</dd>
+<dt>&lsquo;<samp>ranges_maybe_overlap_p (<var>pos1</var>, <var>size1</var>, <var>pos2</var>, <var>size2</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if the range described by <var>pos1</var> and <var>size1</var> <em>might</em>
+overlap the range described by <var>pos2</var> and <var>size2</var> (in other words,
+return true if we cannot prove that the ranges are disjoint).
+</p>
+</dd>
+<dt>&lsquo;<samp>ranges_known_overlap_p (<var>pos1</var>, <var>size1</var>, <var>pos2</var>, <var>size2</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if the range described by <var>pos1</var> and <var>size1</var> is known to
+overlap the range described by <var>pos2</var> and <var>size2</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>known_subrange_p (<var>pos1</var>, <var>size1</var>, <var>pos2</var>, <var>size2</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if the range described by <var>pos1</var> and <var>size1</var> is known to
+be contained in the range described by <var>pos2</var> and <var>size2</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>maybe_in_range_p (<var>value</var>, <var>pos</var>, <var>size</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>value</var> <em>might</em> be in the range described by
+<var>pos</var> and <var>size</var> (in other words, return true if we cannot
+prove that <var>value</var> is outside that range).
+</p>
+</dd>
+<dt>&lsquo;<samp>known_in_range_p (<var>value</var>, <var>pos</var>, <var>size</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if <var>value</var> is known to be in the range described
+by <var>pos</var> and <var>size</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp>endpoint_representable_p (<var>pos</var>, <var>size</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if the range described by <var>pos</var> and <var>size</var> is
+open-ended or if the endpoint (<var>pos</var> + <var>size</var>) is representable
+in the same type as <var>pos</var> and <var>size</var>. The function returns false
+if adding <var>size</var> to <var>pos</var> makes conceptual sense but could overflow.
+</p></dd>
+</dl>
+
+<p>There is also a <code>poly_int</code> version of the <code>IN_RANGE_P</code> macro:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>coeffs_in_range_p (<var>x</var>, <var>lower</var>, <var>upper</var>)</samp>&rsquo;</dt>
+<dd><p>Return true if every coefficient of <var>x</var> is in the inclusive range
+[<var>lower</var>, <var>upper</var>]. This function can be useful when testing
+whether an operation would cause the values of coefficients to
+overflow.
+</p>
+<p>Note that the function does not indicate whether <var>x</var> itself is in the
+given range. <var>x</var> can be either a constant or a <code>poly_int</code>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sorting-poly_005fints.html#Sorting-poly_005fints" accesskey="n" rel="next">Sorting <code>poly_int</code>s</a>, Previous: <a href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value" accesskey="p" rel="previous">Checking for a <code>poly_int</code> marker value</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Reading-RTL.html b/share/doc/gccint/Reading-RTL.html
new file mode 100644
index 0000000..4129841
--- /dev/null
+++ b/share/doc/gccint/Reading-RTL.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Reading RTL</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Reading RTL">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Reading RTL">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Control-Flow.html#Control-Flow" rel="next" title="Control Flow">
+<link href="Sharing.html#Sharing" rel="previous" title="Sharing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Reading-RTL"></a>
+<div class="header">
+<p>
+Previous: <a href="Sharing.html#Sharing" accesskey="p" rel="previous">Sharing</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Reading-RTL-1"></a>
+<h3 class="section">14.23 Reading RTL</h3>
+
+<p>To read an RTL object from a file, call <code>read_rtx</code>. It takes one
+argument, a stdio stream, and returns a single RTL object. This routine
+is defined in <samp>read-rtl.cc</samp>. It is not available in the compiler
+itself, only the various programs that generate the compiler back end
+from the machine description.
+</p>
+<p>People frequently have the idea of using RTL stored as text in a file as
+an interface between a language front end and the bulk of GCC. This
+idea is not feasible.
+</p>
+<p>GCC was designed to use RTL internally only. Correct RTL for a given
+program is very dependent on the particular target machine. And the RTL
+does not contain all the information about the program.
+</p>
+<p>The proper way to interface GCC to a new language front end is with
+the &ldquo;tree&rdquo; data structure, described in the files <samp>tree.h</samp> and
+<samp>tree.def</samp>. The documentation for this structure (see <a href="GENERIC.html#GENERIC">GENERIC</a>)
+is incomplete.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Register-Arguments.html b/share/doc/gccint/Register-Arguments.html
new file mode 100644
index 0000000..e2de371
--- /dev/null
+++ b/share/doc/gccint/Register-Arguments.html
@@ -0,0 +1,623 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Register Arguments</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Register Arguments">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Register Arguments">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Scalar-Return.html#Scalar-Return" rel="next" title="Scalar Return">
+<link href="Stack-Arguments.html#Stack-Arguments" rel="previous" title="Stack Arguments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Register-Arguments"></a>
+<div class="header">
+<p>
+Next: <a href="Scalar-Return.html#Scalar-Return" accesskey="n" rel="next">Scalar Return</a>, Previous: <a href="Stack-Arguments.html#Stack-Arguments" accesskey="p" rel="previous">Stack Arguments</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Passing-Arguments-in-Registers"></a>
+<h4 class="subsection">18.9.7 Passing Arguments in Registers</h4>
+<a name="index-arguments-in-registers"></a>
+<a name="index-registers-arguments"></a>
+
+<p>This section describes the macros which let you control how various
+types of arguments are passed in registers or how they are arranged in
+the stack.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG"></a>Target Hook: <em>rtx</em> <strong>TARGET_FUNCTION_ARG</strong> <em>(cumulative_args_t <var>ca</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>Return an RTX indicating whether function argument <var>arg</var> is passed
+in a register and if so, which register. Argument <var>ca</var> summarizes all
+the previous arguments.
+</p>
+<p>The return value is usually either a <code>reg</code> RTX for the hard
+register in which to pass the argument, or zero to pass the argument
+on the stack.
+</p>
+<p>The value of the expression can also be a <code>parallel</code> RTX. This is
+used when an argument is passed in multiple locations. The mode of the
+<code>parallel</code> should be the mode of the entire argument. The
+<code>parallel</code> holds any number of <code>expr_list</code> pairs; each one
+describes where part of the argument is passed. In each
+<code>expr_list</code> the first operand must be a <code>reg</code> RTX for the hard
+register in which to pass this part of the argument, and the mode of the
+register RTX indicates how large this part of the argument is. The
+second operand of the <code>expr_list</code> is a <code>const_int</code> which gives
+the offset in bytes into the entire argument of where this part starts.
+As a special exception the first <code>expr_list</code> in the <code>parallel</code>
+RTX may have a first operand of zero. This indicates that the entire
+argument is also stored on the stack.
+</p>
+<p>The last time this hook is called, it is called with <code>MODE ==
+VOIDmode</code>, and its result is passed to the <code>call</code> or <code>call_value</code>
+pattern as operands 2 and 3 respectively.
+</p>
+<a name="index-stdarg_002eh-and-register-arguments"></a>
+<p>The usual way to make the ISO library <samp>stdarg.h</samp> work on a
+machine where some arguments are usually passed in registers, is to
+cause nameless arguments to be passed on the stack instead. This is
+done by making <code>TARGET_FUNCTION_ARG</code> return 0 whenever
+<var>named</var> is <code>false</code>.
+</p>
+<a name="index-TARGET_005fMUST_005fPASS_005fIN_005fSTACK_002c-and-TARGET_005fFUNCTION_005fARG"></a>
+<a name="index-REG_005fPARM_005fSTACK_005fSPACE_002c-and-TARGET_005fFUNCTION_005fARG"></a>
+<p>You may use the hook <code>targetm.calls.must_pass_in_stack</code>
+in the definition of this macro to determine if this argument is of a
+type that must be passed in the stack. If <code>REG_PARM_STACK_SPACE</code>
+is not defined and <code>TARGET_FUNCTION_ARG</code> returns nonzero for such an
+argument, the compiler will abort. If <code>REG_PARM_STACK_SPACE</code> is
+defined, the argument will be computed in the stack and then loaded into
+a register.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMUST_005fPASS_005fIN_005fSTACK"></a>Target Hook: <em>bool</em> <strong>TARGET_MUST_PASS_IN_STACK</strong> <em>(const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>This target hook should return <code>true</code> if we should not pass <var>arg</var>
+solely in registers. The file <samp>expr.h</samp> defines a
+definition that is usually appropriate, refer to <samp>expr.h</samp> for additional
+documentation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fINCOMING_005fARG"></a>Target Hook: <em>rtx</em> <strong>TARGET_FUNCTION_INCOMING_ARG</strong> <em>(cumulative_args_t <var>ca</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>Define this hook if the caller and callee on the target have different
+views of where arguments are passed. Also define this hook if there are
+functions that are never directly called, but are invoked by the hardware
+and which have nonstandard calling conventions.
+</p>
+<p>In this case <code>TARGET_FUNCTION_ARG</code> computes the register in
+which the caller passes the value, and
+<code>TARGET_FUNCTION_INCOMING_ARG</code> should be defined in a similar
+fashion to tell the function being called where the arguments will
+arrive.
+</p>
+<p><code>TARGET_FUNCTION_INCOMING_ARG</code> can also return arbitrary address
+computation using hard register, which can be forced into a register,
+so that it can be used to pass special arguments.
+</p>
+<p>If <code>TARGET_FUNCTION_INCOMING_ARG</code> is not defined,
+<code>TARGET_FUNCTION_ARG</code> serves both purposes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUSE_005fPSEUDO_005fPIC_005fREG"></a>Target Hook: <em>bool</em> <strong>TARGET_USE_PSEUDO_PIC_REG</strong> <em>(void)</em></dt>
+<dd><p>This hook should return 1 in case pseudo register should be created
+for pic_offset_table_rtx during function expand.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINIT_005fPIC_005fREG"></a>Target Hook: <em>void</em> <strong>TARGET_INIT_PIC_REG</strong> <em>(void)</em></dt>
+<dd><p>Perform a target dependent initialization of pic_offset_table_rtx.
+This hook is called at the start of register allocation.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fARG_005fPARTIAL_005fBYTES"></a>Target Hook: <em>int</em> <strong>TARGET_ARG_PARTIAL_BYTES</strong> <em>(cumulative_args_t <var>cum</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>This target hook returns the number of bytes at the beginning of an
+argument that must be put in registers. The value must be zero for
+arguments that are passed entirely in registers or that are entirely
+pushed on the stack.
+</p>
+<p>On some machines, certain arguments must be passed partially in
+registers and partially in memory. On these machines, typically the
+first few words of arguments are passed in registers, and the rest
+on the stack. If a multi-word argument (a <code>double</code> or a
+structure) crosses that boundary, its first few words must be passed
+in registers and the rest must be pushed. This macro tells the
+compiler when this occurs, and how many bytes should go in registers.
+</p>
+<p><code>TARGET_FUNCTION_ARG</code> for these arguments should return the first
+register to be used by the caller for this argument; likewise
+<code>TARGET_FUNCTION_INCOMING_ARG</code>, for the called function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPASS_005fBY_005fREFERENCE"></a>Target Hook: <em>bool</em> <strong>TARGET_PASS_BY_REFERENCE</strong> <em>(cumulative_args_t <var>cum</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>This target hook should return <code>true</code> if argument <var>arg</var> at the
+position indicated by <var>cum</var> should be passed by reference. This
+predicate is queried after target independent reasons for being
+passed by reference, such as <code>TREE_ADDRESSABLE (<var>arg</var>.type)</code>.
+</p>
+<p>If the hook returns true, a copy of that argument is made in memory and a
+pointer to the argument is passed instead of the argument itself.
+The pointer is passed in whatever way is appropriate for passing a pointer
+to that type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCALLEE_005fCOPIES"></a>Target Hook: <em>bool</em> <strong>TARGET_CALLEE_COPIES</strong> <em>(cumulative_args_t <var>cum</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>The function argument described by the parameters to this hook is
+known to be passed by reference. The hook should return true if the
+function argument should be copied by the callee instead of copied
+by the caller.
+</p>
+<p>For any argument for which the hook returns true, if it can be
+determined that the argument is not modified, then a copy need
+not be generated.
+</p>
+<p>The default version of this hook always returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CUMULATIVE_005fARGS"></a>Macro: <strong>CUMULATIVE_ARGS</strong></dt>
+<dd><p>A C type for declaring a variable that is used as the first argument
+of <code>TARGET_FUNCTION_ARG</code> and other related values. For some
+target machines, the type <code>int</code> suffices and can hold the number
+of bytes of argument so far.
+</p>
+<p>There is no need to record in <code>CUMULATIVE_ARGS</code> anything about the
+arguments that have been passed on the stack. The compiler has other
+variables to keep track of that. For target machines on which all
+arguments are passed on the stack, there is no need to store anything in
+<code>CUMULATIVE_ARGS</code>; however, the data structure must exist and
+should not be empty, so use <code>int</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OVERRIDE_005fABI_005fFORMAT"></a>Macro: <strong>OVERRIDE_ABI_FORMAT</strong> <em>(<var>fndecl</var>)</em></dt>
+<dd><p>If defined, this macro is called before generating any code for a
+function, but after the <var>cfun</var> descriptor for the function has been
+created. The back end may use this macro to update <var>cfun</var> to
+reflect an ABI other than that which would normally be used by default.
+If the compiler is generating code for a compiler-generated function,
+<var>fndecl</var> may be <code>NULL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fCUMULATIVE_005fARGS"></a>Macro: <strong>INIT_CUMULATIVE_ARGS</strong> <em>(<var>cum</var>, <var>fntype</var>, <var>libname</var>, <var>fndecl</var>, <var>n_named_args</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) for initializing the variable
+<var>cum</var> for the state at the beginning of the argument list. The
+variable has type <code>CUMULATIVE_ARGS</code>. The value of <var>fntype</var>
+is the tree node for the data type of the function which will receive
+the args, or 0 if the args are to a compiler support library function.
+For direct calls that are not libcalls, <var>fndecl</var> contain the
+declaration node of the function. <var>fndecl</var> is also set when
+<code>INIT_CUMULATIVE_ARGS</code> is used to find arguments for the function
+being compiled. <var>n_named_args</var> is set to the number of named
+arguments, including a structure return address if it is passed as a
+parameter, when making a call. When processing incoming arguments,
+<var>n_named_args</var> is set to -1.
+</p>
+<p>When processing a call to a compiler support library function,
+<var>libname</var> identifies which one. It is a <code>symbol_ref</code> rtx which
+contains the name of the function, as a string. <var>libname</var> is 0 when
+an ordinary C function call is being processed. Thus, each time this
+macro is called, either <var>libname</var> or <var>fntype</var> is nonzero, but
+never both of them at once.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fCUMULATIVE_005fLIBCALL_005fARGS"></a>Macro: <strong>INIT_CUMULATIVE_LIBCALL_ARGS</strong> <em>(<var>cum</var>, <var>mode</var>, <var>libname</var>)</em></dt>
+<dd><p>Like <code>INIT_CUMULATIVE_ARGS</code> but only used for outgoing libcalls,
+it gets a <code>MODE</code> argument instead of <var>fntype</var>, that would be
+<code>NULL</code>. <var>indirect</var> would always be zero, too. If this macro
+is not defined, <code>INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
+0)</code> is used instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fCUMULATIVE_005fINCOMING_005fARGS"></a>Macro: <strong>INIT_CUMULATIVE_INCOMING_ARGS</strong> <em>(<var>cum</var>, <var>fntype</var>, <var>libname</var>)</em></dt>
+<dd><p>Like <code>INIT_CUMULATIVE_ARGS</code> but overrides it for the purposes of
+finding the arguments for the function being compiled. If this macro is
+undefined, <code>INIT_CUMULATIVE_ARGS</code> is used instead.
+</p>
+<p>The value passed for <var>libname</var> is always 0, since library routines
+with special calling conventions are never compiled with GCC. The
+argument <var>libname</var> exists for symmetry with
+<code>INIT_CUMULATIVE_ARGS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG_005fADVANCE"></a>Target Hook: <em>void</em> <strong>TARGET_FUNCTION_ARG_ADVANCE</strong> <em>(cumulative_args_t <var>ca</var>, const function_arg_info <var>&amp;arg</var>)</em></dt>
+<dd><p>This hook updates the summarizer variable pointed to by <var>ca</var> to
+advance past argument <var>arg</var> in the argument list. Once this is done,
+the variable <var>cum</var> is suitable for analyzing the <em>following</em>
+argument with <code>TARGET_FUNCTION_ARG</code>, etc.
+</p>
+<p>This hook need not do anything if the argument in question was passed
+on the stack. The compiler knows how to track the amount of stack space
+used for arguments without any special help.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG_005fOFFSET"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_FUNCTION_ARG_OFFSET</strong> <em>(machine_mode <var>mode</var>, const_tree <var>type</var>)</em></dt>
+<dd><p>This hook returns the number of bytes to add to the offset of an
+argument of type <var>type</var> and mode <var>mode</var> when passed in memory.
+This is needed for the SPU, which passes <code>char</code> and <code>short</code>
+arguments in the preferred slot that is in the middle of the quad word
+instead of starting at the top. The default implementation returns 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG_005fPADDING"></a>Target Hook: <em>pad_direction</em> <strong>TARGET_FUNCTION_ARG_PADDING</strong> <em>(machine_mode <var>mode</var>, const_tree <var>type</var>)</em></dt>
+<dd><p>This hook determines whether, and in which direction, to pad out
+an argument of mode <var>mode</var> and type <var>type</var>. It returns
+<code>PAD_UPWARD</code> to insert padding above the argument, <code>PAD_DOWNWARD</code>
+to insert padding below the argument, or <code>PAD_NONE</code> to inhibit padding.
+</p>
+<p>The <em>amount</em> of padding is not controlled by this hook, but by
+<code>TARGET_FUNCTION_ARG_ROUND_BOUNDARY</code>. It is always just enough
+to reach the next multiple of that boundary.
+</p>
+<p>This hook has a default definition that is right for most systems.
+For little-endian machines, the default is to pad upward. For
+big-endian machines, the default is to pad downward for an argument of
+constant size shorter than an <code>int</code>, and upward otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PAD_005fVARARGS_005fDOWN"></a>Macro: <strong>PAD_VARARGS_DOWN</strong></dt>
+<dd><p>If defined, a C expression which determines whether the default
+implementation of va_arg will attempt to pad down before reading the
+next argument, if that argument is smaller than its aligned space as
+controlled by <code>PARM_BOUNDARY</code>. If this macro is not defined, all such
+arguments are padded down if <code>BYTES_BIG_ENDIAN</code> is true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BLOCK_005fREG_005fPADDING"></a>Macro: <strong>BLOCK_REG_PADDING</strong> <em>(<var>mode</var>, <var>type</var>, <var>first</var>)</em></dt>
+<dd><p>Specify padding for the last element of a block move between registers and
+memory. <var>first</var> is nonzero if this is the only element. Defining this
+macro allows better control of register function parameters on big-endian
+machines, without using <code>PARALLEL</code> rtl. In particular,
+<code>MUST_PASS_IN_STACK</code> need not test padding and mode of types in
+registers, as there is no longer a &quot;wrong&quot; part of a register; For example,
+a three byte aggregate may be passed in the high part of a register if so
+required.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG_005fBOUNDARY"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_FUNCTION_ARG_BOUNDARY</strong> <em>(machine_mode <var>mode</var>, const_tree <var>type</var>)</em></dt>
+<dd><p>This hook returns the alignment boundary, in bits, of an argument
+with the specified mode and type. The default hook returns
+<code>PARM_BOUNDARY</code> for all arguments.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fARG_005fROUND_005fBOUNDARY"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_FUNCTION_ARG_ROUND_BOUNDARY</strong> <em>(machine_mode <var>mode</var>, const_tree <var>type</var>)</em></dt>
+<dd><p>Normally, the size of an argument is rounded up to <code>PARM_BOUNDARY</code>,
+which is the default value for this hook. You can define this hook to
+return a different value if an argument size must be rounded to a larger
+value.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FUNCTION_005fARG_005fREGNO_005fP"></a>Macro: <strong>FUNCTION_ARG_REGNO_P</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>A C expression that is nonzero if <var>regno</var> is the number of a hard
+register in which function arguments are sometimes passed. This does
+<em>not</em> include implicit arguments such as the static chain and
+the structure-value address. On many machines, no registers can be
+used for this purpose since all function arguments are pushed on the
+stack.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSPLIT_005fCOMPLEX_005fARG"></a>Target Hook: <em>bool</em> <strong>TARGET_SPLIT_COMPLEX_ARG</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>This hook should return true if parameter of type <var>type</var> are passed
+as two scalar parameters. By default, GCC will attempt to pack complex
+arguments into the target&rsquo;s word size. Some ABIs require complex arguments
+to be split and treated as their individual components. For example, on
+AIX64, complex floats should be passed in a pair of floating point
+registers, even though a complex float would fit in one 64-bit floating
+point register.
+</p>
+<p>The default value of this hook is <code>NULL</code>, which is treated as always
+false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fBUILD_005fBUILTIN_005fVA_005fLIST"></a>Target Hook: <em>tree</em> <strong>TARGET_BUILD_BUILTIN_VA_LIST</strong> <em>(void)</em></dt>
+<dd><p>This hook returns a type node for <code>va_list</code> for the target.
+The default version of the hook returns <code>void*</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fENUM_005fVA_005fLIST_005fP"></a>Target Hook: <em>int</em> <strong>TARGET_ENUM_VA_LIST_P</strong> <em>(int <var>idx</var>, const char **<var>pname</var>, tree *<var>ptree</var>)</em></dt>
+<dd><p>This target hook is used in function <code>c_common_nodes_and_builtins</code>
+to iterate through the target specific builtin types for va_list. The
+variable <var>idx</var> is used as iterator. <var>pname</var> has to be a pointer
+to a <code>const char *</code> and <var>ptree</var> a pointer to a <code>tree</code> typed
+variable.
+The arguments <var>pname</var> and <var>ptree</var> are used to store the result of
+this macro and are set to the name of the va_list builtin type and its
+internal type.
+If the return value of this macro is zero, then there is no more element.
+Otherwise the <var>IDX</var> should be increased for the next call of this
+macro to iterate through all types.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFN_005fABI_005fVA_005fLIST"></a>Target Hook: <em>tree</em> <strong>TARGET_FN_ABI_VA_LIST</strong> <em>(tree <var>fndecl</var>)</em></dt>
+<dd><p>This hook returns the va_list type of the calling convention specified by
+<var>fndecl</var>.
+The default version of this hook returns <code>va_list_type_node</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCANONICAL_005fVA_005fLIST_005fTYPE"></a>Target Hook: <em>tree</em> <strong>TARGET_CANONICAL_VA_LIST_TYPE</strong> <em>(tree <var>type</var>)</em></dt>
+<dd><p>This hook returns the va_list type of the calling convention specified by the
+type of <var>type</var>. If <var>type</var> is not a valid va_list type, it returns
+<code>NULL_TREE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGIMPLIFY_005fVA_005fARG_005fEXPR"></a>Target Hook: <em>tree</em> <strong>TARGET_GIMPLIFY_VA_ARG_EXPR</strong> <em>(tree <var>valist</var>, tree <var>type</var>, gimple_seq *<var>pre_p</var>, gimple_seq *<var>post_p</var>)</em></dt>
+<dd><p>This hook performs target-specific gimplification of
+<code>VA_ARG_EXPR</code>. The first two parameters correspond to the
+arguments to <code>va_arg</code>; the latter two are as in
+<code>gimplify.cc:gimplify_expr</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVALID_005fPOINTER_005fMODE"></a>Target Hook: <em>bool</em> <strong>TARGET_VALID_POINTER_MODE</strong> <em>(scalar_int_mode <var>mode</var>)</em></dt>
+<dd><p>Define this to return nonzero if the port can handle pointers
+with machine mode <var>mode</var>. The default version of this
+hook returns true for both <code>ptr_mode</code> and <code>Pmode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fREF_005fMAY_005fALIAS_005fERRNO"></a>Target Hook: <em>bool</em> <strong>TARGET_REF_MAY_ALIAS_ERRNO</strong> <em>(ao_ref *<var>ref</var>)</em></dt>
+<dd><p>Define this to return nonzero if the memory reference <var>ref</var>
+may alias with the system C library errno location. The default
+version of this hook assumes the system C library errno location
+is either a declaration of type int or accessed by dereferencing
+a pointer to int.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fTRANSLATE_005fMODE_005fATTRIBUTE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_TRANSLATE_MODE_ATTRIBUTE</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>Define this hook if during mode attribute processing, the port should
+translate machine_mode <var>mode</var> to another mode. For example, rs6000&rsquo;s
+<code>KFmode</code>, when it is the same as <code>TFmode</code>.
+</p>
+<p>The default version of the hook returns that mode that was passed in.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCALAR_005fMODE_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SCALAR_MODE_SUPPORTED_P</strong> <em>(scalar_mode <var>mode</var>)</em></dt>
+<dd><p>Define this to return nonzero if the port is prepared to handle
+insns involving scalar mode <var>mode</var>. For a scalar mode to be
+considered supported, all the basic arithmetic and comparisons
+must work.
+</p>
+<p>The default version of this hook returns true for any mode
+required to handle the basic C types (as defined by the port).
+Included here are the double-word arithmetic supported by the
+code in <samp>optabs.cc</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTOR_005fMODE_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_VECTOR_MODE_SUPPORTED_P</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>Define this to return nonzero if the port is prepared to handle
+insns involving vector mode <var>mode</var>. At the very least, it
+must have move patterns for this mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPATIBLE_005fVECTOR_005fTYPES_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_COMPATIBLE_VECTOR_TYPES_P</strong> <em>(const_tree <var>type1</var>, const_tree <var>type2</var>)</em></dt>
+<dd><p>Return true if there is no target-specific reason for treating
+vector types <var>type1</var> and <var>type2</var> as distinct types. The caller
+has already checked for target-independent reasons, meaning that the
+types are known to have the same mode, to have the same number of elements,
+and to have what the caller considers to be compatible element types.
+</p>
+<p>The main reason for defining this hook is to reject pairs of types
+that are handled differently by the target&rsquo;s calling convention.
+For example, when a new <var>N</var>-bit vector architecture is added
+to a target, the target may want to handle normal <var>N</var>-bit
+<code>VECTOR_TYPE</code> arguments and return values in the same way as
+before, to maintain backwards compatibility. However, it may also
+provide new, architecture-specific <code>VECTOR_TYPE</code>s that are passed
+and returned in a more efficient way. It is then important to maintain
+a distinction between the &ldquo;normal&rdquo; <code>VECTOR_TYPE</code>s and the new
+architecture-specific ones.
+</p>
+<p>The default implementation returns true, which is correct for most targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fARRAY_005fMODE"></a>Target Hook: <em>opt_machine_mode</em> <strong>TARGET_ARRAY_MODE</strong> <em>(machine_mode <var>mode</var>, unsigned HOST_WIDE_INT <var>nelems</var>)</em></dt>
+<dd><p>Return the mode that GCC should use for an array that has
+<var>nelems</var> elements, with each element having mode <var>mode</var>.
+Return no mode if the target has no special requirements. In the
+latter case, GCC looks for an integer mode of the appropriate size
+if available and uses BLKmode otherwise. Usually the search for the
+integer mode is limited to <code>MAX_FIXED_MODE_SIZE</code>, but the
+<code>TARGET_ARRAY_MODE_SUPPORTED_P</code> hook allows a larger mode to be
+used in specific cases.
+</p>
+<p>The main use of this hook is to specify that an array of vectors should
+also have a vector mode. The default implementation returns no mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fARRAY_005fMODE_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_ARRAY_MODE_SUPPORTED_P</strong> <em>(machine_mode <var>mode</var>, unsigned HOST_WIDE_INT <var>nelems</var>)</em></dt>
+<dd><p>Return true if GCC should try to use a scalar mode to store an array
+of <var>nelems</var> elements, given that each element has mode <var>mode</var>.
+Returning true here overrides the usual <code>MAX_FIXED_MODE</code> limit
+and allows GCC to use any defined integer mode.
+</p>
+<p>One use of this hook is to support vector load and store operations
+that operate on several homogeneous vectors. For example, ARM NEON
+has operations like:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int8x8x3_t vld3_s8 (const int8_t *)
+</pre></div>
+
+<p>where the return type is defined as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">typedef struct int8x8x3_t
+{
+ int8x8_t val[3];
+} int8x8x3_t;
+</pre></div>
+
+<p>If this hook allows <code>val</code> to have a scalar mode, then
+<code>int8x8x3_t</code> can have the same mode. GCC can then store
+<code>int8x8x3_t</code>s in registers rather than forcing them onto the stack.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBGCC_005fFLOATING_005fMODE_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P</strong> <em>(scalar_float_mode <var>mode</var>)</em></dt>
+<dd><p>Define this to return nonzero if libgcc provides support for the
+floating-point mode <var>mode</var>, which is known to pass
+<code>TARGET_SCALAR_MODE_SUPPORTED_P</code>. The default version of this
+hook returns true for all of <code>SFmode</code>, <code>DFmode</code>,
+<code>XFmode</code> and <code>TFmode</code>, if such modes exist.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFLOATN_005fMODE"></a>Target Hook: <em>opt_scalar_float_mode</em> <strong>TARGET_FLOATN_MODE</strong> <em>(int <var>n</var>, bool <var>extended</var>)</em></dt>
+<dd><p>Define this to return the machine mode to use for the type
+<code>_Float<var>n</var></code>, if <var>extended</var> is false, or the type
+<code>_Float<var>n</var>x</code>, if <var>extended</var> is true. If such a type is not
+supported, return <code>opt_scalar_float_mode ()</code>. The default version of
+this hook returns <code>SFmode</code> for <code>_Float32</code>, <code>DFmode</code> for
+<code>_Float64</code> and <code>_Float32x</code> and <code>TFmode</code> for
+<code>_Float128</code>, if those modes exist and satisfy the requirements for
+those types and pass <code>TARGET_SCALAR_MODE_SUPPORTED_P</code> and
+<code>TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P</code>; for <code>_Float64x</code>, it
+returns the first of <code>XFmode</code> and <code>TFmode</code> that exists and
+satisfies the same requirements; for other types, it returns
+<code>opt_scalar_float_mode ()</code>. The hook is only called for values
+of <var>n</var> and <var>extended</var> that are valid according to
+ISO/IEC TS 18661-3:2015; that is, <var>n</var> is one of 32, 64, 128, or,
+if <var>extended</var> is false, 16 or greater than 128 and a multiple of 32.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFLOATN_005fBUILTIN_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_FLOATN_BUILTIN_P</strong> <em>(int <var>func</var>)</em></dt>
+<dd><p>Define this to return true if the <code>_Float<var>n</var></code> and
+<code>_Float<var>n</var>x</code> built-in functions should implicitly enable the
+built-in function without the <code>__builtin_</code> prefix in addition to the
+normal built-in function with the <code>__builtin_</code> prefix. The default is
+to only enable built-in functions without the <code>__builtin_</code> prefix for
+the GNU C langauge. In strict ANSI/ISO mode, the built-in function without
+the <code>__builtin_</code> prefix is not enabled. The argument <code>FUNC</code> is the
+<code>enum built_in_function</code> id of the function to be enabled.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSMALL_005fREGISTER_005fCLASSES_005fFOR_005fMODE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>Define this to return nonzero for machine modes for which the port has
+small register classes. If this target hook returns nonzero for a given
+<var>mode</var>, the compiler will try to minimize the lifetime of registers
+in <var>mode</var>. The hook may be called with <code>VOIDmode</code> as argument.
+In this case, the hook is expected to return nonzero if it returns nonzero
+for any mode.
+</p>
+<p>On some machines, it is risky to let hard registers live across arbitrary
+insns. Typically, these machines have instructions that require values
+to be in specific registers (like an accumulator), and reload will fail
+if the required hard register is used for another purpose across such an
+insn.
+</p>
+<p>Passes before reload do not know which hard registers will be used
+in an instruction, but the machine modes of the registers set or used in
+the instruction are already known. And for some machines, register
+classes are small for, say, integer registers but not for floating point
+registers. For example, the AMD x86-64 architecture requires specific
+registers for the legacy x86 integer instructions, but there are many
+SSE registers for floating point operations. On such targets, a good
+strategy may be to return nonzero from this hook for <code>INTEGRAL_MODE_P</code>
+machine modes but zero for the SSE register classes.
+</p>
+<p>The default version of this hook returns false for any mode. It is always
+safe to redefine this hook to return with a nonzero value. But if you
+unnecessarily define it, you will reduce the amount of optimizations
+that can be performed in some cases. If you do not define this hook
+to return a nonzero value when it is required, the compiler will run out
+of spill registers and print a fatal error message.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Scalar-Return.html#Scalar-Return" accesskey="n" rel="next">Scalar Return</a>, Previous: <a href="Stack-Arguments.html#Stack-Arguments" accesskey="p" rel="previous">Stack Arguments</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Register-Basics.html b/share/doc/gccint/Register-Basics.html
new file mode 100644
index 0000000..f280e92
--- /dev/null
+++ b/share/doc/gccint/Register-Basics.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Register Basics</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Register Basics">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Register Basics">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html#Registers" rel="up" title="Registers">
+<link href="Allocation-Order.html#Allocation-Order" rel="next" title="Allocation Order">
+<link href="Registers.html#Registers" rel="previous" title="Registers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Register-Basics"></a>
+<div class="header">
+<p>
+Next: <a href="Allocation-Order.html#Allocation-Order" accesskey="n" rel="next">Allocation Order</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Basic-Characteristics-of-Registers"></a>
+<h4 class="subsection">18.7.1 Basic Characteristics of Registers</h4>
+
+<p>Registers have various characteristics.
+</p>
+<dl>
+<dt><a name="index-FIRST_005fPSEUDO_005fREGISTER"></a>Macro: <strong>FIRST_PSEUDO_REGISTER</strong></dt>
+<dd><p>Number of hardware registers known to the compiler. They receive
+numbers 0 through <code>FIRST_PSEUDO_REGISTER-1</code>; thus, the first
+pseudo register&rsquo;s number really is assigned the number
+<code>FIRST_PSEUDO_REGISTER</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FIXED_005fREGISTERS"></a>Macro: <strong>FIXED_REGISTERS</strong></dt>
+<dd><a name="index-fixed-register"></a>
+<p>An initializer that says which registers are used for fixed purposes
+all throughout the compiled code and are therefore not available for
+general allocation. These would include the stack pointer, the frame
+pointer (except on machines where that can be used as a general
+register when no frame pointer is needed), the program counter on
+machines where that is considered one of the addressable registers,
+and any other numbered register with a standard use.
+</p>
+<p>This information is expressed as a sequence of numbers, separated by
+commas and surrounded by braces. The <var>n</var>th number is 1 if
+register <var>n</var> is fixed, 0 otherwise.
+</p>
+<p>The table initialized from this macro, and the table initialized by
+the following one, may be overridden at run time either automatically,
+by the actions of the macro <code>CONDITIONAL_REGISTER_USAGE</code>, or by
+the user with the command options <samp>-ffixed-<var>reg</var></samp>,
+<samp>-fcall-used-<var>reg</var></samp> and <samp>-fcall-saved-<var>reg</var></samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CALL_005fUSED_005fREGISTERS"></a>Macro: <strong>CALL_USED_REGISTERS</strong></dt>
+<dd><a name="index-call_002dused-register"></a>
+<a name="index-call_002dclobbered-register"></a>
+<a name="index-call_002dsaved-register"></a>
+<p>Like <code>FIXED_REGISTERS</code> but has 1 for each register that is
+clobbered (in general) by function calls as well as for fixed
+registers. This macro therefore identifies the registers that are not
+available for general allocation of values that must live across
+function calls.
+</p>
+<p>If a register has 0 in <code>CALL_USED_REGISTERS</code>, the compiler
+automatically saves it on function entry and restores it on function
+exit, if the register is used within the function.
+</p>
+<p>Exactly one of <code>CALL_USED_REGISTERS</code> and <code>CALL_REALLY_USED_REGISTERS</code>
+must be defined. Modern ports should define <code>CALL_REALLY_USED_REGISTERS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CALL_005fREALLY_005fUSED_005fREGISTERS"></a>Macro: <strong>CALL_REALLY_USED_REGISTERS</strong></dt>
+<dd><a name="index-call_002dused-register-1"></a>
+<a name="index-call_002dclobbered-register-1"></a>
+<a name="index-call_002dsaved-register-1"></a>
+<p>Like <code>CALL_USED_REGISTERS</code> except this macro doesn&rsquo;t require
+that the entire set of <code>FIXED_REGISTERS</code> be included.
+(<code>CALL_USED_REGISTERS</code> must be a superset of <code>FIXED_REGISTERS</code>).
+</p>
+<p>Exactly one of <code>CALL_USED_REGISTERS</code> and <code>CALL_REALLY_USED_REGISTERS</code>
+must be defined. Modern ports should define <code>CALL_REALLY_USED_REGISTERS</code>.
+</p></dd></dl>
+
+<a name="index-call_002dused-register-2"></a>
+<a name="index-call_002dclobbered-register-2"></a>
+<a name="index-call_002dsaved-register-2"></a>
+<dl>
+<dt><a name="index-TARGET_005fFNTYPE_005fABI"></a>Target Hook: <em>const predefined_function_abi &amp;</em> <strong>TARGET_FNTYPE_ABI</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>Return the ABI used by a function with type <var>type</var>; see the
+definition of <code>predefined_function_abi</code> for details of the ABI
+descriptor. Targets only need to define this hook if they support
+interoperability between several ABIs in the same translation unit.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINSN_005fCALLEE_005fABI"></a>Target Hook: <em>const predefined_function_abi &amp;</em> <strong>TARGET_INSN_CALLEE_ABI</strong> <em>(const rtx_insn *<var>insn</var>)</em></dt>
+<dd><p>This hook returns a description of the ABI used by the target of
+call instruction <var>insn</var>; see the definition of
+<code>predefined_function_abi</code> for details of the ABI descriptor.
+Only the global function <code>insn_callee_abi</code> should call this hook
+directly.
+</p>
+<p>Targets only need to define this hook if they support
+interoperability between several ABIs in the same translation unit.
+</p></dd></dl>
+
+<a name="index-call_002dused-register-3"></a>
+<a name="index-call_002dclobbered-register-3"></a>
+<a name="index-call_002dsaved-register-3"></a>
+<dl>
+<dt><a name="index-TARGET_005fHARD_005fREGNO_005fCALL_005fPART_005fCLOBBERED"></a>Target Hook: <em>bool</em> <strong>TARGET_HARD_REGNO_CALL_PART_CLOBBERED</strong> <em>(unsigned int <var>abi_id</var>, unsigned int <var>regno</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>ABIs usually specify that calls must preserve the full contents
+of a particular register, or that calls can alter any part of a
+particular register. This information is captured by the target macro
+<code>CALL_REALLY_USED_REGISTERS</code>. However, some ABIs specify that calls
+must preserve certain bits of a particular register but can alter others.
+This hook should return true if this applies to at least one of the
+registers in &lsquo;<samp>(reg:<var>mode</var> <var>regno</var>)</samp>&rsquo;, and if as a result the
+call would alter part of the <var>mode</var> value. For example, if a call
+preserves the low 32 bits of a 64-bit hard register <var>regno</var> but can
+clobber the upper 32 bits, this hook should return true for a 64-bit mode
+but false for a 32-bit mode.
+</p>
+<p>The value of <var>abi_id</var> comes from the <code>predefined_function_abi</code>
+structure that describes the ABI of the call; see the definition of the
+structure for more details. If (as is usual) the target uses the same ABI
+for all functions in a translation unit, <var>abi_id</var> is always 0.
+</p>
+<p>The default implementation returns false, which is correct
+for targets that don&rsquo;t have partly call-clobbered registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fMULTILIB_005fABI_005fNAME"></a>Target Hook: <em>const char *</em> <strong>TARGET_GET_MULTILIB_ABI_NAME</strong> <em>(void)</em></dt>
+<dd><p>This hook returns name of multilib ABI name.
+</p></dd></dl>
+
+<a name="index-fixed_005fregs"></a>
+<a name="index-call_005fused_005fregs"></a>
+<a name="index-global_005fregs"></a>
+<a name="index-reg_005fnames"></a>
+<a name="index-reg_005fclass_005fcontents"></a>
+<dl>
+<dt><a name="index-TARGET_005fCONDITIONAL_005fREGISTER_005fUSAGE"></a>Target Hook: <em>void</em> <strong>TARGET_CONDITIONAL_REGISTER_USAGE</strong> <em>(void)</em></dt>
+<dd><p>This hook may conditionally modify five variables
+<code>fixed_regs</code>, <code>call_used_regs</code>, <code>global_regs</code>,
+<code>reg_names</code>, and <code>reg_class_contents</code>, to take into account
+any dependence of these register sets on target flags. The first three
+of these are of type <code>char []</code> (interpreted as boolean vectors).
+<code>global_regs</code> is a <code>const char *[]</code>, and
+<code>reg_class_contents</code> is a <code>HARD_REG_SET</code>. Before the macro is
+called, <code>fixed_regs</code>, <code>call_used_regs</code>,
+<code>reg_class_contents</code>, and <code>reg_names</code> have been initialized
+from <code>FIXED_REGISTERS</code>, <code>CALL_USED_REGISTERS</code>,
+<code>REG_CLASS_CONTENTS</code>, and <code>REGISTER_NAMES</code>, respectively.
+<code>global_regs</code> has been cleared, and any <samp>-ffixed-<var>reg</var></samp>,
+<samp>-fcall-used-<var>reg</var></samp> and <samp>-fcall-saved-<var>reg</var></samp>
+command options have been applied.
+</p>
+<a name="index-disabling-certain-registers"></a>
+<a name="index-controlling-register-usage"></a>
+<p>If the usage of an entire class of registers depends on the target
+flags, you may indicate this to GCC by using this macro to modify
+<code>fixed_regs</code> and <code>call_used_regs</code> to 1 for each of the
+registers in the classes which should not be used by GCC. Also make
+<code>define_register_constraint</code>s return <code>NO_REGS</code> for constraints
+that shouldn&rsquo;t be used.
+</p>
+<p>(However, if this class is not included in <code>GENERAL_REGS</code> and all
+of the insn patterns whose constraints permit this class are
+controlled by target switches, then GCC will automatically avoid using
+these registers when the target switches are opposed to them.)
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCOMING_005fREGNO"></a>Macro: <strong>INCOMING_REGNO</strong> <em>(<var>out</var>)</em></dt>
+<dd><p>Define this macro if the target machine has register windows. This C
+expression returns the register number as seen by the called function
+corresponding to the register number <var>out</var> as seen by the calling
+function. Return <var>out</var> if register number <var>out</var> is not an
+outbound register.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OUTGOING_005fREGNO"></a>Macro: <strong>OUTGOING_REGNO</strong> <em>(<var>in</var>)</em></dt>
+<dd><p>Define this macro if the target machine has register windows. This C
+expression returns the register number as seen by the calling function
+corresponding to the register number <var>in</var> as seen by the called
+function. Return <var>in</var> if register number <var>in</var> is not an inbound
+register.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOCAL_005fREGNO"></a>Macro: <strong>LOCAL_REGNO</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>Define this macro if the target machine has register windows. This C
+expression returns true if the register is call-saved but is in the
+register window. Unlike most call-saved registers, such registers
+need not be explicitly restored on function exit or during non-local
+gotos.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PC_005fREGNUM"></a>Macro: <strong>PC_REGNUM</strong></dt>
+<dd><p>If the program counter has a register number, define this as that
+register number. Otherwise, do not define it.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Allocation-Order.html#Allocation-Order" accesskey="n" rel="next">Allocation Order</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Register-Classes.html b/share/doc/gccint/Register-Classes.html
new file mode 100644
index 0000000..4263f7a
--- /dev/null
+++ b/share/doc/gccint/Register-Classes.html
@@ -0,0 +1,820 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Register Classes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Register Classes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Register Classes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="next" title="Stack and Calling">
+<link href="Stack-Registers.html#Stack-Registers" rel="previous" title="Stack Registers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Register-Classes"></a>
+<div class="header">
+<p>
+Next: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="n" rel="next">Stack and Calling</a>, Previous: <a href="Registers.html#Registers" accesskey="p" rel="previous">Registers</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Register-Classes-1"></a>
+<h3 class="section">18.8 Register Classes</h3>
+<a name="index-register-class-definitions"></a>
+<a name="index-class-definitions_002c-register"></a>
+
+<p>On many machines, the numbered registers are not all equivalent.
+For example, certain registers may not be allowed for indexed addressing;
+certain registers may not be allowed in some instructions. These machine
+restrictions are described to the compiler using <em>register classes</em>.
+</p>
+<p>You define a number of register classes, giving each one a name and saying
+which of the registers belong to it. Then you can specify register classes
+that are allowed as operands to particular instruction patterns.
+</p>
+<a name="index-ALL_005fREGS"></a>
+<a name="index-NO_005fREGS"></a>
+<p>In general, each register will belong to several classes. In fact, one
+class must be named <code>ALL_REGS</code> and contain all the registers. Another
+class must be named <code>NO_REGS</code> and contain no registers. Often the
+union of two classes will be another class; however, this is not required.
+</p>
+<a name="index-GENERAL_005fREGS"></a>
+<p>One of the classes must be named <code>GENERAL_REGS</code>. There is nothing
+terribly special about the name, but the operand constraint letters
+&lsquo;<samp>r</samp>&rsquo; and &lsquo;<samp>g</samp>&rsquo; specify this class. If <code>GENERAL_REGS</code> is
+the same as <code>ALL_REGS</code>, just define it as a macro which expands
+to <code>ALL_REGS</code>.
+</p>
+<p>Order the classes so that if class <var>x</var> is contained in class <var>y</var>
+then <var>x</var> has a lower class number than <var>y</var>.
+</p>
+<p>The way classes other than <code>GENERAL_REGS</code> are specified in operand
+constraints is through machine-dependent operand constraint letters.
+You can define such letters to correspond to various classes, then use
+them in operand constraints.
+</p>
+<p>You must define the narrowest register classes for allocatable
+registers, so that each class either has no subclasses, or that for
+some mode, the move cost between registers within the class is
+cheaper than moving a register in the class to or from memory
+(see <a href="Costs.html#Costs">Costs</a>).
+</p>
+<p>You should define a class for the union of two classes whenever some
+instruction allows both classes. For example, if an instruction allows
+either a floating point (coprocessor) register or a general register for a
+certain operand, you should define a class <code>FLOAT_OR_GENERAL_REGS</code>
+which includes both of them. Otherwise you will get suboptimal code,
+or even internal compiler errors when reload cannot find a register in the
+class computed via <code>reg_class_subunion</code>.
+</p>
+<p>You must also specify certain redundant information about the register
+classes: for each class, which classes contain it and which ones are
+contained in it; for each pair of classes, the largest class contained
+in their union.
+</p>
+<p>When a value occupying several consecutive registers is expected in a
+certain class, all the registers used must belong to that class.
+Therefore, register classes cannot be used to enforce a requirement for
+a register pair to start with an even-numbered register. The way to
+specify this requirement is with <code>TARGET_HARD_REGNO_MODE_OK</code>.
+</p>
+<p>Register classes used for input-operands of bitwise-and or shift
+instructions have a special requirement: each such class must have, for
+each fixed-point machine mode, a subclass whose registers can transfer that
+mode to or from memory. For example, on some machines, the operations for
+single-byte values (<code>QImode</code>) are limited to certain registers. When
+this is so, each register class that is used in a bitwise-and or shift
+instruction must have a subclass consisting of registers from which
+single-byte values can be loaded or stored. This is so that
+<code>PREFERRED_RELOAD_CLASS</code> can always have a possible value to return.
+</p>
+<dl>
+<dt><a name="index-enum-reg_005fclass"></a>Data type: <strong>enum reg_class</strong></dt>
+<dd><p>An enumerated type that must be defined with all the register class names
+as enumerated values. <code>NO_REGS</code> must be first. <code>ALL_REGS</code>
+must be the last register class, followed by one more enumerated value,
+<code>LIM_REG_CLASSES</code>, which is not a register class but rather
+tells how many classes there are.
+</p>
+<p>Each register class has a number, which is the value of casting
+the class name to type <code>int</code>. The number serves as an index
+in many of the tables described below.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-N_005fREG_005fCLASSES"></a>Macro: <strong>N_REG_CLASSES</strong></dt>
+<dd><p>The number of distinct register classes, defined as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define N_REG_CLASSES (int) LIM_REG_CLASSES
+</pre></div>
+</dd></dl>
+
+<dl>
+<dt><a name="index-REG_005fCLASS_005fNAMES"></a>Macro: <strong>REG_CLASS_NAMES</strong></dt>
+<dd><p>An initializer containing the names of the register classes as C string
+constants. These names are used in writing some of the debugging dumps.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REG_005fCLASS_005fCONTENTS"></a>Macro: <strong>REG_CLASS_CONTENTS</strong></dt>
+<dd><p>An initializer containing the contents of the register classes, as integers
+which are bit masks. The <var>n</var>th integer specifies the contents of class
+<var>n</var>. The way the integer <var>mask</var> is interpreted is that
+register <var>r</var> is in the class if <code><var>mask</var> &amp; (1 &lt;&lt; <var>r</var>)</code> is 1.
+</p>
+<p>When the machine has more than 32 registers, an integer does not suffice.
+Then the integers are replaced by sub-initializers, braced groupings containing
+several integers. Each sub-initializer must be suitable as an initializer
+for the type <code>HARD_REG_SET</code> which is defined in <samp>hard-reg-set.h</samp>.
+In this situation, the first integer in each sub-initializer corresponds to
+registers 0 through 31, the second integer to registers 32 through 63, and
+so on.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fREG_005fCLASS"></a>Macro: <strong>REGNO_REG_CLASS</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>A C expression whose value is a register class containing hard register
+<var>regno</var>. In general there is more than one such class; choose a class
+which is <em>minimal</em>, meaning that no smaller class also contains the
+register.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BASE_005fREG_005fCLASS"></a>Macro: <strong>BASE_REG_CLASS</strong></dt>
+<dd><p>A macro whose definition is the name of the class to which a valid
+base register must belong. A base register is one used in an address
+which is the register value plus a displacement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MODE_005fBASE_005fREG_005fCLASS"></a>Macro: <strong>MODE_BASE_REG_CLASS</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>This is a variation of the <code>BASE_REG_CLASS</code> macro which allows
+the selection of a base register in a mode dependent manner. If
+<var>mode</var> is VOIDmode then it should return the same value as
+<code>BASE_REG_CLASS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MODE_005fBASE_005fREG_005fREG_005fCLASS"></a>Macro: <strong>MODE_BASE_REG_REG_CLASS</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression whose value is the register class to which a valid
+base register must belong in order to be used in a base plus index
+register address. You should define this macro if base plus index
+addresses have different requirements than other base register uses.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MODE_005fCODE_005fBASE_005fREG_005fCLASS"></a>Macro: <strong>MODE_CODE_BASE_REG_CLASS</strong> <em>(<var>mode</var>, <var>address_space</var>, <var>outer_code</var>, <var>index_code</var>)</em></dt>
+<dd><p>A C expression whose value is the register class to which a valid
+base register for a memory reference in mode <var>mode</var> to address
+space <var>address_space</var> must belong. <var>outer_code</var> and <var>index_code</var>
+define the context in which the base register occurs. <var>outer_code</var> is
+the code of the immediately enclosing expression (<code>MEM</code> for the top level
+of an address, <code>ADDRESS</code> for something that occurs in an
+<code>address_operand</code>). <var>index_code</var> is the code of the corresponding
+index expression if <var>outer_code</var> is <code>PLUS</code>; <code>SCRATCH</code> otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INDEX_005fREG_005fCLASS"></a>Macro: <strong>INDEX_REG_CLASS</strong></dt>
+<dd><p>A macro whose definition is the name of the class to which a valid
+index register must belong. An index register is one used in an
+address where its value is either multiplied by a scale factor or
+added to another register (as well as added to a displacement).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fOK_005fFOR_005fBASE_005fP"></a>Macro: <strong>REGNO_OK_FOR_BASE_P</strong> <em>(<var>num</var>)</em></dt>
+<dd><p>A C expression which is nonzero if register number <var>num</var> is
+suitable for use as a base register in operand addresses.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fMODE_005fOK_005fFOR_005fBASE_005fP"></a>Macro: <strong>REGNO_MODE_OK_FOR_BASE_P</strong> <em>(<var>num</var>, <var>mode</var>)</em></dt>
+<dd><p>A C expression that is just like <code>REGNO_OK_FOR_BASE_P</code>, except that
+that expression may examine the mode of the memory reference in
+<var>mode</var>. You should define this macro if the mode of the memory
+reference affects whether a register may be used as a base register. If
+you define this macro, the compiler will use it instead of
+<code>REGNO_OK_FOR_BASE_P</code>. The mode may be <code>VOIDmode</code> for
+addresses that appear outside a <code>MEM</code>, i.e., as an
+<code>address_operand</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fMODE_005fOK_005fFOR_005fREG_005fBASE_005fP"></a>Macro: <strong>REGNO_MODE_OK_FOR_REG_BASE_P</strong> <em>(<var>num</var>, <var>mode</var>)</em></dt>
+<dd><p>A C expression which is nonzero if register number <var>num</var> is suitable for
+use as a base register in base plus index operand addresses, accessing
+memory in mode <var>mode</var>. It may be either a suitable hard register or a
+pseudo register that has been allocated such a hard register. You should
+define this macro if base plus index addresses have different requirements
+than other base register uses.
+</p>
+<p>Use of this macro is deprecated; please use the more general
+<code>REGNO_MODE_CODE_OK_FOR_BASE_P</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fMODE_005fCODE_005fOK_005fFOR_005fBASE_005fP"></a>Macro: <strong>REGNO_MODE_CODE_OK_FOR_BASE_P</strong> <em>(<var>num</var>, <var>mode</var>, <var>address_space</var>, <var>outer_code</var>, <var>index_code</var>)</em></dt>
+<dd><p>A C expression which is nonzero if register number <var>num</var> is
+suitable for use as a base register in operand addresses, accessing
+memory in mode <var>mode</var> in address space <var>address_space</var>.
+This is similar to <code>REGNO_MODE_OK_FOR_BASE_P</code>, except
+that that expression may examine the context in which the register
+appears in the memory reference. <var>outer_code</var> is the code of the
+immediately enclosing expression (<code>MEM</code> if at the top level of the
+address, <code>ADDRESS</code> for something that occurs in an
+<code>address_operand</code>). <var>index_code</var> is the code of the
+corresponding index expression if <var>outer_code</var> is <code>PLUS</code>;
+<code>SCRATCH</code> otherwise. The mode may be <code>VOIDmode</code> for addresses
+that appear outside a <code>MEM</code>, i.e., as an <code>address_operand</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGNO_005fOK_005fFOR_005fINDEX_005fP"></a>Macro: <strong>REGNO_OK_FOR_INDEX_P</strong> <em>(<var>num</var>)</em></dt>
+<dd><p>A C expression which is nonzero if register number <var>num</var> is
+suitable for use as an index register in operand addresses. It may be
+either a suitable hard register or a pseudo register that has been
+allocated such a hard register.
+</p>
+<p>The difference between an index register and a base register is that
+the index register may be scaled. If an address involves the sum of
+two registers, neither one of them scaled, then either one may be
+labeled the &ldquo;base&rdquo; and the other the &ldquo;index&rdquo;; but whichever
+labeling is used must fit the machine&rsquo;s constraints of which registers
+may serve in each capacity. The compiler will try both labelings,
+looking for one that is valid, and will reload one or both registers
+only if neither labeling works.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREFERRED_005fRENAME_005fCLASS"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_PREFERRED_RENAME_CLASS</strong> <em>(reg_class_t <var>rclass</var>)</em></dt>
+<dd><p>A target hook that places additional preference on the register
+class to use when it is necessary to rename a register in class
+<var>rclass</var> to another class, or perhaps <var>NO_REGS</var>, if no
+preferred register class is found or hook <code>preferred_rename_class</code>
+is not implemented.
+Sometimes returning a more restrictive class makes better code. For
+example, on ARM, thumb-2 instructions using <code>LO_REGS</code> may be
+smaller than instructions using <code>GENERIC_REGS</code>. By returning
+<code>LO_REGS</code> from <code>preferred_rename_class</code>, code size can
+be reduced.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREFERRED_005fRELOAD_005fCLASS"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_PREFERRED_RELOAD_CLASS</strong> <em>(rtx <var>x</var>, reg_class_t <var>rclass</var>)</em></dt>
+<dd><p>A target hook that places additional restrictions on the register class
+to use when it is necessary to copy value <var>x</var> into a register in class
+<var>rclass</var>. The value is a register class; perhaps <var>rclass</var>, or perhaps
+another, smaller class.
+</p>
+<p>The default version of this hook always returns value of <code>rclass</code> argument.
+</p>
+<p>Sometimes returning a more restrictive class makes better code. For
+example, on the 68000, when <var>x</var> is an integer constant that is in range
+for a &lsquo;<samp>moveq</samp>&rsquo; instruction, the value of this macro is always
+<code>DATA_REGS</code> as long as <var>rclass</var> includes the data registers.
+Requiring a data register guarantees that a &lsquo;<samp>moveq</samp>&rsquo; will be used.
+</p>
+<p>One case where <code>TARGET_PREFERRED_RELOAD_CLASS</code> must not return
+<var>rclass</var> is if <var>x</var> is a legitimate constant which cannot be
+loaded into some register class. By returning <code>NO_REGS</code> you can
+force <var>x</var> into a memory location. For example, rs6000 can load
+immediate values into general-purpose registers, but does not have an
+instruction for loading an immediate value into a floating-point
+register, so <code>TARGET_PREFERRED_RELOAD_CLASS</code> returns <code>NO_REGS</code> when
+<var>x</var> is a floating-point constant. If the constant can&rsquo;t be loaded
+into any kind of register, code generation will be better if
+<code>TARGET_LEGITIMATE_CONSTANT_P</code> makes the constant illegitimate instead
+of using <code>TARGET_PREFERRED_RELOAD_CLASS</code>.
+</p>
+<p>If an insn has pseudos in it after register allocation, reload will go
+through the alternatives and call repeatedly <code>TARGET_PREFERRED_RELOAD_CLASS</code>
+to find the best one. Returning <code>NO_REGS</code>, in this case, makes
+reload add a <code>!</code> in front of the constraint: the x86 back-end uses
+this feature to discourage usage of 387 registers when math is done in
+the SSE registers (and vice versa).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PREFERRED_005fRELOAD_005fCLASS"></a>Macro: <strong>PREFERRED_RELOAD_CLASS</strong> <em>(<var>x</var>, <var>class</var>)</em></dt>
+<dd><p>A C expression that places additional restrictions on the register class
+to use when it is necessary to copy value <var>x</var> into a register in class
+<var>class</var>. The value is a register class; perhaps <var>class</var>, or perhaps
+another, smaller class. On many machines, the following definition is
+safe:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
+</pre></div>
+
+<p>Sometimes returning a more restrictive class makes better code. For
+example, on the 68000, when <var>x</var> is an integer constant that is in range
+for a &lsquo;<samp>moveq</samp>&rsquo; instruction, the value of this macro is always
+<code>DATA_REGS</code> as long as <var>class</var> includes the data registers.
+Requiring a data register guarantees that a &lsquo;<samp>moveq</samp>&rsquo; will be used.
+</p>
+<p>One case where <code>PREFERRED_RELOAD_CLASS</code> must not return
+<var>class</var> is if <var>x</var> is a legitimate constant which cannot be
+loaded into some register class. By returning <code>NO_REGS</code> you can
+force <var>x</var> into a memory location. For example, rs6000 can load
+immediate values into general-purpose registers, but does not have an
+instruction for loading an immediate value into a floating-point
+register, so <code>PREFERRED_RELOAD_CLASS</code> returns <code>NO_REGS</code> when
+<var>x</var> is a floating-point constant. If the constant cannot be loaded
+into any kind of register, code generation will be better if
+<code>TARGET_LEGITIMATE_CONSTANT_P</code> makes the constant illegitimate instead
+of using <code>TARGET_PREFERRED_RELOAD_CLASS</code>.
+</p>
+<p>If an insn has pseudos in it after register allocation, reload will go
+through the alternatives and call repeatedly <code>PREFERRED_RELOAD_CLASS</code>
+to find the best one. Returning <code>NO_REGS</code>, in this case, makes
+reload add a <code>!</code> in front of the constraint: the x86 back-end uses
+this feature to discourage usage of 387 registers when math is done in
+the SSE registers (and vice versa).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPREFERRED_005fOUTPUT_005fRELOAD_005fCLASS"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_PREFERRED_OUTPUT_RELOAD_CLASS</strong> <em>(rtx <var>x</var>, reg_class_t <var>rclass</var>)</em></dt>
+<dd><p>Like <code>TARGET_PREFERRED_RELOAD_CLASS</code>, but for output reloads instead of
+input reloads.
+</p>
+<p>The default version of this hook always returns value of <code>rclass</code>
+argument.
+</p>
+<p>You can also use <code>TARGET_PREFERRED_OUTPUT_RELOAD_CLASS</code> to discourage
+reload from using some alternatives, like <code>TARGET_PREFERRED_RELOAD_CLASS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIMIT_005fRELOAD_005fCLASS"></a>Macro: <strong>LIMIT_RELOAD_CLASS</strong> <em>(<var>mode</var>, <var>class</var>)</em></dt>
+<dd><p>A C expression that places additional restrictions on the register class
+to use when it is necessary to be able to hold a value of mode
+<var>mode</var> in a reload register for which class <var>class</var> would
+ordinarily be used.
+</p>
+<p>Unlike <code>PREFERRED_RELOAD_CLASS</code>, this macro should be used when
+there are certain modes that simply cannot go in certain reload classes.
+</p>
+<p>The value is a register class; perhaps <var>class</var>, or perhaps another,
+smaller class.
+</p>
+<p>Don&rsquo;t define this macro unless the target machine has limitations which
+require the macro to do something nontrivial.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSECONDARY_005fRELOAD"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_SECONDARY_RELOAD</strong> <em>(bool <var>in_p</var>, rtx <var>x</var>, reg_class_t <var>reload_class</var>, machine_mode <var>reload_mode</var>, secondary_reload_info *<var>sri</var>)</em></dt>
+<dd><p>Many machines have some registers that cannot be copied directly to or
+from memory or even from other types of registers. An example is the
+&lsquo;<samp>MQ</samp>&rsquo; register, which on most machines, can only be copied to or
+from general registers, but not memory. Below, we shall be using the
+term &rsquo;intermediate register&rsquo; when a move operation cannot be performed
+directly, but has to be done by copying the source into the intermediate
+register first, and then copying the intermediate register to the
+destination. An intermediate register always has the same mode as
+source and destination. Since it holds the actual value being copied,
+reload might apply optimizations to re-use an intermediate register
+and eliding the copy from the source when it can determine that the
+intermediate register still holds the required value.
+</p>
+<p>Another kind of secondary reload is required on some machines which
+allow copying all registers to and from memory, but require a scratch
+register for stores to some memory locations (e.g., those with symbolic
+address on the RT, and those with certain symbolic address on the SPARC
+when compiling PIC). Scratch registers need not have the same mode
+as the value being copied, and usually hold a different value than
+that being copied. Special patterns in the md file are needed to
+describe how the copy is performed with the help of the scratch register;
+these patterns also describe the number, register class(es) and mode(s)
+of the scratch register(s).
+</p>
+<p>In some cases, both an intermediate and a scratch register are required.
+</p>
+<p>For input reloads, this target hook is called with nonzero <var>in_p</var>,
+and <var>x</var> is an rtx that needs to be copied to a register of class
+<var>reload_class</var> in <var>reload_mode</var>. For output reloads, this target
+hook is called with zero <var>in_p</var>, and a register of class <var>reload_class</var>
+needs to be copied to rtx <var>x</var> in <var>reload_mode</var>.
+</p>
+<p>If copying a register of <var>reload_class</var> from/to <var>x</var> requires
+an intermediate register, the hook <code>secondary_reload</code> should
+return the register class required for this intermediate register.
+If no intermediate register is required, it should return NO_REGS.
+If more than one intermediate register is required, describe the one
+that is closest in the copy chain to the reload register.
+</p>
+<p>If scratch registers are needed, you also have to describe how to
+perform the copy from/to the reload register to/from this
+closest intermediate register. Or if no intermediate register is
+required, but still a scratch register is needed, describe the
+copy from/to the reload register to/from the reload operand <var>x</var>.
+</p>
+<p>You do this by setting <code>sri-&gt;icode</code> to the instruction code of a pattern
+in the md file which performs the move. Operands 0 and 1 are the output
+and input of this copy, respectively. Operands from operand 2 onward are
+for scratch operands. These scratch operands must have a mode, and a
+single-register-class
+output constraint.
+</p>
+<p>When an intermediate register is used, the <code>secondary_reload</code>
+hook will be called again to determine how to copy the intermediate
+register to/from the reload operand <var>x</var>, so your hook must also
+have code to handle the register class of the intermediate operand.
+</p>
+
+
+<p><var>x</var> might be a pseudo-register or a <code>subreg</code> of a
+pseudo-register, which could either be in a hard register or in memory.
+Use <code>true_regnum</code> to find out; it will return -1 if the pseudo is
+in memory and the hard register number if it is in a register.
+</p>
+<p>Scratch operands in memory (constraint <code>&quot;=m&quot;</code> / <code>&quot;=&amp;m&quot;</code>) are
+currently not supported. For the time being, you will have to continue
+to use <code>TARGET_SECONDARY_MEMORY_NEEDED</code> for that purpose.
+</p>
+<p><code>copy_cost</code> also uses this target hook to find out how values are
+copied. If you want it to include some extra cost for the need to allocate
+(a) scratch register(s), set <code>sri-&gt;extra_cost</code> to the additional cost.
+Or if two dependent moves are supposed to have a lower cost than the sum
+of the individual moves due to expected fortuitous scheduling and/or special
+forwarding logic, you can set <code>sri-&gt;extra_cost</code> to a negative amount.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SECONDARY_005fRELOAD_005fCLASS"></a>Macro: <strong>SECONDARY_RELOAD_CLASS</strong> <em>(<var>class</var>, <var>mode</var>, <var>x</var>)</em></dt>
+<dt><a name="index-SECONDARY_005fINPUT_005fRELOAD_005fCLASS"></a>Macro: <strong>SECONDARY_INPUT_RELOAD_CLASS</strong> <em>(<var>class</var>, <var>mode</var>, <var>x</var>)</em></dt>
+<dt><a name="index-SECONDARY_005fOUTPUT_005fRELOAD_005fCLASS"></a>Macro: <strong>SECONDARY_OUTPUT_RELOAD_CLASS</strong> <em>(<var>class</var>, <var>mode</var>, <var>x</var>)</em></dt>
+<dd><p>These macros are obsolete, new ports should use the target hook
+<code>TARGET_SECONDARY_RELOAD</code> instead.
+</p>
+<p>These are obsolete macros, replaced by the <code>TARGET_SECONDARY_RELOAD</code>
+target hook. Older ports still define these macros to indicate to the
+reload phase that it may
+need to allocate at least one register for a reload in addition to the
+register to contain the data. Specifically, if copying <var>x</var> to a
+register <var>class</var> in <var>mode</var> requires an intermediate register,
+you were supposed to define <code>SECONDARY_INPUT_RELOAD_CLASS</code> to return the
+largest register class all of whose registers can be used as
+intermediate registers or scratch registers.
+</p>
+<p>If copying a register <var>class</var> in <var>mode</var> to <var>x</var> requires an
+intermediate or scratch register, <code>SECONDARY_OUTPUT_RELOAD_CLASS</code>
+was supposed to be defined to return the largest register
+class required. If the
+requirements for input and output reloads were the same, the macro
+<code>SECONDARY_RELOAD_CLASS</code> should have been used instead of defining both
+macros identically.
+</p>
+<p>The values returned by these macros are often <code>GENERAL_REGS</code>.
+Return <code>NO_REGS</code> if no spare register is needed; i.e., if <var>x</var>
+can be directly copied to or from a register of <var>class</var> in
+<var>mode</var> without requiring a scratch register. Do not define this
+macro if it would always return <code>NO_REGS</code>.
+</p>
+<p>If a scratch register is required (either with or without an
+intermediate register), you were supposed to define patterns for
+&lsquo;<samp>reload_in<var>m</var></samp>&rsquo; or &lsquo;<samp>reload_out<var>m</var></samp>&rsquo;, as required
+(see <a href="Standard-Names.html#Standard-Names">Standard Names</a>. These patterns, which were normally
+implemented with a <code>define_expand</code>, should be similar to the
+&lsquo;<samp>mov<var>m</var></samp>&rsquo; patterns, except that operand 2 is the scratch
+register.
+</p>
+<p>These patterns need constraints for the reload register and scratch
+register that
+contain a single register class. If the original reload register (whose
+class is <var>class</var>) can meet the constraint given in the pattern, the
+value returned by these macros is used for the class of the scratch
+register. Otherwise, two additional reload registers are required.
+Their classes are obtained from the constraints in the insn pattern.
+</p>
+<p><var>x</var> might be a pseudo-register or a <code>subreg</code> of a
+pseudo-register, which could either be in a hard register or in memory.
+Use <code>true_regnum</code> to find out; it will return -1 if the pseudo is
+in memory and the hard register number if it is in a register.
+</p>
+<p>These macros should not be used in the case where a particular class of
+registers can only be copied to memory and not to another class of
+registers. In that case, secondary reload registers are not needed and
+would not be helpful. Instead, a stack location must be used to perform
+the copy and the <code>mov<var>m</var></code> pattern should use memory as an
+intermediate storage. This case often occurs between floating-point and
+general registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSECONDARY_005fMEMORY_005fNEEDED"></a>Target Hook: <em>bool</em> <strong>TARGET_SECONDARY_MEMORY_NEEDED</strong> <em>(machine_mode <var>mode</var>, reg_class_t <var>class1</var>, reg_class_t <var>class2</var>)</em></dt>
+<dd><p>Certain machines have the property that some registers cannot be copied
+to some other registers without using memory. Define this hook on
+those machines to return true if objects of mode <var>m</var> in registers
+of <var>class1</var> can only be copied to registers of class <var>class2</var> by
+ storing a register of <var>class1</var> into memory and loading that memory
+location into a register of <var>class2</var>. The default definition returns
+false for all inputs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SECONDARY_005fMEMORY_005fNEEDED_005fRTX"></a>Macro: <strong>SECONDARY_MEMORY_NEEDED_RTX</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>Normally when <code>TARGET_SECONDARY_MEMORY_NEEDED</code> is defined, the compiler
+allocates a stack slot for a memory location needed for register copies.
+If this macro is defined, the compiler instead uses the memory location
+defined by this macro.
+</p>
+<p>Do not define this macro if you do not define
+<code>TARGET_SECONDARY_MEMORY_NEEDED</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSECONDARY_005fMEMORY_005fNEEDED_005fMODE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_SECONDARY_MEMORY_NEEDED_MODE</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>If <code>TARGET_SECONDARY_MEMORY_NEEDED</code> tells the compiler to use memory
+when moving between two particular registers of mode <var>mode</var>,
+this hook specifies the mode that the memory should have.
+</p>
+<p>The default depends on <code>TARGET_LRA_P</code>. Without LRA, the default
+is to use a word-sized mode for integral modes that are smaller than a
+a word. This is right thing to do on most machines because it ensures
+that all bits of the register are copied and prevents accesses to the
+registers in a narrower mode, which some machines prohibit for
+floating-point registers.
+</p>
+<p>However, this default behavior is not correct on some machines, such as
+the DEC Alpha, that store short integers in floating-point registers
+differently than in integer registers. On those machines, the default
+widening will not work correctly and you must define this hook to
+suppress that widening in some cases. See the file <samp>alpha.cc</samp> for
+details.
+</p>
+<p>With LRA, the default is to use <var>mode</var> unmodified.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSELECT_005fEARLY_005fREMAT_005fMODES"></a>Target Hook: <em>void</em> <strong>TARGET_SELECT_EARLY_REMAT_MODES</strong> <em>(sbitmap <var>modes</var>)</em></dt>
+<dd><p>On some targets, certain modes cannot be held in registers around a
+standard ABI call and are relatively expensive to spill to the stack.
+The early rematerialization pass can help in such cases by aggressively
+recomputing values after calls, so that they don&rsquo;t need to be spilled.
+</p>
+<p>This hook returns the set of such modes by setting the associated bits
+in <var>modes</var>. The default implementation selects no modes, which has
+the effect of disabling the early rematerialization pass.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCLASS_005fLIKELY_005fSPILLED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CLASS_LIKELY_SPILLED_P</strong> <em>(reg_class_t <var>rclass</var>)</em></dt>
+<dd><p>A target hook which returns <code>true</code> if pseudos that have been assigned
+to registers of class <var>rclass</var> would likely be spilled because
+registers of <var>rclass</var> are needed for spill registers.
+</p>
+<p>The default version of this target hook returns <code>true</code> if <var>rclass</var>
+has exactly one register and <code>false</code> otherwise. On most machines, this
+default should be used. For generally register-starved machines, such as
+i386, or machines with right register constraints, such as SH, this hook
+can be used to avoid excessive spilling.
+</p>
+<p>This hook is also used by some of the global intra-procedural code
+transformations to throtle code motion, to avoid increasing register
+pressure.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCLASS_005fMAX_005fNREGS"></a>Target Hook: <em>unsigned char</em> <strong>TARGET_CLASS_MAX_NREGS</strong> <em>(reg_class_t <var>rclass</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>A target hook returns the maximum number of consecutive registers
+of class <var>rclass</var> needed to hold a value of mode <var>mode</var>.
+</p>
+<p>This is closely related to the macro <code>TARGET_HARD_REGNO_NREGS</code>.
+In fact, the value returned by <code>TARGET_CLASS_MAX_NREGS (<var>rclass</var>,
+<var>mode</var>)</code> target hook should be the maximum value of
+<code>TARGET_HARD_REGNO_NREGS (<var>regno</var>, <var>mode</var>)</code> for all <var>regno</var>
+values in the class <var>rclass</var>.
+</p>
+<p>This target hook helps control the handling of multiple-word values
+in the reload pass.
+</p>
+<p>The default version of this target hook returns the size of <var>mode</var>
+in words.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CLASS_005fMAX_005fNREGS"></a>Macro: <strong>CLASS_MAX_NREGS</strong> <em>(<var>class</var>, <var>mode</var>)</em></dt>
+<dd><p>A C expression for the maximum number of consecutive registers
+of class <var>class</var> needed to hold a value of mode <var>mode</var>.
+</p>
+<p>This is closely related to the macro <code>TARGET_HARD_REGNO_NREGS</code>. In fact,
+the value of the macro <code>CLASS_MAX_NREGS (<var>class</var>, <var>mode</var>)</code>
+should be the maximum value of <code>TARGET_HARD_REGNO_NREGS (<var>regno</var>,
+<var>mode</var>)</code> for all <var>regno</var> values in the class <var>class</var>.
+</p>
+<p>This macro helps control the handling of multiple-word values
+in the reload pass.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCAN_005fCHANGE_005fMODE_005fCLASS"></a>Target Hook: <em>bool</em> <strong>TARGET_CAN_CHANGE_MODE_CLASS</strong> <em>(machine_mode <var>from</var>, machine_mode <var>to</var>, reg_class_t <var>rclass</var>)</em></dt>
+<dd><p>This hook returns true if it is possible to bitcast values held in
+registers of class <var>rclass</var> from mode <var>from</var> to mode <var>to</var>
+and if doing so preserves the low-order bits that are common to both modes.
+The result is only meaningful if <var>rclass</var> has registers that can hold
+both <code>from</code> and <code>to</code>. The default implementation returns true.
+</p>
+<p>As an example of when such bitcasting is invalid, loading 32-bit integer or
+floating-point objects into floating-point registers on Alpha extends them
+to 64 bits. Therefore loading a 64-bit object and then storing it as a
+32-bit object does not store the low-order 32 bits, as would be the case
+for a normal register. Therefore, <samp>alpha.h</samp> defines
+<code>TARGET_CAN_CHANGE_MODE_CLASS</code> to return:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(GET_MODE_SIZE (from) == GET_MODE_SIZE (to)
+ || !reg_classes_intersect_p (FLOAT_REGS, rclass))
+</pre></div>
+
+<p>Even if storing from a register in mode <var>to</var> would be valid,
+if both <var>from</var> and <code>raw_reg_mode</code> for <var>rclass</var> are wider
+than <code>word_mode</code>, then we must prevent <var>to</var> narrowing the
+mode. This happens when the middle-end assumes that it can load
+or store pieces of an <var>N</var>-word pseudo, and that the pseudo will
+eventually be allocated to <var>N</var> <code>word_mode</code> hard registers.
+Failure to prevent this kind of mode change will result in the
+entire <code>raw_reg_mode</code> being modified instead of the partial
+value that the middle-end intended.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fIRA_005fCHANGE_005fPSEUDO_005fALLOCNO_005fCLASS"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS</strong> <em>(int, <var>reg_class_t</var>, <var>reg_class_t</var>)</em></dt>
+<dd><p>A target hook which can change allocno class for given pseudo from
+ allocno and best class calculated by IRA.
+</p>
+<p>The default version of this target hook always returns given class.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLRA_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_LRA_P</strong> <em>(void)</em></dt>
+<dd><p>A target hook which returns true if we use LRA instead of reload pass.
+</p>
+<p>The default version of this target hook returns true. New ports
+should use LRA, and existing ports are encouraged to convert.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fREGISTER_005fPRIORITY"></a>Target Hook: <em>int</em> <strong>TARGET_REGISTER_PRIORITY</strong> <em>(int)</em></dt>
+<dd><p>A target hook which returns the register priority number to which the
+register <var>hard_regno</var> belongs to. The bigger the number, the
+more preferable the hard register usage (when all other conditions are
+the same). This hook can be used to prefer some hard register over
+others in LRA. For example, some x86-64 register usage needs
+additional prefix which makes instructions longer. The hook can
+return lower priority number for such registers make them less favorable
+and as result making the generated code smaller.
+</p>
+<p>The default version of this target hook returns always zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fREGISTER_005fUSAGE_005fLEVELING_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_REGISTER_USAGE_LEVELING_P</strong> <em>(void)</em></dt>
+<dd><p>A target hook which returns true if we need register usage leveling.
+That means if a few hard registers are equally good for the
+assignment, we choose the least used hard register. The register
+usage leveling may be profitable for some targets. Don&rsquo;t use the
+usage leveling for targets with conditional execution or targets
+with big register files as it hurts if-conversion and cross-jumping
+optimizations.
+</p>
+<p>The default version of this target hook returns always false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDIFFERENT_005fADDR_005fDISPLACEMENT_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_DIFFERENT_ADDR_DISPLACEMENT_P</strong> <em>(void)</em></dt>
+<dd><p>A target hook which returns true if an address with the same structure
+can have different maximal legitimate displacement. For example, the
+displacement can depend on memory mode or on operand combinations in
+the insn.
+</p>
+<p>The default version of this target hook returns always false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCANNOT_005fSUBSTITUTE_005fMEM_005fEQUIV_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P</strong> <em>(rtx <var>subst</var>)</em></dt>
+<dd><p>A target hook which returns <code>true</code> if <var>subst</var> can&rsquo;t
+substitute safely pseudos with equivalent memory values during
+register allocation.
+The default version of this target hook returns <code>false</code>.
+On most machines, this default should be used. For generally
+machines with non orthogonal register usage for addressing, such
+as SH, this hook can be used to avoid excessive spilling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLEGITIMIZE_005fADDRESS_005fDISPLACEMENT"></a>Target Hook: <em>bool</em> <strong>TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT</strong> <em>(rtx *<var>offset1</var>, rtx *<var>offset2</var>, poly_int64 <var>orig_offset</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook tries to split address offset <var>orig_offset</var> into
+two parts: one that should be added to the base address to create
+a local anchor point, and an additional offset that can be applied
+to the anchor to address a value of mode <var>mode</var>. The idea is that
+the local anchor could be shared by other accesses to nearby locations.
+</p>
+<p>The hook returns true if it succeeds, storing the offset of the
+anchor from the base in <var>offset1</var> and the offset of the final address
+from the anchor in <var>offset2</var>. The default implementation returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSPILL_005fCLASS"></a>Target Hook: <em>reg_class_t</em> <strong>TARGET_SPILL_CLASS</strong> <em>(reg_class_t, <var>machine_mode</var>)</em></dt>
+<dd><p>This hook defines a class of registers which could be used for spilling
+pseudos of the given mode and class, or <code>NO_REGS</code> if only memory
+should be used. Not defining this hook is equivalent to returning
+<code>NO_REGS</code> for all inputs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fADDITIONAL_005fALLOCNO_005fCLASS_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_ADDITIONAL_ALLOCNO_CLASS_P</strong> <em>(reg_class_t)</em></dt>
+<dd><p>This hook should return <code>true</code> if given class of registers should
+be an allocno class in any way. Usually RA uses only one register
+class from all classes containing the same register set. In some
+complicated cases, you need to have two or more such classes as
+allocno ones for RA correct work. Not defining this hook is
+equivalent to returning <code>false</code> for all inputs.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCSTORE_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_CSTORE_MODE</strong> <em>(enum insn_code <var>icode</var>)</em></dt>
+<dd><p>This hook defines the machine mode to use for the boolean result of
+conditional store patterns. The ICODE argument is the instruction code
+for the cstore being performed. Not definiting this hook is the same
+as accepting the mode encoded into operand 0 of the cstore expander
+patterns.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPUTE_005fPRESSURE_005fCLASSES"></a>Target Hook: <em>int</em> <strong>TARGET_COMPUTE_PRESSURE_CLASSES</strong> <em>(enum reg_class *<var>pressure_classes</var>)</em></dt>
+<dd><p>A target hook which lets a backend compute the set of pressure classes to
+be used by those optimization passes which take register pressure into
+account, as opposed to letting IRA compute them. It returns the number of
+register classes stored in the array <var>pressure_classes</var>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="n" rel="next">Stack and Calling</a>, Previous: <a href="Registers.html#Registers" accesskey="p" rel="previous">Registers</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Registers.html b/share/doc/gccint/Registers.html
new file mode 100644
index 0000000..62908da
--- /dev/null
+++ b/share/doc/gccint/Registers.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Registers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Registers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Registers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Register-Basics.html#Register-Basics" rel="next" title="Register Basics">
+<link href="Type-Layout.html#Type-Layout" rel="previous" title="Type Layout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Registers"></a>
+<div class="header">
+<p>
+Next: <a href="Register-Classes.html#Register-Classes" accesskey="n" rel="next">Register Classes</a>, Previous: <a href="Type-Layout.html#Type-Layout" accesskey="p" rel="previous">Type Layout</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Register-Usage"></a>
+<h3 class="section">18.7 Register Usage</h3>
+<a name="index-register-usage"></a>
+
+<p>This section explains how to describe what registers the target machine
+has, and how (in general) they can be used.
+</p>
+<p>The description of which registers a specific instruction can use is
+done with register classes; see <a href="Register-Classes.html#Register-Classes">Register Classes</a>. For information
+on using registers to access a stack frame, see <a href="Frame-Registers.html#Frame-Registers">Frame Registers</a>.
+For passing values in registers, see <a href="Register-Arguments.html#Register-Arguments">Register Arguments</a>.
+For returning values in registers, see <a href="Scalar-Return.html#Scalar-Return">Scalar Return</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Register-Basics.html#Register-Basics" accesskey="1">Register Basics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Number and kinds of registers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Allocation-Order.html#Allocation-Order" accesskey="2">Allocation Order</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Order in which registers are allocated.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Values-in-Registers.html#Values-in-Registers" accesskey="3">Values in Registers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What kinds of values each reg can hold.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Leaf-Functions.html#Leaf-Functions" accesskey="4">Leaf Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Renumbering registers for leaf functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack-Registers.html#Stack-Registers" accesskey="5">Stack Registers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Handling a register stack such as 80387.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Regs-and-Memory.html b/share/doc/gccint/Regs-and-Memory.html
new file mode 100644
index 0000000..8685f4a
--- /dev/null
+++ b/share/doc/gccint/Regs-and-Memory.html
@@ -0,0 +1,544 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Regs and Memory</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Regs and Memory">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Regs and Memory">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Arithmetic.html#Arithmetic" rel="next" title="Arithmetic">
+<link href="Constants.html#Constants" rel="previous" title="Constants">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Regs-and-Memory"></a>
+<div class="header">
+<p>
+Next: <a href="Arithmetic.html#Arithmetic" accesskey="n" rel="next">Arithmetic</a>, Previous: <a href="Constants.html#Constants" accesskey="p" rel="previous">Constants</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Registers-and-Memory"></a>
+<h3 class="section">14.8 Registers and Memory</h3>
+<a name="index-RTL-register-expressions"></a>
+<a name="index-RTL-memory-expressions"></a>
+
+<p>Here are the RTL expression types for describing access to machine
+registers and to main memory.
+</p>
+<dl compact="compact">
+<dd><a name="index-reg"></a>
+<a name="index-hard-registers"></a>
+<a name="index-pseudo-registers"></a>
+</dd>
+<dt><code>(reg:<var>m</var> <var>n</var>)</code></dt>
+<dd><p>For small values of the integer <var>n</var> (those that are less than
+<code>FIRST_PSEUDO_REGISTER</code>), this stands for a reference to machine
+register number <var>n</var>: a <em>hard register</em>. For larger values of
+<var>n</var>, it stands for a temporary value or <em>pseudo register</em>.
+The compiler&rsquo;s strategy is to generate code assuming an unlimited
+number of such pseudo registers, and later convert them into hard
+registers or into memory references.
+</p>
+<p><var>m</var> is the machine mode of the reference. It is necessary because
+machines can generally refer to each register in more than one mode.
+For example, a register may contain a full word but there may be
+instructions to refer to it as a half word or as a single byte, as
+well as instructions to refer to it as a floating point number of
+various precisions.
+</p>
+<p>Even for a register that the machine can access in only one mode,
+the mode must always be specified.
+</p>
+<p>The symbol <code>FIRST_PSEUDO_REGISTER</code> is defined by the machine
+description, since the number of hard registers on the machine is an
+invariant characteristic of the machine. Note, however, that not
+all of the machine registers must be general registers. All the
+machine registers that can be used for storage of data are given
+hard register numbers, even those that can be used only in certain
+instructions or can hold only certain types of data.
+</p>
+<p>A hard register may be accessed in various modes throughout one
+function, but each pseudo register is given a natural mode
+and is accessed only in that mode. When it is necessary to describe
+an access to a pseudo register using a nonnatural mode, a <code>subreg</code>
+expression is used.
+</p>
+<p>A <code>reg</code> expression with a machine mode that specifies more than
+one word of data may actually stand for several consecutive registers.
+If in addition the register number specifies a hardware register, then
+it actually represents several consecutive hardware registers starting
+with the specified one.
+</p>
+<p>Each pseudo register number used in a function&rsquo;s RTL code is
+represented by a unique <code>reg</code> expression.
+</p>
+<a name="index-FIRST_005fVIRTUAL_005fREGISTER"></a>
+<a name="index-LAST_005fVIRTUAL_005fREGISTER"></a>
+<p>Some pseudo register numbers, those within the range of
+<code>FIRST_VIRTUAL_REGISTER</code> to <code>LAST_VIRTUAL_REGISTER</code> only
+appear during the RTL generation phase and are eliminated before the
+optimization phases. These represent locations in the stack frame that
+cannot be determined until RTL generation for the function has been
+completed. The following virtual register numbers are defined:
+</p>
+<dl compact="compact">
+<dd><a name="index-VIRTUAL_005fINCOMING_005fARGS_005fREGNUM"></a>
+</dd>
+<dt><code>VIRTUAL_INCOMING_ARGS_REGNUM</code></dt>
+<dd><p>This points to the first word of the incoming arguments passed on the
+stack. Normally these arguments are placed there by the caller, but the
+callee may have pushed some arguments that were previously passed in
+registers.
+</p>
+<a name="index-FIRST_005fPARM_005fOFFSET-and-virtual-registers"></a>
+<a name="index-ARG_005fPOINTER_005fREGNUM-and-virtual-registers"></a>
+<p>When RTL generation is complete, this virtual register is replaced
+by the sum of the register given by <code>ARG_POINTER_REGNUM</code> and the
+value of <code>FIRST_PARM_OFFSET</code>.
+</p>
+<a name="index-VIRTUAL_005fSTACK_005fVARS_005fREGNUM"></a>
+<a name="index-FRAME_005fGROWS_005fDOWNWARD-and-virtual-registers"></a>
+</dd>
+<dt><code>VIRTUAL_STACK_VARS_REGNUM</code></dt>
+<dd><p>If <code>FRAME_GROWS_DOWNWARD</code> is defined to a nonzero value, this points
+to immediately above the first variable on the stack. Otherwise, it points
+to the first variable on the stack.
+</p>
+<a name="index-TARGET_005fSTARTING_005fFRAME_005fOFFSET-and-virtual-registers"></a>
+<a name="index-FRAME_005fPOINTER_005fREGNUM-and-virtual-registers"></a>
+<p><code>VIRTUAL_STACK_VARS_REGNUM</code> is replaced with the sum of the
+register given by <code>FRAME_POINTER_REGNUM</code> and the value
+<code>TARGET_STARTING_FRAME_OFFSET</code>.
+</p>
+<a name="index-VIRTUAL_005fSTACK_005fDYNAMIC_005fREGNUM"></a>
+</dd>
+<dt><code>VIRTUAL_STACK_DYNAMIC_REGNUM</code></dt>
+<dd><p>This points to the location of dynamically allocated memory on the stack
+immediately after the stack pointer has been adjusted by the amount of
+memory desired.
+</p>
+<a name="index-STACK_005fDYNAMIC_005fOFFSET-and-virtual-registers"></a>
+<a name="index-STACK_005fPOINTER_005fREGNUM-and-virtual-registers"></a>
+<p>This virtual register is replaced by the sum of the register given by
+<code>STACK_POINTER_REGNUM</code> and the value <code>STACK_DYNAMIC_OFFSET</code>.
+</p>
+<a name="index-VIRTUAL_005fOUTGOING_005fARGS_005fREGNUM"></a>
+</dd>
+<dt><code>VIRTUAL_OUTGOING_ARGS_REGNUM</code></dt>
+<dd><p>This points to the location in the stack at which outgoing arguments
+should be written when the stack is pre-pushed (arguments pushed using
+push insns should always use <code>STACK_POINTER_REGNUM</code>).
+</p>
+<a name="index-STACK_005fPOINTER_005fOFFSET-and-virtual-registers"></a>
+<p>This virtual register is replaced by the sum of the register given by
+<code>STACK_POINTER_REGNUM</code> and the value <code>STACK_POINTER_OFFSET</code>.
+</p></dd>
+</dl>
+
+<a name="index-subreg"></a>
+</dd>
+<dt><code>(subreg:<var>m1</var> <var>reg:m2</var> <var>bytenum</var>)</code></dt>
+<dd>
+<p><code>subreg</code> expressions are used to refer to a register in a machine
+mode other than its natural one, or to refer to one register of
+a multi-part <code>reg</code> that actually refers to several registers.
+</p>
+<p>Each pseudo register has a natural mode. If it is necessary to
+operate on it in a different mode, the register must be
+enclosed in a <code>subreg</code>.
+</p>
+<p>There are currently three supported types for the first operand of a
+<code>subreg</code>:
+</p><ul>
+<li> pseudo registers
+This is the most common case. Most <code>subreg</code>s have pseudo
+<code>reg</code>s as their first operand.
+
+</li><li> mem
+<code>subreg</code>s of <code>mem</code> were common in earlier versions of GCC and
+are still supported. During the reload pass these are replaced by plain
+<code>mem</code>s. On machines that do not do instruction scheduling, use of
+<code>subreg</code>s of <code>mem</code> are still used, but this is no longer
+recommended. Such <code>subreg</code>s are considered to be
+<code>register_operand</code>s rather than <code>memory_operand</code>s before and
+during reload. Because of this, the scheduling passes cannot properly
+schedule instructions with <code>subreg</code>s of <code>mem</code>, so for machines
+that do scheduling, <code>subreg</code>s of <code>mem</code> should never be used.
+To support this, the combine and recog passes have explicit code to
+inhibit the creation of <code>subreg</code>s of <code>mem</code> when
+<code>INSN_SCHEDULING</code> is defined.
+
+<p>The use of <code>subreg</code>s of <code>mem</code> after the reload pass is an area
+that is not well understood and should be avoided. There is still some
+code in the compiler to support this, but this code has possibly rotted.
+This use of <code>subreg</code>s is discouraged and will most likely not be
+supported in the future.
+</p>
+</li><li> hard registers
+It is seldom necessary to wrap hard registers in <code>subreg</code>s; such
+registers would normally reduce to a single <code>reg</code> rtx. This use of
+<code>subreg</code>s is discouraged and may not be supported in the future.
+
+</li></ul>
+
+<p><code>subreg</code>s of <code>subreg</code>s are not supported. Using
+<code>simplify_gen_subreg</code> is the recommended way to avoid this problem.
+</p>
+<p><code>subreg</code>s come in two distinct flavors, each having its own
+usage and rules:
+</p>
+<dl compact="compact">
+<dt>Paradoxical subregs</dt>
+<dd><p>When <var>m1</var> is strictly wider than <var>m2</var>, the <code>subreg</code>
+expression is called <em>paradoxical</em>. The canonical test for this
+class of <code>subreg</code> is:
+</p>
+<div class="smallexample">
+<pre class="smallexample">paradoxical_subreg_p (<var>m1</var>, <var>m2</var>)
+</pre></div>
+
+<p>Paradoxical <code>subreg</code>s can be used as both lvalues and rvalues.
+When used as an lvalue, the low-order bits of the source value
+are stored in <var>reg</var> and the high-order bits are discarded.
+When used as an rvalue, the low-order bits of the <code>subreg</code> are
+taken from <var>reg</var> while the high-order bits may or may not be
+defined.
+</p>
+<p>The high-order bits of rvalues are defined in the following circumstances:
+</p>
+<ul>
+<li> <code>subreg</code>s of <code>mem</code>
+When <var>m2</var> is smaller than a word, the macro <code>LOAD_EXTEND_OP</code>,
+can control how the high-order bits are defined.
+
+</li><li> <code>subreg</code> of <code>reg</code>s
+The upper bits are defined when <code>SUBREG_PROMOTED_VAR_P</code> is true.
+<code>SUBREG_PROMOTED_UNSIGNED_P</code> describes what the upper bits hold.
+Such subregs usually represent local variables, register variables
+and parameter pseudo variables that have been promoted to a wider mode.
+
+</li></ul>
+
+<p><var>bytenum</var> is always zero for a paradoxical <code>subreg</code>, even on
+big-endian targets.
+</p>
+<p>For example, the paradoxical <code>subreg</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set (subreg:SI (reg:HI <var>x</var>) 0) <var>y</var>)
+</pre></div>
+
+<p>stores the lower 2 bytes of <var>y</var> in <var>x</var> and discards the upper
+2 bytes. A subsequent:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set <var>z</var> (subreg:SI (reg:HI <var>x</var>) 0))
+</pre></div>
+
+<p>would set the lower two bytes of <var>z</var> to <var>y</var> and set the upper
+two bytes to an unknown value assuming <code>SUBREG_PROMOTED_VAR_P</code> is
+false.
+</p>
+</dd>
+<dt>Normal subregs</dt>
+<dd><p>When <var>m1</var> is at least as narrow as <var>m2</var> the <code>subreg</code>
+expression is called <em>normal</em>.
+</p>
+<a name="index-REGMODE_005fNATURAL_005fSIZE"></a>
+<p>Normal <code>subreg</code>s restrict consideration to certain bits of
+<var>reg</var>. For this purpose, <var>reg</var> is divided into
+individually-addressable blocks in which each block has:
+</p>
+<div class="smallexample">
+<pre class="smallexample">REGMODE_NATURAL_SIZE (<var>m2</var>)
+</pre></div>
+
+<p>bytes. Usually the value is <code>UNITS_PER_WORD</code>; that is,
+most targets usually treat each word of a register as being
+independently addressable.
+</p>
+<p>There are two types of normal <code>subreg</code>. If <var>m1</var> is known
+to be no bigger than a block, the <code>subreg</code> refers to the
+least-significant part (or <em>lowpart</em>) of one block of <var>reg</var>.
+If <var>m1</var> is known to be larger than a block, the <code>subreg</code> refers
+to two or more complete blocks.
+</p>
+<p>When used as an lvalue, <code>subreg</code> is a block-based accessor.
+Storing to a <code>subreg</code> modifies all the blocks of <var>reg</var> that
+overlap the <code>subreg</code>, but it leaves the other blocks of <var>reg</var>
+alone.
+</p>
+<p>When storing to a normal <code>subreg</code> that is smaller than a block,
+the other bits of the referenced block are usually left in an undefined
+state. This laxity makes it easier to generate efficient code for
+such instructions. To represent an instruction that preserves all the
+bits outside of those in the <code>subreg</code>, use <code>strict_low_part</code>
+or <code>zero_extract</code> around the <code>subreg</code>.
+</p>
+<p><var>bytenum</var> must identify the offset of the first byte of the
+<code>subreg</code> from the start of <var>reg</var>, assuming that <var>reg</var> is
+laid out in memory order. The memory order of bytes is defined by
+two target macros, <code>WORDS_BIG_ENDIAN</code> and <code>BYTES_BIG_ENDIAN</code>:
+</p>
+<ul>
+<li> <a name="index-WORDS_005fBIG_005fENDIAN_002c-effect-on-subreg"></a>
+<code>WORDS_BIG_ENDIAN</code>, if set to 1, says that byte number zero is
+part of the most significant word; otherwise, it is part of the least
+significant word.
+
+</li><li> <a name="index-BYTES_005fBIG_005fENDIAN_002c-effect-on-subreg"></a>
+<code>BYTES_BIG_ENDIAN</code>, if set to 1, says that byte number zero is
+the most significant byte within a word; otherwise, it is the least
+significant byte within a word.
+</li></ul>
+
+<a name="index-FLOAT_005fWORDS_005fBIG_005fENDIAN_002c-_0028lack-of_0029-effect-on-subreg"></a>
+<p>On a few targets, <code>FLOAT_WORDS_BIG_ENDIAN</code> disagrees with
+<code>WORDS_BIG_ENDIAN</code>. However, most parts of the compiler treat
+floating point values as if they had the same endianness as integer
+values. This works because they handle them solely as a collection of
+integer values, with no particular numerical value. Only real.cc and
+the runtime libraries care about <code>FLOAT_WORDS_BIG_ENDIAN</code>.
+</p>
+<p>Thus,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(subreg:HI (reg:SI <var>x</var>) 2)
+</pre></div>
+
+<p>on a <code>BYTES_BIG_ENDIAN</code>, &lsquo;<samp>UNITS_PER_WORD == 4</samp>&rsquo; target is the same as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(subreg:HI (reg:SI <var>x</var>) 0)
+</pre></div>
+
+<p>on a little-endian, &lsquo;<samp>UNITS_PER_WORD == 4</samp>&rsquo; target. Both
+<code>subreg</code>s access the lower two bytes of register <var>x</var>.
+</p>
+<p>Note that the byte offset is a polynomial integer; it may not be a
+compile-time constant on targets with variable-sized modes. However,
+the restrictions above mean that there are only a certain set of
+acceptable offsets for a given combination of <var>m1</var> and <var>m2</var>.
+The compiler can always tell which blocks a valid subreg occupies, and
+whether the subreg is a lowpart of a block.
+</p>
+</dd>
+</dl>
+
+<p>A <code>MODE_PARTIAL_INT</code> mode behaves as if it were as wide as the
+corresponding <code>MODE_INT</code> mode, except that it has a number of
+undefined bits, which are determined by the precision of the
+mode.
+</p>
+<p>For example, on a little-endian target which defines <code>PSImode</code>
+to have a precision of 20 bits:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(subreg:PSI (reg:SI 0) 0)
+</pre></div>
+
+<p>accesses the low 20 bits of &lsquo;<samp>(reg:SI 0)</samp>&rsquo;.
+</p>
+<a name="index-REGMODE_005fNATURAL_005fSIZE-1"></a>
+<p>Continuing with a <code>PSImode</code> precision of 20 bits, if we assume
+&lsquo;<samp>REGMODE_NATURAL_SIZE (DImode) &lt;= 4</samp>&rsquo;,
+then the following two <code>subreg</code>s:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(subreg:PSI (reg:DI 0) 0)
+(subreg:PSI (reg:DI 0) 4)
+</pre></div>
+
+<p>represent accesses to the low 20 bits of the two halves of
+&lsquo;<samp>(reg:DI 0)</samp>&rsquo;.
+</p>
+<p>If &lsquo;<samp>REGMODE_NATURAL_SIZE (PSImode) &lt;= 2</samp>&rsquo; then these two <code>subreg</code>s:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(subreg:HI (reg:PSI 0) 0)
+(subreg:HI (reg:PSI 0) 2)
+</pre></div>
+
+<p>represent independent 2-byte accesses that together span the whole
+of &lsquo;<samp>(reg:PSI 0)</samp>&rsquo;. Storing to the first <code>subreg</code> does not
+affect the value of the second, and vice versa, so the assignment:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set (subreg:HI (reg:PSI 0) 0) (reg:HI 4))
+</pre></div>
+
+<p>sets the low 16 bits of &lsquo;<samp>(reg:PSI 0)</samp>&rsquo; to &lsquo;<samp>(reg:HI 4)</samp>&rsquo;, and
+the high 4 defined bits of &lsquo;<samp>(reg:PSI 0)</samp>&rsquo; retain their
+original value. The behavior here is the same as for
+normal <code>subreg</code>s, when there are no
+<code>MODE_PARTIAL_INT</code> modes involved.
+</p>
+<a name="index-TARGET_005fCAN_005fCHANGE_005fMODE_005fCLASS-and-subreg-semantics"></a>
+<p>The rules above apply to both pseudo <var>reg</var>s and hard <var>reg</var>s.
+If the semantics are not correct for particular combinations of
+<var>m1</var>, <var>m2</var> and hard <var>reg</var>, the target-specific code
+must ensure that those combinations are never used. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">TARGET_CAN_CHANGE_MODE_CLASS (<var>m2</var>, <var>m1</var>, <var>class</var>)
+</pre></div>
+
+<p>must be false for every class <var>class</var> that includes <var>reg</var>.
+</p>
+<p>GCC must be able to determine at compile time whether a subreg is
+paradoxical, whether it occupies a whole number of blocks, or whether
+it is a lowpart of a block. This means that certain combinations of
+variable-sized mode are not permitted. For example, if <var>m2</var>
+holds <var>n</var> <code>SI</code> values, where <var>n</var> is greater than zero,
+it is not possible to form a <code>DI</code> <code>subreg</code> of it; such a
+<code>subreg</code> would be paradoxical when <var>n</var> is 1 but not when
+<var>n</var> is greater than 1.
+</p>
+<a name="index-SUBREG_005fREG"></a>
+<a name="index-SUBREG_005fBYTE"></a>
+<p>The first operand of a <code>subreg</code> expression is customarily accessed
+with the <code>SUBREG_REG</code> macro and the second operand is customarily
+accessed with the <code>SUBREG_BYTE</code> macro.
+</p>
+<p>It has been several years since a platform in which
+<code>BYTES_BIG_ENDIAN</code> not equal to <code>WORDS_BIG_ENDIAN</code> has
+been tested. Anyone wishing to support such a platform in the future
+may be confronted with code rot.
+</p>
+<a name="index-scratch"></a>
+<a name="index-scratch-operands"></a>
+</dd>
+<dt><code>(scratch:<var>m</var>)</code></dt>
+<dd><p>This represents a scratch register that will be required for the
+execution of a single instruction and not used subsequently. It is
+converted into a <code>reg</code> by either the local register allocator or
+the reload pass.
+</p>
+<p><code>scratch</code> is usually present inside a <code>clobber</code> operation
+(see <a href="Side-Effects.html#Side-Effects">Side Effects</a>).
+</p>
+<p>On some machines, the condition code register is given a register number
+and a <code>reg</code> is used.
+Other machines store condition codes in general
+registers; in such cases a pseudo register should be used.
+</p>
+<p>Some machines, such as the SPARC and RS/6000, have two sets of
+arithmetic instructions, one that sets and one that does not set the
+condition code. This is best handled by normally generating the
+instruction that does not set the condition code, and making a pattern
+that both performs the arithmetic and sets the condition code register.
+For examples, search for &lsquo;<samp>addcc</samp>&rsquo; and &lsquo;<samp>andcc</samp>&rsquo; in <samp>sparc.md</samp>.
+</p>
+<a name="index-pc"></a>
+<a name="index-program-counter"></a>
+</dd>
+<dt><code>(pc)</code></dt>
+<dd><p>This represents the machine&rsquo;s program counter. It has no operands and
+may not have a machine mode. <code>(pc)</code> may be validly used only in
+certain specific contexts in jump instructions.
+</p>
+<a name="index-pc_005frtx"></a>
+<p>There is only one expression object of code <code>pc</code>; it is the value
+of the variable <code>pc_rtx</code>. Any attempt to create an expression of
+code <code>pc</code> will return <code>pc_rtx</code>.
+</p>
+<p>All instructions that do not jump alter the program counter implicitly
+by incrementing it, but there is no need to mention this in the RTL.
+</p>
+<a name="index-mem"></a>
+</dd>
+<dt><code>(mem:<var>m</var> <var>addr</var> <var>alias</var>)</code></dt>
+<dd><p>This RTX represents a reference to main memory at an address
+represented by the expression <var>addr</var>. <var>m</var> specifies how large
+a unit of memory is accessed. <var>alias</var> specifies an alias set for the
+reference. In general two items are in different alias sets if they cannot
+reference the same memory address.
+</p>
+<p>The construct <code>(mem:BLK (scratch))</code> is considered to alias all
+other memories. Thus it may be used as a memory barrier in epilogue
+stack deallocation patterns.
+</p>
+<a name="index-concat"></a>
+</dd>
+<dt><code>(concat<var>m</var> <var>rtx</var> <var>rtx</var>)</code></dt>
+<dd><p>This RTX represents the concatenation of two other RTXs. This is used
+for complex values. It should only appear in the RTL attached to
+declarations and during RTL generation. It should not appear in the
+ordinary insn chain.
+</p>
+<a name="index-concatn"></a>
+</dd>
+<dt><code>(concatn<var>m</var> [<var>rtx</var> &hellip;])</code></dt>
+<dd><p>This RTX represents the concatenation of all the <var>rtx</var> to make a
+single value. Like <code>concat</code>, this should only appear in
+declarations, and not in the insn chain.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Arithmetic.html#Arithmetic" accesskey="n" rel="next">Arithmetic</a>, Previous: <a href="Constants.html#Constants" accesskey="p" rel="previous">Constants</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Regular-IPA-passes.html b/share/doc/gccint/Regular-IPA-passes.html
new file mode 100644
index 0000000..6f01714
--- /dev/null
+++ b/share/doc/gccint/Regular-IPA-passes.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Regular IPA passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Regular IPA passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Regular IPA passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="IPA-passes.html#IPA-passes" rel="up" title="IPA passes">
+<link href="Late-IPA-passes.html#Late-IPA-passes" rel="next" title="Late IPA passes">
+<link href="Small-IPA-passes.html#Small-IPA-passes" rel="previous" title="Small IPA passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Regular-IPA-passes"></a>
+<div class="header">
+<p>
+Next: <a href="Late-IPA-passes.html#Late-IPA-passes" accesskey="n" rel="next">Late IPA passes</a>, Previous: <a href="Small-IPA-passes.html#Small-IPA-passes" accesskey="p" rel="previous">Small IPA passes</a>, Up: <a href="IPA-passes.html#IPA-passes" accesskey="u" rel="up">IPA passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Regular-IPA-passes-1"></a>
+<h4 class="subsection">9.4.2 Regular IPA passes</h4>
+<a name="index-regular-IPA-passes"></a>
+
+<p>A regular IPA pass is a pass derived from <code>ipa_opt_pass_d</code> that
+is executed in WHOPR compilation. Regular IPA passes may have summary
+hooks implemented in any of the LGEN, WPA or LTRANS stages (see <a href="IPA.html#IPA">IPA</a>).
+</p>
+<ul>
+<li> IPA whole program visibility
+
+<p>This pass performs various optimizations involving symbol visibility
+with <samp>-fwhole-program</samp>, including symbol privatization,
+discovering local functions, and dismantling comdat groups. It is
+located in <samp>ipa-visibility.cc</samp> and is described by
+<code>pass_ipa_whole_program_visibility</code>.
+</p>
+</li><li> IPA profile
+
+<p>The IPA profile pass propagates profiling frequencies across the call
+graph. It is located in <samp>ipa-profile.cc</samp> and is described by
+<code>pass_ipa_profile</code>.
+</p>
+</li><li> IPA identical code folding
+
+<p>This is the inter-procedural identical code folding pass.
+The goal of this transformation is to discover functions
+and read-only variables that have exactly the same semantics. It is
+located in <samp>ipa-icf.cc</samp> and is described by <code>pass_ipa_icf</code>.
+</p>
+</li><li> IPA devirtualization
+
+<p>This pass performs speculative devirtualization based on the type
+inheritance graph. When a polymorphic call has only one likely target
+in the unit, it is turned into a speculative call. It is located in
+<samp>ipa-devirt.cc</samp> and is described by <code>pass_ipa_devirt</code>.
+</p>
+</li><li> IPA constant propagation
+
+<p>The goal of this pass is to discover functions that are always invoked
+with some arguments with the same known constant values and to modify
+the functions accordingly. It can also do partial specialization and
+type-based devirtualization. It is located in <samp>ipa-cp.cc</samp> and is
+described by <code>pass_ipa_cp</code>.
+</p>
+</li><li> IPA scalar replacement of aggregates
+
+<p>This pass can replace an aggregate parameter with a set of other parameters
+representing part of the original, turning those passed by reference
+into new ones which pass the value directly. It also removes unused
+function return values and unused function parameters. This pass is
+located in <samp>ipa-sra.cc</samp> and is described by <code>pass_ipa_sra</code>.
+</p>
+</li><li> IPA constructor/destructor merge
+
+<p>This pass merges multiple constructors and destructors for static
+objects into single functions. It&rsquo;s only run at LTO time unless the
+target doesn&rsquo;t support constructors and destructors natively. The
+pass is located in <samp>ipa.cc</samp> and is described by
+<code>pass_ipa_cdtor_merge</code>.
+</p>
+</li><li> IPA function summary
+
+<p>This pass provides function analysis for inter-procedural passes.
+It collects estimates of function body size, execution time, and frame
+size for each function. It also estimates information about function
+calls: call statement size, time and how often the parameters change
+for each call. It is located in <samp>ipa-fnsummary.cc</samp> and is
+described by <code>pass_ipa_fn_summary</code>.
+</p>
+</li><li> IPA inline
+
+<p>The IPA inline pass handles function inlining with whole-program
+knowledge. Small functions that are candidates for inlining are
+ordered in increasing badness, bounded by unit growth parameters.
+Unreachable functions are removed from the call graph. Functions called
+once and not exported from the unit are inlined. This pass is located in
+<samp>ipa-inline.cc</samp> and is described by <code>pass_ipa_inline</code>.
+</p>
+</li><li> IPA pure/const analysis
+
+<p>This pass marks functions as being either const (<code>TREE_READONLY</code>) or
+pure (<code>DECL_PURE_P</code>). The per-function information is produced
+by <code>pure_const_generate_summary</code>, then the global information is computed
+by performing a transitive closure over the call graph. It is located in
+<samp>ipa-pure-const.cc</samp> and is described by <code>pass_ipa_pure_const</code>.
+</p>
+</li><li> IPA free function summary
+
+<p>This pass is a regular IPA pass when argument <code>small_p</code> is false.
+It releases inline function summaries and call summaries.
+It is located in <samp>ipa-fnsummary.cc</samp> and is described by
+<code>pass_ipa_free_fn_summary</code>.
+</p>
+</li><li> IPA reference
+
+<p>This pass gathers information about how variables whose scope is
+confined to the compilation unit are used. It is located in
+<samp>ipa-reference.cc</samp> and is described by <code>pass_ipa_reference</code>.
+</p>
+</li><li> IPA single use
+
+<p>This pass checks whether variables are used by a single function.
+It is located in <samp>ipa.cc</samp> and is described by
+<code>pass_ipa_single_use</code>.
+</p>
+</li><li> IPA comdats
+
+<p>This pass looks for static symbols that are used exclusively
+within one comdat group, and moves them into that comdat group. It is
+located in <samp>ipa-comdats.cc</samp> and is described by
+<code>pass_ipa_comdats</code>.
+</p>
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Late-IPA-passes.html#Late-IPA-passes" accesskey="n" rel="next">Late IPA passes</a>, Previous: <a href="Small-IPA-passes.html#Small-IPA-passes" accesskey="p" rel="previous">Small IPA passes</a>, Up: <a href="IPA-passes.html#IPA-passes" accesskey="u" rel="up">IPA passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Require-Support.html b/share/doc/gccint/Require-Support.html
new file mode 100644
index 0000000..0980177
--- /dev/null
+++ b/share/doc/gccint/Require-Support.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Require Support</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Require Support">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Require Support">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Final-Actions.html#Final-Actions" rel="next" title="Final Actions">
+<link href="Add-Options.html#Add-Options" rel="previous" title="Add Options">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Require-Support"></a>
+<div class="header">
+<p>
+Next: <a href="Final-Actions.html#Final-Actions" accesskey="n" rel="next">Final Actions</a>, Previous: <a href="Add-Options.html#Add-Options" accesskey="p" rel="previous">Add Options</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Variants-of-dg_002drequire_002dsupport"></a>
+<h4 class="subsection">7.2.5 Variants of <code>dg-require-<var>support</var></code></h4>
+
+<p>A few of the <code>dg-require</code> directives take arguments.
+</p>
+<dl compact="compact">
+<dt><code>dg-require-iconv <var>codeset</var></code></dt>
+<dd><p>Skip the test if the target does not support iconv. <var>codeset</var> is
+the codeset to convert to.
+</p>
+</dd>
+<dt><code>dg-require-profiling <var>profopt</var></code></dt>
+<dd><p>Skip the test if the target does not support profiling with option
+<var>profopt</var>.
+</p>
+</dd>
+<dt><code>dg-require-stack-check <var>check</var></code></dt>
+<dd><p>Skip the test if the target does not support the <code>-fstack-check</code>
+option. If <var>check</var> is <code>&quot;&quot;</code>, support for <code>-fstack-check</code>
+is checked, for <code>-fstack-check=(&quot;<var>check</var>&quot;)</code> otherwise.
+</p>
+</dd>
+<dt><code>dg-require-stack-size <var>size</var></code></dt>
+<dd><p>Skip the test if the target does not support a stack size of <var>size</var>.
+</p>
+</dd>
+<dt><code>dg-require-visibility <var>vis</var></code></dt>
+<dd><p>Skip the test if the target does not support the <code>visibility</code> attribute.
+If <var>vis</var> is <code>&quot;&quot;</code>, support for <code>visibility(&quot;hidden&quot;)</code> is
+checked, for <code>visibility(&quot;<var>vis</var>&quot;)</code> otherwise.
+</p></dd>
+</dl>
+
+<p>The original <code>dg-require</code> directives were defined before there
+was support for effective-target keywords. The directives that do not
+take arguments could be replaced with effective-target keywords.
+</p>
+<dl compact="compact">
+<dt><code>dg-require-alias &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support the &lsquo;<samp>alias</samp>&rsquo; attribute.
+</p>
+</dd>
+<dt><code>dg-require-ascii-locale &quot;&quot;</code></dt>
+<dd><p>Skip the test if the host does not support an ASCII locale.
+</p>
+</dd>
+<dt><code>dg-require-compat-dfp &quot;&quot;</code></dt>
+<dd><p>Skip this test unless both compilers in a <samp>compat</samp> testsuite
+support decimal floating point.
+</p>
+</dd>
+<dt><code>dg-require-cxa-atexit &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support <code>__cxa_atexit</code>.
+This is equivalent to <code>dg-require-effective-target cxa_atexit</code>.
+</p>
+</dd>
+<dt><code>dg-require-dll &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support DLL attributes.
+</p>
+</dd>
+<dt><code>dg-require-dot &quot;&quot;</code></dt>
+<dd><p>Skip the test if the host does not have <code>dot</code>.
+</p>
+</dd>
+<dt><code>dg-require-fork &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support <code>fork</code>.
+</p>
+</dd>
+<dt><code>dg-require-gc-sections &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target&rsquo;s linker does not support the
+<code>--gc-sections</code> flags.
+This is equivalent to <code>dg-require-effective-target gc-sections</code>.
+</p>
+</dd>
+<dt><code>dg-require-host-local &quot;&quot;</code></dt>
+<dd><p>Skip the test if the host is remote, rather than the same as the build
+system. Some tests are incompatible with DejaGnu&rsquo;s handling of remote
+hosts, which involves copying the source file to the host and compiling
+it with a relative path and &quot;<code>-o a.out</code>&quot;.
+</p>
+</dd>
+<dt><code>dg-require-mkfifo &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support <code>mkfifo</code>.
+</p>
+</dd>
+<dt><code>dg-require-named-sections &quot;&quot;</code></dt>
+<dd><p>Skip the test is the target does not support named sections.
+This is equivalent to <code>dg-require-effective-target named_sections</code>.
+</p>
+</dd>
+<dt><code>dg-require-weak &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support weak symbols.
+</p>
+</dd>
+<dt><code>dg-require-weak-override &quot;&quot;</code></dt>
+<dd><p>Skip the test if the target does not support overriding weak symbols.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Final-Actions.html#Final-Actions" accesskey="n" rel="next">Final Actions</a>, Previous: <a href="Add-Options.html#Add-Options" accesskey="p" rel="previous">Add Options</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Run_002dtime-Target.html b/share/doc/gccint/Run_002dtime-Target.html
new file mode 100644
index 0000000..434ce9e
--- /dev/null
+++ b/share/doc/gccint/Run_002dtime-Target.html
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Run-time Target</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Run-time Target">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Run-time Target">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Per_002dFunction-Data.html#Per_002dFunction-Data" rel="next" title="Per-Function Data">
+<link href="Driver.html#Driver" rel="previous" title="Driver">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Run_002dtime-Target"></a>
+<div class="header">
+<p>
+Next: <a href="Per_002dFunction-Data.html#Per_002dFunction-Data" accesskey="n" rel="next">Per-Function Data</a>, Previous: <a href="Driver.html#Driver" accesskey="p" rel="previous">Driver</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Run_002dtime-Target-Specification"></a>
+<h3 class="section">18.3 Run-time Target Specification</h3>
+<a name="index-run_002dtime-target-specification"></a>
+<a name="index-predefined-macros"></a>
+<a name="index-target-specifications"></a>
+
+<p>Here are run-time target specifications.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fCPU_005fCPP_005fBUILTINS"></a>Macro: <strong>TARGET_CPU_CPP_BUILTINS</strong> <em>()</em></dt>
+<dd><p>This function-like macro expands to a block of code that defines
+built-in preprocessor macros and assertions for the target CPU, using
+the functions <code>builtin_define</code>, <code>builtin_define_std</code> and
+<code>builtin_assert</code>. When the front end
+calls this macro it provides a trailing semicolon, and since it has
+finished command line option processing your code can use those
+results freely.
+</p>
+<p><code>builtin_assert</code> takes a string in the form you pass to the
+command-line option <samp>-A</samp>, such as <code>cpu=mips</code>, and creates
+the assertion. <code>builtin_define</code> takes a string in the form
+accepted by option <samp>-D</samp> and unconditionally defines the macro.
+</p>
+<p><code>builtin_define_std</code> takes a string representing the name of an
+object-like macro. If it doesn&rsquo;t lie in the user&rsquo;s namespace,
+<code>builtin_define_std</code> defines it unconditionally. Otherwise, it
+defines a version with two leading underscores, and another version
+with two leading and trailing underscores, and defines the original
+only if an ISO standard was not requested on the command line. For
+example, passing <code>unix</code> defines <code>__unix</code>, <code>__unix__</code>
+and possibly <code>unix</code>; passing <code>_mips</code> defines <code>__mips</code>,
+<code>__mips__</code> and possibly <code>_mips</code>, and passing <code>_ABI64</code>
+defines only <code>_ABI64</code>.
+</p>
+<p>You can also test for the C dialect being compiled. The variable
+<code>c_language</code> is set to one of <code>clk_c</code>, <code>clk_cplusplus</code>
+or <code>clk_objective_c</code>. Note that if we are preprocessing
+assembler, this variable will be <code>clk_c</code> but the function-like
+macro <code>preprocessing_asm_p()</code> will return true, so you might want
+to check for that first. If you need to check for strict ANSI, the
+variable <code>flag_iso</code> can be used. The function-like macro
+<code>preprocessing_trad_p()</code> can be used to check for traditional
+preprocessing.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOS_005fCPP_005fBUILTINS"></a>Macro: <strong>TARGET_OS_CPP_BUILTINS</strong> <em>()</em></dt>
+<dd><p>Similarly to <code>TARGET_CPU_CPP_BUILTINS</code> but this macro is optional
+and is used for the target operating system instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOBJFMT_005fCPP_005fBUILTINS"></a>Macro: <strong>TARGET_OBJFMT_CPP_BUILTINS</strong> <em>()</em></dt>
+<dd><p>Similarly to <code>TARGET_CPU_CPP_BUILTINS</code> but this macro is optional
+and is used for the target object format. <samp>elfos.h</samp> uses this
+macro to define <code>__ELF__</code>, so you probably do not need to define
+it yourself.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-target_005fflags"></a>Variable: <em>extern int</em> <strong>target_flags</strong></dt>
+<dd><p>This variable is declared in <samp>options.h</samp>, which is included before
+any target-specific headers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDEFAULT_005fTARGET_005fFLAGS"></a>Common Target Hook: <em>int</em> <strong>TARGET_DEFAULT_TARGET_FLAGS</strong></dt>
+<dd><p>This variable specifies the initial value of <code>target_flags</code>.
+Its default setting is 0.
+</p></dd></dl>
+
+<a name="index-optional-hardware-or-system-features"></a>
+<a name="index-features_002c-optional_002c-in-system-conventions"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fHANDLE_005fOPTION"></a>Common Target Hook: <em>bool</em> <strong>TARGET_HANDLE_OPTION</strong> <em>(struct gcc_options *<var>opts</var>, struct gcc_options *<var>opts_set</var>, const struct cl_decoded_option *<var>decoded</var>, location_t <var>loc</var>)</em></dt>
+<dd><p>This hook is called whenever the user specifies one of the
+target-specific options described by the <samp>.opt</samp> definition files
+(see <a href="Options.html#Options">Options</a>). It has the opportunity to do some option-specific
+processing and should return true if the option is valid. The default
+definition does nothing but return true.
+</p>
+<p><var>decoded</var> specifies the option and its arguments. <var>opts</var> and
+<var>opts_set</var> are the <code>gcc_options</code> structures to be used for
+storing option state, and <var>loc</var> is the location at which the
+option was passed (<code>UNKNOWN_LOCATION</code> except for options passed
+via attributes).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHANDLE_005fC_005fOPTION"></a>C Target Hook: <em>bool</em> <strong>TARGET_HANDLE_C_OPTION</strong> <em>(size_t <var>code</var>, const char *<var>arg</var>, int <var>value</var>)</em></dt>
+<dd><p>This target hook is called whenever the user specifies one of the
+target-specific C language family options described by the <samp>.opt</samp>
+definition files(see <a href="Options.html#Options">Options</a>). It has the opportunity to do some
+option-specific processing and should return true if the option is
+valid. The arguments are like for <code>TARGET_HANDLE_OPTION</code>. The
+default definition does nothing but return false.
+</p>
+<p>In general, you should use <code>TARGET_HANDLE_OPTION</code> to handle
+options. However, if processing an option requires routines that are
+only available in the C (and related language) front ends, then you
+should use <code>TARGET_HANDLE_C_OPTION</code> instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOBJC_005fCONSTRUCT_005fSTRING_005fOBJECT"></a>C Target Hook: <em>tree</em> <strong>TARGET_OBJC_CONSTRUCT_STRING_OBJECT</strong> <em>(tree <var>string</var>)</em></dt>
+<dd><p>Targets may provide a string object type that can be used within
+and between C, C++ and their respective Objective-C dialects.
+A string object might, for example, embed encoding and length information.
+These objects are considered opaque to the compiler and handled as references.
+An ideal implementation makes the composition of the string object
+match that of the Objective-C <code>NSString</code> (<code>NXString</code> for GNUStep),
+allowing efficient interworking between C-only and Objective-C code.
+If a target implements string objects then this hook should return a
+reference to such an object constructed from the normal &lsquo;C&rsquo; string
+representation provided in <var>string</var>.
+At present, the hook is used by Objective-C only, to obtain a
+ common-format string object when the target provides one.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOBJC_005fDECLARE_005fUNRESOLVED_005fCLASS_005fREFERENCE"></a>C Target Hook: <em>void</em> <strong>TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE</strong> <em>(const char *<var>classname</var>)</em></dt>
+<dd><p>Declare that Objective C class <var>classname</var> is referenced
+by the current TU.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOBJC_005fDECLARE_005fCLASS_005fDEFINITION"></a>C Target Hook: <em>void</em> <strong>TARGET_OBJC_DECLARE_CLASS_DEFINITION</strong> <em>(const char *<var>classname</var>)</em></dt>
+<dd><p>Declare that Objective C class <var>classname</var> is defined
+by the current TU.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTRING_005fOBJECT_005fREF_005fTYPE_005fP"></a>C Target Hook: <em>bool</em> <strong>TARGET_STRING_OBJECT_REF_TYPE_P</strong> <em>(const_tree <var>stringref</var>)</em></dt>
+<dd><p>If a target implements string objects then this hook should return
+<code>true</code> if <var>stringref</var> is a valid reference to such an object.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCHECK_005fSTRING_005fOBJECT_005fFORMAT_005fARG"></a>C Target Hook: <em>void</em> <strong>TARGET_CHECK_STRING_OBJECT_FORMAT_ARG</strong> <em>(tree <var>format_arg</var>, tree <var>args_list</var>)</em></dt>
+<dd><p>If a target implements string objects then this hook should
+provide a facility to check the function arguments in <var>args_list</var>
+against the format specifiers in <var>format_arg</var> where the type of
+<var>format_arg</var> is one recognized as a valid string reference type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOVERRIDE_005fOPTIONS_005fAFTER_005fCHANGE"></a>Target Hook: <em>void</em> <strong>TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE</strong> <em>(void)</em></dt>
+<dd><p>This target function is similar to the hook <code>TARGET_OPTION_OVERRIDE</code>
+but is called when the optimize level is changed via an attribute or
+pragma or when it is reset at the end of the code affected by the
+attribute or pragma. It is not called at the beginning of compilation
+when <code>TARGET_OPTION_OVERRIDE</code> is called so if you want to perform these
+actions then, you should have <code>TARGET_OPTION_OVERRIDE</code> call
+<code>TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-C_005fCOMMON_005fOVERRIDE_005fOPTIONS"></a>Macro: <strong>C_COMMON_OVERRIDE_OPTIONS</strong></dt>
+<dd><p>This is similar to the <code>TARGET_OPTION_OVERRIDE</code> hook
+but is only used in the C
+language frontends (C, Objective-C, C++, Objective-C++) and so can be
+used to alter option flag variables which only exist in those
+frontends.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fOPTIMIZATION_005fTABLE"></a>Common Target Hook: <em>const struct default_options *</em> <strong>TARGET_OPTION_OPTIMIZATION_TABLE</strong></dt>
+<dd><p>Some machines may desire to change what optimizations are performed for
+various optimization levels. This variable, if defined, describes
+options to enable at particular sets of optimization levels. These
+options are processed once
+just after the optimization level is determined and before the remainder
+of the command options have been parsed, so may be overridden by other
+options passed explicitly.
+</p>
+<p>This processing is run once at program startup and when the optimization
+options are changed via <code>#pragma GCC optimize</code> or by using the
+<code>optimize</code> attribute.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fINIT_005fSTRUCT"></a>Common Target Hook: <em>void</em> <strong>TARGET_OPTION_INIT_STRUCT</strong> <em>(struct gcc_options *<var>opts</var>)</em></dt>
+<dd><p>Set target-dependent initial values of fields in <var>opts</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMPUTE_005fMULTILIB"></a>Common Target Hook: <em>const char *</em> <strong>TARGET_COMPUTE_MULTILIB</strong> <em>(const struct switchstr *<var>switches</var>, int <var>n_switches</var>, const char *<var>multilib_dir</var>, const char *<var>multilib_defaults</var>, const char *<var>multilib_select</var>, const char *<var>multilib_matches</var>, const char *<var>multilib_exclusions</var>, const char *<var>multilib_reuse</var>)</em></dt>
+<dd><p>Some targets like RISC-V might have complicated multilib reuse rules which
+are hard to implement with the current multilib scheme. This hook allows
+targets to override the result from the built-in multilib mechanism.
+<var>switches</var> is the raw option list with <var>n_switches</var> items;
+<var>multilib_dir</var> is the multi-lib result which is computed by the built-in
+multi-lib mechanism;
+<var>multilib_defaults</var> is the default options list for multi-lib;
+<var>multilib_select</var> is the string containing the list of supported
+multi-libs, and the option checking list.
+<var>multilib_matches</var>, <var>multilib_exclusions</var>, and <var>multilib_reuse</var>
+are corresponding to <var>MULTILIB_MATCHES</var>, <var>MULTILIB_EXCLUSIONS</var>,
+and <var>MULTILIB_REUSE</var>.
+The default definition does nothing but return <var>multilib_dir</var> directly.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-SWITCHABLE_005fTARGET"></a>Macro: <strong>SWITCHABLE_TARGET</strong></dt>
+<dd><p>Some targets need to switch between substantially different subtargets
+during compilation. For example, the MIPS target has one subtarget for
+the traditional MIPS architecture and another for MIPS16. Source code
+can switch between these two subarchitectures using the <code>mips16</code>
+and <code>nomips16</code> attributes.
+</p>
+<p>Such subtargets can differ in things like the set of available
+registers, the set of available instructions, the costs of various
+operations, and so on. GCC caches a lot of this type of information
+in global variables, and recomputing them for each subtarget takes a
+significant amount of time. The compiler therefore provides a facility
+for maintaining several versions of the global variables and quickly
+switching between them; see <samp>target-globals.h</samp> for details.
+</p>
+<p>Define this macro to 1 if your target needs this facility. The default
+is 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFLOAT_005fEXCEPTIONS_005fROUNDING_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P</strong> <em>(void)</em></dt>
+<dd><p>Returns true if the target supports IEEE 754 floating-point exceptions
+and rounding modes, false otherwise. This is intended to relate to the
+<code>float</code> and <code>double</code> types, but not necessarily <code>long double</code>.
+By default, returns true if the <code>adddf3</code> instruction pattern is
+available and false otherwise, on the assumption that hardware floating
+point supports exceptions and rounding modes but software floating point
+does not.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Per_002dFunction-Data.html#Per_002dFunction-Data" accesskey="n" rel="next">Per-Function Data</a>, Previous: <a href="Driver.html#Driver" accesskey="p" rel="previous">Driver</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/SSA-Operands.html b/share/doc/gccint/SSA-Operands.html
new file mode 100644
index 0000000..0c8d374
--- /dev/null
+++ b/share/doc/gccint/SSA-Operands.html
@@ -0,0 +1,471 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: SSA Operands</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: SSA Operands">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: SSA Operands">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-SSA.html#Tree-SSA" rel="up" title="Tree SSA">
+<link href="SSA.html#SSA" rel="next" title="SSA">
+<link href="Annotations.html#Annotations" rel="previous" title="Annotations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="SSA-Operands"></a>
+<div class="header">
+<p>
+Next: <a href="SSA.html#SSA" accesskey="n" rel="next">SSA</a>, Previous: <a href="Annotations.html#Annotations" accesskey="p" rel="previous">Annotations</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="SSA-Operands-1"></a>
+<h3 class="section">13.2 SSA Operands</h3>
+<a name="index-operands"></a>
+<a name="index-virtual-operands"></a>
+<a name="index-real-operands"></a>
+<a name="index-update_005fstmt-1"></a>
+
+<p>Almost every GIMPLE statement will contain a reference to a variable
+or memory location. Since statements come in different shapes and
+sizes, their operands are going to be located at various spots inside
+the statement&rsquo;s tree. To facilitate access to the statement&rsquo;s
+operands, they are organized into lists associated inside each
+statement&rsquo;s annotation. Each element in an operand list is a pointer
+to a <code>VAR_DECL</code>, <code>PARM_DECL</code> or <code>SSA_NAME</code> tree node.
+This provides a very convenient way of examining and replacing
+operands.
+</p>
+<p>Data flow analysis and optimization is done on all tree nodes
+representing variables. Any node for which <code>SSA_VAR_P</code> returns
+nonzero is considered when scanning statement operands. However, not
+all <code>SSA_VAR_P</code> variables are processed in the same way. For the
+purposes of optimization, we need to distinguish between references to
+local scalar variables and references to globals, statics, structures,
+arrays, aliased variables, etc. The reason is simple, the compiler
+can gather complete data flow information for a local scalar. On the
+other hand, a global variable may be modified by a function call, it
+may not be possible to keep track of all the elements of an array or
+the fields of a structure, etc.
+</p>
+<p>The operand scanner gathers two kinds of operands: <em>real</em> and
+<em>virtual</em>. An operand for which <code>is_gimple_reg</code> returns true
+is considered real, otherwise it is a virtual operand. We also
+distinguish between uses and definitions. An operand is used if its
+value is loaded by the statement (e.g., the operand at the RHS of an
+assignment). If the statement assigns a new value to the operand, the
+operand is considered a definition (e.g., the operand at the LHS of
+an assignment).
+</p>
+<p>Virtual and real operands also have very different data flow
+properties. Real operands are unambiguous references to the
+full object that they represent. For instance, given
+</p>
+<div class="smallexample">
+<pre class="smallexample">{
+ int a, b;
+ a = b
+}
+</pre></div>
+
+<p>Since <code>a</code> and <code>b</code> are non-aliased locals, the statement
+<code>a = b</code> will have one real definition and one real use because
+variable <code>a</code> is completely modified with the contents of
+variable <code>b</code>. Real definition are also known as <em>killing
+definitions</em>. Similarly, the use of <code>b</code> reads all its bits.
+</p>
+<p>In contrast, virtual operands are used with variables that can have
+a partial or ambiguous reference. This includes structures, arrays,
+globals, and aliased variables. In these cases, we have two types of
+definitions. For globals, structures, and arrays, we can determine from
+a statement whether a variable of these types has a killing definition.
+If the variable does, then the statement is marked as having a
+<em>must definition</em> of that variable. However, if a statement is only
+defining a part of the variable (i.e. a field in a structure), or if we
+know that a statement might define the variable but we cannot say for sure,
+then we mark that statement as having a <em>may definition</em>. For
+instance, given
+</p>
+<div class="smallexample">
+<pre class="smallexample">{
+ int a, b, *p;
+
+ if (&hellip;)
+ p = &amp;a;
+ else
+ p = &amp;b;
+ *p = 5;
+ return *p;
+}
+</pre></div>
+
+<p>The assignment <code>*p = 5</code> may be a definition of <code>a</code> or
+<code>b</code>. If we cannot determine statically where <code>p</code> is
+pointing to at the time of the store operation, we create virtual
+definitions to mark that statement as a potential definition site for
+<code>a</code> and <code>b</code>. Memory loads are similarly marked with virtual
+use operands. Virtual operands are shown in tree dumps right before
+the statement that contains them. To request a tree dump with virtual
+operands, use the <samp>-vops</samp> option to <samp>-fdump-tree</samp>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{
+ int a, b, *p;
+
+ if (&hellip;)
+ p = &amp;a;
+ else
+ p = &amp;b;
+ # a = VDEF &lt;a&gt;
+ # b = VDEF &lt;b&gt;
+ *p = 5;
+
+ # VUSE &lt;a&gt;
+ # VUSE &lt;b&gt;
+ return *p;
+}
+</pre></div>
+
+<p>Notice that <code>VDEF</code> operands have two copies of the referenced
+variable. This indicates that this is not a killing definition of
+that variable. In this case we refer to it as a <em>may definition</em>
+or <em>aliased store</em>. The presence of the second copy of the
+variable in the <code>VDEF</code> operand will become important when the
+function is converted into SSA form. This will be used to link all
+the non-killing definitions to prevent optimizations from making
+incorrect assumptions about them.
+</p>
+<p>Operands are updated as soon as the statement is finished via a call
+to <code>update_stmt</code>. If statement elements are changed via
+<code>SET_USE</code> or <code>SET_DEF</code>, then no further action is required
+(i.e., those macros take care of updating the statement). If changes
+are made by manipulating the statement&rsquo;s tree directly, then a call
+must be made to <code>update_stmt</code> when complete. Calling one of the
+<code>bsi_insert</code> routines or <code>bsi_replace</code> performs an implicit
+call to <code>update_stmt</code>.
+</p>
+<a name="Operand-Iterators-And-Access-Routines"></a>
+<h4 class="subsection">13.2.1 Operand Iterators And Access Routines</h4>
+<a name="index-Operand-Iterators"></a>
+<a name="index-Operand-Access-Routines"></a>
+
+<p>Operands are collected by <samp>tree-ssa-operands.cc</samp>. They are stored
+inside each statement&rsquo;s annotation and can be accessed through either the
+operand iterators or an access routine.
+</p>
+<p>The following access routines are available for examining operands:
+</p>
+<ol>
+<li> <code>SINGLE_SSA_{USE,DEF,TREE}_OPERAND</code>: These accessors will return
+NULL unless there is exactly one operand matching the specified flags. If
+there is exactly one operand, the operand is returned as either a <code>tree</code>,
+<code>def_operand_p</code>, or <code>use_operand_p</code>.
+
+<div class="smallexample">
+<pre class="smallexample">tree t = SINGLE_SSA_TREE_OPERAND (stmt, flags);
+use_operand_p u = SINGLE_SSA_USE_OPERAND (stmt, SSA_ALL_VIRTUAL_USES);
+def_operand_p d = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_ALL_DEFS);
+</pre></div>
+
+</li><li> <code>ZERO_SSA_OPERANDS</code>: This macro returns true if there are no
+operands matching the specified flags.
+
+<div class="smallexample">
+<pre class="smallexample">if (ZERO_SSA_OPERANDS (stmt, SSA_OP_ALL_VIRTUALS))
+ return;
+</pre></div>
+
+</li><li> <code>NUM_SSA_OPERANDS</code>: This macro Returns the number of operands
+matching &rsquo;flags&rsquo;. This actually executes a loop to perform the count, so
+only use this if it is really needed.
+
+<div class="smallexample">
+<pre class="smallexample">int count = NUM_SSA_OPERANDS (stmt, flags)
+</pre></div>
+</li></ol>
+
+
+<p>If you wish to iterate over some or all operands, use the
+<code>FOR_EACH_SSA_{USE,DEF,TREE}_OPERAND</code> iterator. For example, to print
+all the operands for a statement:
+</p>
+<div class="smallexample">
+<pre class="smallexample">void
+print_ops (tree stmt)
+{
+ ssa_op_iter;
+ tree var;
+
+ FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_ALL_OPERANDS)
+ print_generic_expr (stderr, var, TDF_SLIM);
+}
+</pre></div>
+
+
+<p>How to choose the appropriate iterator:
+</p>
+<ol>
+<li> Determine whether you are need to see the operand pointers, or just the
+trees, and choose the appropriate macro:
+
+<div class="smallexample">
+<pre class="smallexample">Need Macro:
+---- -------
+use_operand_p FOR_EACH_SSA_USE_OPERAND
+def_operand_p FOR_EACH_SSA_DEF_OPERAND
+tree FOR_EACH_SSA_TREE_OPERAND
+</pre></div>
+
+</li><li> You need to declare a variable of the type you are interested
+in, and an ssa_op_iter structure which serves as the loop controlling
+variable.
+
+</li><li> Determine which operands you wish to use, and specify the flags of
+those you are interested in. They are documented in
+<samp>tree-ssa-operands.h</samp>:
+
+<div class="smallexample">
+<pre class="smallexample">#define SSA_OP_USE 0x01 /* <span class="roman">Real USE operands.</span> */
+#define SSA_OP_DEF 0x02 /* <span class="roman">Real DEF operands.</span> */
+#define SSA_OP_VUSE 0x04 /* <span class="roman">VUSE operands.</span> */
+#define SSA_OP_VDEF 0x08 /* <span class="roman">VDEF operands.</span> */
+
+/* <span class="roman">These are commonly grouped operand flags.</span> */
+#define SSA_OP_VIRTUAL_USES (SSA_OP_VUSE)
+#define SSA_OP_VIRTUAL_DEFS (SSA_OP_VDEF)
+#define SSA_OP_ALL_VIRTUALS (SSA_OP_VIRTUAL_USES | SSA_OP_VIRTUAL_DEFS)
+#define SSA_OP_ALL_USES (SSA_OP_VIRTUAL_USES | SSA_OP_USE)
+#define SSA_OP_ALL_DEFS (SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF)
+#define SSA_OP_ALL_OPERANDS (SSA_OP_ALL_USES | SSA_OP_ALL_DEFS)
+</pre></div>
+</li></ol>
+
+<p>So if you want to look at the use pointers for all the <code>USE</code> and
+<code>VUSE</code> operands, you would do something like:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> use_operand_p use_p;
+ ssa_op_iter iter;
+
+ FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, (SSA_OP_USE | SSA_OP_VUSE))
+ {
+ process_use_ptr (use_p);
+ }
+</pre></div>
+
+<p>The <code>TREE</code> macro is basically the same as the <code>USE</code> and
+<code>DEF</code> macros, only with the use or def dereferenced via
+<code>USE_FROM_PTR (use_p)</code> and <code>DEF_FROM_PTR (def_p)</code>. Since we
+aren&rsquo;t using operand pointers, use and defs flags can be mixed.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> tree var;
+ ssa_op_iter iter;
+
+ FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_VUSE)
+ {
+ print_generic_expr (stderr, var, TDF_SLIM);
+ }
+</pre></div>
+
+<p><code>VDEF</code>s are broken into two flags, one for the
+<code>DEF</code> portion (<code>SSA_OP_VDEF</code>) and one for the USE portion
+(<code>SSA_OP_VUSE</code>).
+</p>
+<p>There are many examples in the code, in addition to the documentation
+in <samp>tree-ssa-operands.h</samp> and <samp>ssa-iterators.h</samp>.
+</p>
+<p>There are also a couple of variants on the stmt iterators regarding PHI
+nodes.
+</p>
+<p><code>FOR_EACH_PHI_ARG</code> Works exactly like
+<code>FOR_EACH_SSA_USE_OPERAND</code>, except it works over <code>PHI</code> arguments
+instead of statement operands.
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* Look at every virtual PHI use. */
+FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_VIRTUAL_USES)
+{
+ my_code;
+}
+
+/* Look at every real PHI use. */
+FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_USES)
+ my_code;
+
+/* Look at every PHI use. */
+FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_ALL_USES)
+ my_code;
+</pre></div>
+
+<p><code>FOR_EACH_PHI_OR_STMT_{USE,DEF}</code> works exactly like
+<code>FOR_EACH_SSA_{USE,DEF}_OPERAND</code>, except it will function on
+either a statement or a <code>PHI</code> node. These should be used when it is
+appropriate but they are not quite as efficient as the individual
+<code>FOR_EACH_PHI</code> and <code>FOR_EACH_SSA</code> routines.
+</p>
+<div class="smallexample">
+<pre class="smallexample">FOR_EACH_PHI_OR_STMT_USE (use_operand_p, stmt, iter, flags)
+ {
+ my_code;
+ }
+
+FOR_EACH_PHI_OR_STMT_DEF (def_operand_p, phi, iter, flags)
+ {
+ my_code;
+ }
+</pre></div>
+
+<a name="Immediate-Uses"></a>
+<h4 class="subsection">13.2.2 Immediate Uses</h4>
+<a name="index-Immediate-Uses"></a>
+
+<p>Immediate use information is now always available. Using the immediate use
+iterators, you may examine every use of any <code>SSA_NAME</code>. For instance,
+to change each use of <code>ssa_var</code> to <code>ssa_var2</code> and call fold_stmt on
+each stmt after that is done:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> use_operand_p imm_use_p;
+ imm_use_iterator iterator;
+ tree ssa_var, stmt;
+
+
+ FOR_EACH_IMM_USE_STMT (stmt, iterator, ssa_var)
+ {
+ FOR_EACH_IMM_USE_ON_STMT (imm_use_p, iterator)
+ SET_USE (imm_use_p, ssa_var_2);
+ fold_stmt (stmt);
+ }
+</pre></div>
+
+<p>There are 2 iterators which can be used. <code>FOR_EACH_IMM_USE_FAST</code> is
+used when the immediate uses are not changed, i.e., you are looking at the
+uses, but not setting them.
+</p>
+<p>If they do get changed, then care must be taken that things are not changed
+under the iterators, so use the <code>FOR_EACH_IMM_USE_STMT</code> and
+<code>FOR_EACH_IMM_USE_ON_STMT</code> iterators. They attempt to preserve the
+sanity of the use list by moving all the uses for a statement into
+a controlled position, and then iterating over those uses. Then the
+optimization can manipulate the stmt when all the uses have been
+processed. This is a little slower than the FAST version since it adds a
+placeholder element and must sort through the list a bit for each statement.
+This placeholder element must be also be removed if the loop is
+terminated early; a destructor takes care of that when leaving the
+<code>FOR_EACH_IMM_USE_STMT</code> scope.
+</p>
+<p>There are checks in <code>verify_ssa</code> which verify that the immediate use list
+is up to date, as well as checking that an optimization didn&rsquo;t break from the
+loop without using this macro. It is safe to simply &rsquo;break&rsquo;; from a
+<code>FOR_EACH_IMM_USE_FAST</code> traverse.
+</p>
+<p>Some useful functions and macros:
+</p><ol>
+<li> <code>has_zero_uses (ssa_var)</code> : Returns true if there are no uses of
+<code>ssa_var</code>.
+</li><li> <code>has_single_use (ssa_var)</code> : Returns true if there is only a
+single use of <code>ssa_var</code>.
+</li><li> <code>single_imm_use (ssa_var, use_operand_p *ptr, tree *stmt)</code> :
+Returns true if there is only a single use of <code>ssa_var</code>, and also returns
+the use pointer and statement it occurs in, in the second and third parameters.
+</li><li> <code>num_imm_uses (ssa_var)</code> : Returns the number of immediate uses of
+<code>ssa_var</code>. It is better not to use this if possible since it simply
+utilizes a loop to count the uses.
+</li><li> <code>PHI_ARG_INDEX_FROM_USE (use_p)</code> : Given a use within a <code>PHI</code>
+node, return the index number for the use. An assert is triggered if the use
+isn&rsquo;t located in a <code>PHI</code> node.
+</li><li> <code>USE_STMT (use_p)</code> : Return the statement a use occurs in.
+</li></ol>
+
+<p>Note that uses are not put into an immediate use list until their statement is
+actually inserted into the instruction stream via a <code>bsi_*</code> routine.
+</p>
+<p>It is also still possible to utilize lazy updating of statements, but this
+should be used only when absolutely required. Both alias analysis and the
+dominator optimizations currently do this.
+</p>
+<p>When lazy updating is being used, the immediate use information is out of date
+and cannot be used reliably. Lazy updating is achieved by simply marking
+statements modified via calls to <code>gimple_set_modified</code> instead of
+<code>update_stmt</code>. When lazy updating is no longer required, all the
+modified statements must have <code>update_stmt</code> called in order to bring them
+up to date. This must be done before the optimization is finished, or
+<code>verify_ssa</code> will trigger an abort.
+</p>
+<p>This is done with a simple loop over the instruction stream:
+</p><div class="smallexample">
+<pre class="smallexample"> block_stmt_iterator bsi;
+ basic_block bb;
+ FOR_EACH_BB (bb)
+ {
+ for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&amp;bsi))
+ update_stmt_if_modified (bsi_stmt (bsi));
+ }
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="SSA.html#SSA" accesskey="n" rel="next">SSA</a>, Previous: <a href="Annotations.html#Annotations" accesskey="p" rel="previous">Annotations</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/SSA.html b/share/doc/gccint/SSA.html
new file mode 100644
index 0000000..53bd3ff
--- /dev/null
+++ b/share/doc/gccint/SSA.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: SSA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: SSA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: SSA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tree-SSA.html#Tree-SSA" rel="up" title="Tree SSA">
+<link href="Alias-analysis.html#Alias-analysis" rel="next" title="Alias analysis">
+<link href="SSA-Operands.html#SSA-Operands" rel="previous" title="SSA Operands">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="SSA"></a>
+<div class="header">
+<p>
+Next: <a href="Alias-analysis.html#Alias-analysis" accesskey="n" rel="next">Alias analysis</a>, Previous: <a href="SSA-Operands.html#SSA-Operands" accesskey="p" rel="previous">SSA Operands</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Static-Single-Assignment"></a>
+<h3 class="section">13.3 Static Single Assignment</h3>
+<a name="index-SSA"></a>
+<a name="index-static-single-assignment"></a>
+
+<p>Most of the tree optimizers rely on the data flow information provided
+by the Static Single Assignment (SSA) form. We implement the SSA form
+as described in <cite>R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and
+K. Zadeck. Efficiently Computing Static Single Assignment Form and the
+Control Dependence Graph. ACM Transactions on Programming Languages
+and Systems, 13(4):451-490, October 1991</cite>.
+</p>
+<p>The SSA form is based on the premise that program variables are
+assigned in exactly one location in the program. Multiple assignments
+to the same variable create new versions of that variable. Naturally,
+actual programs are seldom in SSA form initially because variables
+tend to be assigned multiple times. The compiler modifies the program
+representation so that every time a variable is assigned in the code,
+a new version of the variable is created. Different versions of the
+same variable are distinguished by subscripting the variable name with
+its version number. Variables used in the right-hand side of
+expressions are renamed so that their version number matches that of
+the most recent assignment.
+</p>
+<p>We represent variable versions using <code>SSA_NAME</code> nodes. The
+renaming process in <samp>tree-ssa.cc</samp> wraps every real and
+virtual operand with an <code>SSA_NAME</code> node which contains
+the version number and the statement that created the
+<code>SSA_NAME</code>. Only definitions and virtual definitions may
+create new <code>SSA_NAME</code> nodes.
+</p>
+<a name="index-PHI-nodes"></a>
+<p>Sometimes, flow of control makes it impossible to determine the
+most recent version of a variable. In these cases, the compiler
+inserts an artificial definition for that variable called
+<em>PHI function</em> or <em>PHI node</em>. This new definition merges
+all the incoming versions of the variable to create a new name
+for it. For instance,
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (&hellip;)
+ a_1 = 5;
+else if (&hellip;)
+ a_2 = 2;
+else
+ a_3 = 13;
+
+# a_4 = PHI &lt;a_1, a_2, a_3&gt;
+return a_4;
+</pre></div>
+
+<p>Since it is not possible to determine which of the three branches
+will be taken at runtime, we don&rsquo;t know which of <code>a_1</code>,
+<code>a_2</code> or <code>a_3</code> to use at the return statement. So, the
+SSA renamer creates a new version <code>a_4</code> which is assigned
+the result of &ldquo;merging&rdquo; <code>a_1</code>, <code>a_2</code> and <code>a_3</code>.
+Hence, PHI nodes mean &ldquo;one of these operands. I don&rsquo;t know
+which&rdquo;.
+</p>
+<p>The following functions can be used to examine PHI nodes
+</p>
+<dl>
+<dt><a name="index-gimple_005fphi_005fresult-1"></a>Function: <strong>gimple_phi_result</strong> <em>(<var>phi</var>)</em></dt>
+<dd><p>Returns the <code>SSA_NAME</code> created by PHI node <var>phi</var> (i.e.,
+<var>phi</var>&rsquo;s LHS).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005fnum_005fargs-1"></a>Function: <strong>gimple_phi_num_args</strong> <em>(<var>phi</var>)</em></dt>
+<dd><p>Returns the number of arguments in <var>phi</var>. This number is exactly
+the number of incoming edges to the basic block holding <var>phi</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005farg-1"></a>Function: <strong>gimple_phi_arg</strong> <em>(<var>phi</var>, <var>i</var>)</em></dt>
+<dd><p>Returns <var>i</var>th argument of <var>phi</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005farg_005fedge"></a>Function: <strong>gimple_phi_arg_edge</strong> <em>(<var>phi</var>, <var>i</var>)</em></dt>
+<dd><p>Returns the incoming edge for the <var>i</var>th argument of <var>phi</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gimple_005fphi_005farg_005fdef"></a>Function: <strong>gimple_phi_arg_def</strong> <em>(<var>phi</var>, <var>i</var>)</em></dt>
+<dd><p>Returns the <code>SSA_NAME</code> for the <var>i</var>th argument of <var>phi</var>.
+</p></dd></dl>
+
+
+<a name="Preserving-the-SSA-form"></a>
+<h4 class="subsection">13.3.1 Preserving the SSA form</h4>
+<a name="index-update_005fssa"></a>
+<a name="index-preserving-SSA-form"></a>
+<p>Some optimization passes make changes to the function that
+invalidate the SSA property. This can happen when a pass has
+added new symbols or changed the program so that variables that
+were previously aliased aren&rsquo;t anymore. Whenever something like this
+happens, the affected symbols must be renamed into SSA form again.
+Transformations that emit new code or replicate existing statements
+will also need to update the SSA form.
+</p>
+<p>Since GCC implements two different SSA forms for register and virtual
+variables, keeping the SSA form up to date depends on whether you are
+updating register or virtual names. In both cases, the general idea
+behind incremental SSA updates is similar: when new SSA names are
+created, they typically are meant to replace other existing names in
+the program.
+</p>
+<p>For instance, given the following code:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> 1 L0:
+ 2 x_1 = PHI (0, x_5)
+ 3 if (x_1 &lt; 10)
+ 4 if (x_1 &gt; 7)
+ 5 y_2 = 0
+ 6 else
+ 7 y_3 = x_1 + x_7
+ 8 endif
+ 9 x_5 = x_1 + 1
+ 10 goto L0;
+ 11 endif
+</pre></div>
+
+<p>Suppose that we insert new names <code>x_10</code> and <code>x_11</code> (lines
+<code>4</code> and <code>8</code>).
+</p>
+<div class="smallexample">
+<pre class="smallexample"> 1 L0:
+ 2 x_1 = PHI (0, x_5)
+ 3 if (x_1 &lt; 10)
+ 4 x_10 = &hellip;
+ 5 if (x_1 &gt; 7)
+ 6 y_2 = 0
+ 7 else
+ 8 x_11 = &hellip;
+ 9 y_3 = x_1 + x_7
+ 10 endif
+ 11 x_5 = x_1 + 1
+ 12 goto L0;
+ 13 endif
+</pre></div>
+
+<p>We want to replace all the uses of <code>x_1</code> with the new definitions
+of <code>x_10</code> and <code>x_11</code>. Note that the only uses that should
+be replaced are those at lines <code>5</code>, <code>9</code> and <code>11</code>.
+Also, the use of <code>x_7</code> at line <code>9</code> should <em>not</em> be
+replaced (this is why we cannot just mark symbol <code>x</code> for
+renaming).
+</p>
+<p>Additionally, we may need to insert a PHI node at line <code>11</code>
+because that is a merge point for <code>x_10</code> and <code>x_11</code>. So the
+use of <code>x_1</code> at line <code>11</code> will be replaced with the new PHI
+node. The insertion of PHI nodes is optional. They are not strictly
+necessary to preserve the SSA form, and depending on what the caller
+inserted, they may not even be useful for the optimizers.
+</p>
+<p>Updating the SSA form is a two step process. First, the pass has to
+identify which names need to be updated and/or which symbols need to
+be renamed into SSA form for the first time. When new names are
+introduced to replace existing names in the program, the mapping
+between the old and the new names are registered by calling
+<code>register_new_name_mapping</code> (note that if your pass creates new
+code by duplicating basic blocks, the call to <code>tree_duplicate_bb</code>
+will set up the necessary mappings automatically).
+</p>
+<p>After the replacement mappings have been registered and new symbols
+marked for renaming, a call to <code>update_ssa</code> makes the registered
+changes. This can be done with an explicit call or by creating
+<code>TODO</code> flags in the <code>tree_opt_pass</code> structure for your pass.
+There are several <code>TODO</code> flags that control the behavior of
+<code>update_ssa</code>:
+</p>
+<ul>
+<li> <code>TODO_update_ssa</code>. Update the SSA form inserting PHI nodes
+for newly exposed symbols and virtual names marked for updating.
+When updating real names, only insert PHI nodes for a real name
+<code>O_j</code> in blocks reached by all the new and old definitions for
+<code>O_j</code>. If the iterated dominance frontier for <code>O_j</code>
+is not pruned, we may end up inserting PHI nodes in blocks that
+have one or more edges with no incoming definition for
+<code>O_j</code>. This would lead to uninitialized warnings for
+<code>O_j</code>&rsquo;s symbol.
+
+</li><li> <code>TODO_update_ssa_no_phi</code>. Update the SSA form without
+inserting any new PHI nodes at all. This is used by passes that
+have either inserted all the PHI nodes themselves or passes that
+need only to patch use-def and def-def chains for virtuals
+(e.g., DCE).
+
+
+</li><li> <code>TODO_update_ssa_full_phi</code>. Insert PHI nodes everywhere
+they are needed. No pruning of the IDF is done. This is used
+by passes that need the PHI nodes for <code>O_j</code> even if it
+means that some arguments will come from the default definition
+of <code>O_j</code>&rsquo;s symbol (e.g., <code>pass_linear_transform</code>).
+
+<p>WARNING: If you need to use this flag, chances are that your
+pass may be doing something wrong. Inserting PHI nodes for an
+old name where not all edges carry a new replacement may lead to
+silent codegen errors or spurious uninitialized warnings.
+</p>
+</li><li> <code>TODO_update_ssa_only_virtuals</code>. Passes that update the
+SSA form on their own may want to delegate the updating of
+virtual names to the generic updater. Since FUD chains are
+easier to maintain, this simplifies the work they need to do.
+NOTE: If this flag is used, any OLD-&gt;NEW mappings for real names
+are explicitly destroyed and only the symbols marked for
+renaming are processed.
+</li></ul>
+
+<a name="Examining-SSA_005fNAME-nodes"></a>
+<h4 class="subsection">13.3.2 Examining <code>SSA_NAME</code> nodes</h4>
+<a name="index-examining-SSA_005fNAMEs"></a>
+
+<p>The following macros can be used to examine <code>SSA_NAME</code> nodes
+</p>
+<dl>
+<dt><a name="index-SSA_005fNAME_005fDEF_005fSTMT"></a>Macro: <strong>SSA_NAME_DEF_STMT</strong> <em>(<var>var</var>)</em></dt>
+<dd><p>Returns the statement <var>s</var> that creates the <code>SSA_NAME</code>
+<var>var</var>. If <var>s</var> is an empty statement (i.e., <code>IS_EMPTY_STMT
+(<var>s</var>)</code> returns <code>true</code>), it means that the first reference to
+this variable is a USE or a VUSE.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SSA_005fNAME_005fVERSION"></a>Macro: <strong>SSA_NAME_VERSION</strong> <em>(<var>var</var>)</em></dt>
+<dd><p>Returns the version number of the <code>SSA_NAME</code> object <var>var</var>.
+</p></dd></dl>
+
+
+<a name="Walking-the-dominator-tree"></a>
+<h4 class="subsection">13.3.3 Walking the dominator tree</h4>
+
+<dl>
+<dt><a name="index-walk_005fdominator_005ftree"></a>Tree SSA function: <em>void</em> <strong>walk_dominator_tree</strong> <em>(<var>walk_data</var>, <var>bb</var>)</em></dt>
+<dd>
+<p>This function walks the dominator tree for the current CFG calling a
+set of callback functions defined in <var>struct dom_walk_data</var> in
+<samp>domwalk.h</samp>. The call back functions you need to define give you
+hooks to execute custom code at various points during traversal:
+</p>
+<ol>
+<li> Once to initialize any local data needed while processing
+<var>bb</var> and its children. This local data is pushed into an
+internal stack which is automatically pushed and popped as the
+walker traverses the dominator tree.
+
+</li><li> Once before traversing all the statements in the <var>bb</var>.
+
+</li><li> Once for every statement inside <var>bb</var>.
+
+</li><li> Once after traversing all the statements and before recursing
+into <var>bb</var>&rsquo;s dominator children.
+
+</li><li> It then recurses into all the dominator children of <var>bb</var>.
+
+</li><li> After recursing into all the dominator children of <var>bb</var> it
+can, optionally, traverse every statement in <var>bb</var> again
+(i.e., repeating steps 2 and 3).
+
+</li><li> Once after walking the statements in <var>bb</var> and <var>bb</var>&rsquo;s
+dominator children. At this stage, the block local data stack
+is popped.
+</li></ol>
+</dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Alias-analysis.html#Alias-analysis" accesskey="n" rel="next">Alias analysis</a>, Previous: <a href="SSA-Operands.html#SSA-Operands" accesskey="p" rel="previous">SSA Operands</a>, Up: <a href="Tree-SSA.html#Tree-SSA" accesskey="u" rel="up">Tree SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Scalar-Return.html b/share/doc/gccint/Scalar-Return.html
new file mode 100644
index 0000000..61231c7
--- /dev/null
+++ b/share/doc/gccint/Scalar-Return.html
@@ -0,0 +1,237 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Scalar Return</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Scalar Return">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Scalar Return">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Aggregate-Return.html#Aggregate-Return" rel="next" title="Aggregate Return">
+<link href="Register-Arguments.html#Register-Arguments" rel="previous" title="Register Arguments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Scalar-Return"></a>
+<div class="header">
+<p>
+Next: <a href="Aggregate-Return.html#Aggregate-Return" accesskey="n" rel="next">Aggregate Return</a>, Previous: <a href="Register-Arguments.html#Register-Arguments" accesskey="p" rel="previous">Register Arguments</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-Scalar-Function-Values-Are-Returned"></a>
+<h4 class="subsection">18.9.8 How Scalar Function Values Are Returned</h4>
+<a name="index-return-values-in-registers"></a>
+<a name="index-values_002c-returned-by-functions"></a>
+<a name="index-scalars_002c-returned-as-values"></a>
+
+<p>This section discusses the macros that control returning scalars as
+values&mdash;values that can fit in registers.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fVALUE"></a>Target Hook: <em>rtx</em> <strong>TARGET_FUNCTION_VALUE</strong> <em>(const_tree <var>ret_type</var>, const_tree <var>fn_decl_or_type</var>, bool <var>outgoing</var>)</em></dt>
+<dd>
+<p>Define this to return an RTX representing the place where a function
+returns or receives a value of data type <var>ret_type</var>, a tree node
+representing a data type. <var>fn_decl_or_type</var> is a tree node
+representing <code>FUNCTION_DECL</code> or <code>FUNCTION_TYPE</code> of a
+function being called. If <var>outgoing</var> is false, the hook should
+compute the register in which the caller will see the return value.
+Otherwise, the hook should return an RTX representing the place where
+a function returns a value.
+</p>
+<p>On many machines, only <code>TYPE_MODE (<var>ret_type</var>)</code> is relevant.
+(Actually, on most machines, scalar values are returned in the same
+place regardless of mode.) The value of the expression is usually a
+<code>reg</code> RTX for the hard register where the return value is stored.
+The value can also be a <code>parallel</code> RTX, if the return value is in
+multiple places. See <code>TARGET_FUNCTION_ARG</code> for an explanation of the
+<code>parallel</code> form. Note that the callee will populate every
+location specified in the <code>parallel</code>, but if the first element of
+the <code>parallel</code> contains the whole return value, callers will use
+that element as the canonical location and ignore the others. The m68k
+port uses this type of <code>parallel</code> to return pointers in both
+&lsquo;<samp>%a0</samp>&rsquo; (the canonical location) and &lsquo;<samp>%d0</samp>&rsquo;.
+</p>
+<p>If <code>TARGET_PROMOTE_FUNCTION_RETURN</code> returns true, you must apply
+the same promotion rules specified in <code>PROMOTE_MODE</code> if
+<var>valtype</var> is a scalar type.
+</p>
+<p>If the precise function being called is known, <var>func</var> is a tree
+node (<code>FUNCTION_DECL</code>) for it; otherwise, <var>func</var> is a null
+pointer. This makes it possible to use a different value-returning
+convention for specific functions when all their calls are
+known.
+</p>
+<p>Some target machines have &ldquo;register windows&rdquo; so that the register in
+which a function returns its value is not the same as the one in which
+the caller sees the value. For such machines, you should return
+different RTX depending on <var>outgoing</var>.
+</p>
+<p><code>TARGET_FUNCTION_VALUE</code> is not used for return values with
+aggregate data types, because these are returned in another way. See
+<code>TARGET_STRUCT_VALUE_RTX</code> and related macros, below.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FUNCTION_005fVALUE"></a>Macro: <strong>FUNCTION_VALUE</strong> <em>(<var>valtype</var>, <var>func</var>)</em></dt>
+<dd><p>This macro has been deprecated. Use <code>TARGET_FUNCTION_VALUE</code> for
+a new target instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIBCALL_005fVALUE"></a>Macro: <strong>LIBCALL_VALUE</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>A C expression to create an RTX representing the place where a library
+function returns a value of mode <var>mode</var>.
+</p>
+<p>Note that &ldquo;library function&rdquo; in this context means a compiler
+support routine, used to perform arithmetic, whose name is known
+specially by the compiler and was not mentioned in the C code being
+compiled.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBCALL_005fVALUE"></a>Target Hook: <em>rtx</em> <strong>TARGET_LIBCALL_VALUE</strong> <em>(machine_mode <var>mode</var>, const_rtx <var>fun</var>)</em></dt>
+<dd><p>Define this hook if the back-end needs to know the name of the libcall
+function in order to determine where the result should be returned.
+</p>
+<p>The mode of the result is given by <var>mode</var> and the name of the called
+library function is given by <var>fun</var>. The hook should return an RTX
+representing the place where the library function result will be returned.
+</p>
+<p>If this hook is not defined, then LIBCALL_VALUE will be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FUNCTION_005fVALUE_005fREGNO_005fP"></a>Macro: <strong>FUNCTION_VALUE_REGNO_P</strong> <em>(<var>regno</var>)</em></dt>
+<dd><p>A C expression that is nonzero if <var>regno</var> is the number of a hard
+register in which the values of called function may come back.
+</p>
+<p>A register whose use for returning values is limited to serving as the
+second of a pair (for a value of type <code>double</code>, say) need not be
+recognized by this macro. So for most machines, this definition
+suffices:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
+</pre></div>
+
+<p>If the machine has register windows, so that the caller and the called
+function use different registers for the return value, this macro
+should recognize only the caller&rsquo;s register numbers.
+</p>
+<p>This macro has been deprecated. Use <code>TARGET_FUNCTION_VALUE_REGNO_P</code>
+for a new target instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fVALUE_005fREGNO_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_FUNCTION_VALUE_REGNO_P</strong> <em>(const unsigned int <var>regno</var>)</em></dt>
+<dd><p>A target hook that return <code>true</code> if <var>regno</var> is the number of a hard
+register in which the values of called function may come back.
+</p>
+<p>A register whose use for returning values is limited to serving as the
+second of a pair (for a value of type <code>double</code>, say) need not be
+recognized by this target hook.
+</p>
+<p>If the machine has register windows, so that the caller and the called
+function use different registers for the return value, this target hook
+should recognize only the caller&rsquo;s register numbers.
+</p>
+<p>If this hook is not defined, then FUNCTION_VALUE_REGNO_P will be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-APPLY_005fRESULT_005fSIZE"></a>Macro: <strong>APPLY_RESULT_SIZE</strong></dt>
+<dd><p>Define this macro if &lsquo;<samp>untyped_call</samp>&rsquo; and &lsquo;<samp>untyped_return</samp>&rsquo;
+need more space than is implied by <code>FUNCTION_VALUE_REGNO_P</code> for
+saving and restoring an arbitrary return value.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOMIT_005fSTRUCT_005fRETURN_005fREG"></a>Target Hook: <em>bool</em> <strong>TARGET_OMIT_STRUCT_RETURN_REG</strong></dt>
+<dd><p>Normally, when a function returns a structure by memory, the address
+is passed as an invisible pointer argument, but the compiler also
+arranges to return the address from the function like it would a normal
+pointer return value. Define this to true if that behavior is
+undesirable on your target.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRETURN_005fIN_005fMSB"></a>Target Hook: <em>bool</em> <strong>TARGET_RETURN_IN_MSB</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>This hook should return true if values of type <var>type</var> are returned
+at the most significant end of a register (in other words, if they are
+padded at the least significant end). You can assume that <var>type</var>
+is returned in a register; the caller is required to check this.
+</p>
+<p>Note that the register provided by <code>TARGET_FUNCTION_VALUE</code> must
+be able to hold the complete return value. For example, if a 1-, 2-
+or 3-byte structure is returned at the most significant end of a
+4-byte register, <code>TARGET_FUNCTION_VALUE</code> should provide an
+<code>SImode</code> rtx.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Aggregate-Return.html#Aggregate-Return" accesskey="n" rel="next">Aggregate Return</a>, Previous: <a href="Register-Arguments.html#Register-Arguments" accesskey="p" rel="previous">Register Arguments</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Scalar-evolutions.html b/share/doc/gccint/Scalar-evolutions.html
new file mode 100644
index 0000000..da34f40
--- /dev/null
+++ b/share/doc/gccint/Scalar-evolutions.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Scalar evolutions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Scalar evolutions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Scalar evolutions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="loop_002div.html#loop_002div" rel="next" title="loop-iv">
+<link href="LCSSA.html#LCSSA" rel="previous" title="LCSSA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Scalar-evolutions"></a>
+<div class="header">
+<p>
+Next: <a href="loop_002div.html#loop_002div" accesskey="n" rel="next">loop-iv</a>, Previous: <a href="LCSSA.html#LCSSA" accesskey="p" rel="previous">LCSSA</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Scalar-evolutions-1"></a>
+<h3 class="section">16.5 Scalar evolutions</h3>
+<a name="index-Scalar-evolutions"></a>
+<a name="index-IV-analysis-on-GIMPLE"></a>
+
+<p>Scalar evolutions (SCEV) are used to represent results of induction
+variable analysis on GIMPLE. They enable us to represent variables with
+complicated behavior in a simple and consistent way (we only use it to
+express values of polynomial induction variables, but it is possible to
+extend it). The interfaces to SCEV analysis are declared in
+<samp>tree-scalar-evolution.h</samp>. To use scalar evolutions analysis,
+<code>scev_initialize</code> must be used. To stop using SCEV,
+<code>scev_finalize</code> should be used. SCEV analysis caches results in
+order to save time and memory. This cache however is made invalid by
+most of the loop transformations, including removal of code. If such a
+transformation is performed, <code>scev_reset</code> must be called to clean
+the caches.
+</p>
+<p>Given an SSA name, its behavior in loops can be analyzed using the
+<code>analyze_scalar_evolution</code> function. The returned SCEV however
+does not have to be fully analyzed and it may contain references to
+other SSA names defined in the loop. To resolve these (potentially
+recursive) references, <code>instantiate_parameters</code> or
+<code>resolve_mixers</code> functions must be used.
+<code>instantiate_parameters</code> is useful when you use the results of SCEV
+only for some analysis, and when you work with whole nest of loops at
+once. It will try replacing all SSA names by their SCEV in all loops,
+including the super-loops of the current loop, thus providing a complete
+information about the behavior of the variable in the loop nest.
+<code>resolve_mixers</code> is useful if you work with only one loop at a
+time, and if you possibly need to create code based on the value of the
+induction variable. It will only resolve the SSA names defined in the
+current loop, leaving the SSA names defined outside unchanged, even if
+their evolution in the outer loops is known.
+</p>
+<p>The SCEV is a normal tree expression, except for the fact that it may
+contain several special tree nodes. One of them is
+<code>SCEV_NOT_KNOWN</code>, used for SSA names whose value cannot be
+expressed. The other one is <code>POLYNOMIAL_CHREC</code>. Polynomial chrec
+has three arguments &ndash; base, step and loop (both base and step may
+contain further polynomial chrecs). Type of the expression and of base
+and step must be the same. A variable has evolution
+<code>POLYNOMIAL_CHREC(base, step, loop)</code> if it is (in the specified
+loop) equivalent to <code>x_1</code> in the following example
+</p>
+<div class="smallexample">
+<pre class="smallexample">while (&hellip;)
+ {
+ x_1 = phi (base, x_2);
+ x_2 = x_1 + step;
+ }
+</pre></div>
+
+<p>Note that this includes the language restrictions on the operations.
+For example, if we compile C code and <code>x</code> has signed type, then the
+overflow in addition would cause undefined behavior, and we may assume
+that this does not happen. Hence, the value with this SCEV cannot
+overflow (which restricts the number of iterations of such a loop).
+</p>
+<p>In many cases, one wants to restrict the attention just to affine
+induction variables. In this case, the extra expressive power of SCEV
+is not useful, and may complicate the optimizations. In this case,
+<code>simple_iv</code> function may be used to analyze a value &ndash; the result
+is a loop-invariant base and step.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="loop_002div.html#loop_002div" accesskey="n" rel="next">loop-iv</a>, Previous: <a href="LCSSA.html#LCSSA" accesskey="p" rel="previous">LCSSA</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Scheduling.html b/share/doc/gccint/Scheduling.html
new file mode 100644
index 0000000..9ce4457
--- /dev/null
+++ b/share/doc/gccint/Scheduling.html
@@ -0,0 +1,600 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Scheduling</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Scheduling">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Scheduling">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Sections.html#Sections" rel="next" title="Sections">
+<link href="Costs.html#Costs" rel="previous" title="Costs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Scheduling"></a>
+<div class="header">
+<p>
+Next: <a href="Sections.html#Sections" accesskey="n" rel="next">Sections</a>, Previous: <a href="Costs.html#Costs" accesskey="p" rel="previous">Costs</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Adjusting-the-Instruction-Scheduler"></a>
+<h3 class="section">18.17 Adjusting the Instruction Scheduler</h3>
+
+<p>The instruction scheduler may need a fair amount of machine-specific
+adjustment in order to produce good code. GCC provides several target
+hooks for this purpose. It is usually enough to define just a few of
+them: try the first ones in this list first.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fISSUE_005fRATE"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_ISSUE_RATE</strong> <em>(void)</em></dt>
+<dd><p>This hook returns the maximum number of instructions that can ever
+issue at the same time on the target machine. The default is one.
+Although the insn scheduler can define itself the possibility of issue
+an insn on the same cycle, the value can serve as an additional
+constraint to issue insns on the same simulated processor cycle (see
+hooks &lsquo;<samp>TARGET_SCHED_REORDER</samp>&rsquo; and &lsquo;<samp>TARGET_SCHED_REORDER2</samp>&rsquo;).
+This value must be constant over the entire compilation. If you need
+it to vary depending on what the instructions are, you must use
+&lsquo;<samp>TARGET_SCHED_VARIABLE_ISSUE</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fVARIABLE_005fISSUE"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_VARIABLE_ISSUE</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>, rtx_insn *<var>insn</var>, int <var>more</var>)</em></dt>
+<dd><p>This hook is executed by the scheduler after it has scheduled an insn
+from the ready list. It should return the number of insns which can
+still be issued in the current cycle. The default is
+&lsquo;<samp><var>more</var>&nbsp;<span class="nolinebreak">-</span>&nbsp;1<!-- /@w --></samp>&rsquo; for insns other than <code>CLOBBER</code> and
+<code>USE</code>, which normally are not counted against the issue rate.
+You should define this hook if some insns take more machine resources
+than others, so that fewer insns can follow them in the same cycle.
+<var>file</var> is either a null pointer, or a stdio stream to write any
+debug output to. <var>verbose</var> is the verbose level provided by
+<samp>-fsched-verbose-<var>n</var></samp>. <var>insn</var> is the instruction that
+was scheduled.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fADJUST_005fCOST"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_ADJUST_COST</strong> <em>(rtx_insn *<var>insn</var>, int <var>dep_type1</var>, rtx_insn *<var>dep_insn</var>, int <var>cost</var>, unsigned int <var>dw</var>)</em></dt>
+<dd><p>This function corrects the value of <var>cost</var> based on the
+relationship between <var>insn</var> and <var>dep_insn</var> through a
+dependence of type dep_type, and strength <var>dw</var>. It should return the new
+value. The default is to make no adjustment to <var>cost</var>. This can be
+used for example to specify to the scheduler using the traditional pipeline
+description that an output- or anti-dependence does not incur the same cost
+as a data-dependence. If the scheduler using the automaton based pipeline
+description, the cost of anti-dependence is zero and the cost of
+output-dependence is maximum of one and the difference of latency
+times of the first and the second insns. If these values are not
+acceptable, you could use the hook to modify them too. See also
+see <a href="Processor-pipeline-description.html#Processor-pipeline-description">Processor pipeline description</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fADJUST_005fPRIORITY"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_ADJUST_PRIORITY</strong> <em>(rtx_insn *<var>insn</var>, int <var>priority</var>)</em></dt>
+<dd><p>This hook adjusts the integer scheduling priority <var>priority</var> of
+<var>insn</var>. It should return the new priority. Increase the priority to
+execute <var>insn</var> earlier, reduce the priority to execute <var>insn</var>
+later. Do not define this hook if you do not need to adjust the
+scheduling priorities of insns.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fREORDER"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_REORDER</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>, rtx_insn **<var>ready</var>, int *<var>n_readyp</var>, int <var>clock</var>)</em></dt>
+<dd><p>This hook is executed by the scheduler after it has scheduled the ready
+list, to allow the machine description to reorder it (for example to
+combine two small instructions together on &lsquo;<samp>VLIW</samp>&rsquo; machines).
+<var>file</var> is either a null pointer, or a stdio stream to write any
+debug output to. <var>verbose</var> is the verbose level provided by
+<samp>-fsched-verbose-<var>n</var></samp>. <var>ready</var> is a pointer to the ready
+list of instructions that are ready to be scheduled. <var>n_readyp</var> is
+a pointer to the number of elements in the ready list. The scheduler
+reads the ready list in reverse order, starting with
+<var>ready</var>[<var>*n_readyp</var> - 1] and going to <var>ready</var>[0]. <var>clock</var>
+is the timer tick of the scheduler. You may modify the ready list and
+the number of ready insns. The return value is the number of insns that
+can issue this cycle; normally this is just <code>issue_rate</code>. See also
+&lsquo;<samp>TARGET_SCHED_REORDER2</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fREORDER2"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_REORDER2</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>, rtx_insn **<var>ready</var>, int *<var>n_readyp</var>, int <var>clock</var>)</em></dt>
+<dd><p>Like &lsquo;<samp>TARGET_SCHED_REORDER</samp>&rsquo;, but called at a different time. That
+function is called whenever the scheduler starts a new cycle. This one
+is called once per iteration over a cycle, immediately after
+&lsquo;<samp>TARGET_SCHED_VARIABLE_ISSUE</samp>&rsquo;; it can reorder the ready list and
+return the number of insns to be scheduled in the same cycle. Defining
+this hook can be useful if there are frequent situations where
+scheduling one insn causes other insns to become ready in the same
+cycle. These other insns can then be taken into account properly.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fMACRO_005fFUSION_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_MACRO_FUSION_P</strong> <em>(void)</em></dt>
+<dd><p>This hook is used to check whether target platform supports macro fusion.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fMACRO_005fFUSION_005fPAIR_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_MACRO_FUSION_PAIR_P</strong> <em>(rtx_insn *<var>prev</var>, rtx_insn *<var>curr</var>)</em></dt>
+<dd><p>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</var> and <var>curr</var>), 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.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDEPENDENCIES_005fEVALUATION_005fHOOK"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK</strong> <em>(rtx_insn *<var>head</var>, rtx_insn *<var>tail</var>)</em></dt>
+<dd><p>This hook is called after evaluation forward dependencies of insns in
+chain given by two parameter values (<var>head</var> and <var>tail</var>
+correspondingly) but before insns scheduling of the insn chain. For
+example, it can be used for better insn classification if it requires
+analysis of dependencies. This hook can use backward and forward
+dependencies of the insn scheduler because they are already
+calculated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fINIT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_INIT</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>, int <var>max_ready</var>)</em></dt>
+<dd><p>This hook is executed by the scheduler at the beginning of each block of
+instructions that are to be scheduled. <var>file</var> is either a null
+pointer, or a stdio stream to write any debug output to. <var>verbose</var>
+is the verbose level provided by <samp>-fsched-verbose-<var>n</var></samp>.
+<var>max_ready</var> is the maximum number of insns in the current scheduling
+region that can be live at the same time. This can be used to allocate
+scratch space if it is needed, e.g. by &lsquo;<samp>TARGET_SCHED_REORDER</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFINISH"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FINISH</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>)</em></dt>
+<dd><p>This hook is executed by the scheduler at the end of each block of
+instructions that are to be scheduled. It can be used to perform
+cleanup of any actions done by the other scheduling hooks. <var>file</var>
+is either a null pointer, or a stdio stream to write any debug output
+to. <var>verbose</var> is the verbose level provided by
+<samp>-fsched-verbose-<var>n</var></samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fINIT_005fGLOBAL"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_INIT_GLOBAL</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>, int <var>old_max_uid</var>)</em></dt>
+<dd><p>This hook is executed by the scheduler after function level initializations.
+<var>file</var> is either a null pointer, or a stdio stream to write any debug output to.
+<var>verbose</var> is the verbose level provided by <samp>-fsched-verbose-<var>n</var></samp>.
+<var>old_max_uid</var> is the maximum insn uid when scheduling begins.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFINISH_005fGLOBAL"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FINISH_GLOBAL</strong> <em>(FILE *<var>file</var>, int <var>verbose</var>)</em></dt>
+<dd><p>This is the cleanup hook corresponding to <code>TARGET_SCHED_INIT_GLOBAL</code>.
+<var>file</var> is either a null pointer, or a stdio stream to write any debug output to.
+<var>verbose</var> is the verbose level provided by <samp>-fsched-verbose-<var>n</var></samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDFA_005fPRE_005fCYCLE_005fINSN"></a>Target Hook: <em>rtx</em> <strong>TARGET_SCHED_DFA_PRE_CYCLE_INSN</strong> <em>(void)</em></dt>
+<dd><p>The hook returns an RTL insn. The automaton state used in the
+pipeline hazard recognizer is changed as if the insn were scheduled
+when the new simulated processor cycle starts. Usage of the hook may
+simplify the automaton pipeline description for some <acronym>VLIW</acronym>
+processors. If the hook is defined, it is used only for the automaton
+based pipeline description. The default is not to change the state
+when the new simulated processor cycle starts.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fINIT_005fDFA_005fPRE_005fCYCLE_005fINSN"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN</strong> <em>(void)</em></dt>
+<dd><p>The hook can be used to initialize data used by the previous hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDFA_005fPOST_005fCYCLE_005fINSN"></a>Target Hook: <em>rtx_insn *</em> <strong>TARGET_SCHED_DFA_POST_CYCLE_INSN</strong> <em>(void)</em></dt>
+<dd><p>The hook is analogous to &lsquo;<samp>TARGET_SCHED_DFA_PRE_CYCLE_INSN</samp>&rsquo; but used
+to changed the state as if the insn were scheduled when the new
+simulated processor cycle finishes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fINIT_005fDFA_005fPOST_005fCYCLE_005fINSN"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN</strong> <em>(void)</em></dt>
+<dd><p>The hook is analogous to &lsquo;<samp>TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN</samp>&rsquo; but
+used to initialize data used by the previous hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDFA_005fPRE_005fADVANCE_005fCYCLE"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE</strong> <em>(void)</em></dt>
+<dd><p>The hook to notify target that the current simulated cycle is about to finish.
+The hook is analogous to &lsquo;<samp>TARGET_SCHED_DFA_PRE_CYCLE_INSN</samp>&rsquo; but used
+to change the state in more complicated situations - e.g., when advancing
+state on a single insn is not enough.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDFA_005fPOST_005fADVANCE_005fCYCLE"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_DFA_POST_ADVANCE_CYCLE</strong> <em>(void)</em></dt>
+<dd><p>The hook to notify target that new simulated cycle has just started.
+The hook is analogous to &lsquo;<samp>TARGET_SCHED_DFA_POST_CYCLE_INSN</samp>&rsquo; but used
+to change the state in more complicated situations - e.g., when advancing
+state on a single insn is not enough.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fDFA_005fLOOKAHEAD"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD</strong> <em>(void)</em></dt>
+<dd><p>This hook controls better choosing an insn from the ready insn queue
+for the <acronym>DFA</acronym>-based insn scheduler. Usually the scheduler
+chooses the first insn from the queue. If the hook returns a positive
+value, an additional scheduler code tries all permutations of
+&lsquo;<samp>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()</samp>&rsquo;
+subsequent ready insns to choose an insn whose issue will result in
+maximal number of issued insns on the same cycle. For the
+<acronym>VLIW</acronym> processor, the code could actually solve the problem of
+packing simple insns into the <acronym>VLIW</acronym> insn. Of course, if the
+rules of <acronym>VLIW</acronym> packing are described in the automaton.
+</p>
+<p>This code also could be used for superscalar <acronym>RISC</acronym>
+processors. Let us consider a superscalar <acronym>RISC</acronym> processor
+with 3 pipelines. Some insns can be executed in pipelines <var>A</var> or
+<var>B</var>, some insns can be executed only in pipelines <var>B</var> or
+<var>C</var>, and one insn can be executed in pipeline <var>B</var>. The
+processor may issue the 1st insn into <var>A</var> and the 2nd one into
+<var>B</var>. In this case, the 3rd insn will wait for freeing <var>B</var>
+until the next cycle. If the scheduler issues the 3rd insn the first,
+the processor could issue all 3 insns per cycle.
+</p>
+<p>Actually this code demonstrates advantages of the automaton based
+pipeline hazard recognizer. We try quickly and easy many insn
+schedules to choose the best one.
+</p>
+<p>The default is no multipass scheduling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fDFA_005fLOOKAHEAD_005fGUARD"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD</strong> <em>(rtx_insn *<var>insn</var>, int <var>ready_index</var>)</em></dt>
+<dd>
+<p>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</var>, the insn will be considered in multipass scheduling.
+Positive return values will remove <var>insn</var> from consideration on
+the current round of multipass scheduling.
+Negative return values will remove <var>insn</var> 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</var> is passed
+to allow backends make correct judgements.
+</p>
+<p>The default is that any ready insns can be chosen to be issued.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fBEGIN"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN</strong> <em>(void *<var>data</var>, signed char *<var>ready_try</var>, int <var>n_ready</var>, bool <var>first_cycle_insn_p</var>)</em></dt>
+<dd><p>This hook prepares the target backend for a new round of multipass
+scheduling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fISSUE"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE</strong> <em>(void *<var>data</var>, signed char *<var>ready_try</var>, int <var>n_ready</var>, rtx_insn *<var>insn</var>, const void *<var>prev_data</var>)</em></dt>
+<dd><p>This hook is called when multipass scheduling evaluates instruction INSN.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fBACKTRACK"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK</strong> <em>(const void *<var>data</var>, signed char *<var>ready_try</var>, int <var>n_ready</var>)</em></dt>
+<dd><p>This is called when multipass scheduling backtracks from evaluation of
+an instruction.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fEND"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_END</strong> <em>(const void *<var>data</var>)</em></dt>
+<dd><p>This hook notifies the target about the result of the concluded current
+round of multipass scheduling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fINIT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_INIT</strong> <em>(void *<var>data</var>)</em></dt>
+<dd><p>This hook initializes target-specific data used in multipass scheduling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFIRST_005fCYCLE_005fMULTIPASS_005fFINI"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FIRST_CYCLE_MULTIPASS_FINI</strong> <em>(void *<var>data</var>)</em></dt>
+<dd><p>This hook finalizes target-specific data used in multipass scheduling.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDFA_005fNEW_005fCYCLE"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_DFA_NEW_CYCLE</strong> <em>(FILE *<var>dump</var>, int <var>verbose</var>, rtx_insn *<var>insn</var>, int <var>last_clock</var>, int <var>clock</var>, int *<var>sort_p</var>)</em></dt>
+<dd><p>This hook is called by the insn scheduler before issuing <var>insn</var>
+on cycle <var>clock</var>. If the hook returns nonzero,
+<var>insn</var> is not issued on this processor cycle. Instead,
+the processor cycle is advanced. If *<var>sort_p</var>
+is zero, the insn ready queue is not sorted on the new cycle
+start as usually. <var>dump</var> and <var>verbose</var> specify the file and
+verbosity level to use for debugging output.
+<var>last_clock</var> and <var>clock</var> are, respectively, the
+processor cycle on which the previous insn has been issued,
+and the current processor cycle.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fIS_005fCOSTLY_005fDEPENDENCE"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_IS_COSTLY_DEPENDENCE</strong> <em>(struct _dep *<var>_dep</var>, int <var>cost</var>, int <var>distance</var>)</em></dt>
+<dd><p>This hook is used to define which dependences are considered costly by
+the target, so costly that it is not advisable to schedule the insns that
+are involved in the dependence too close to one another. The parameters
+to this hook are as follows: The first parameter <var>_dep</var> is the dependence
+being evaluated. The second parameter <var>cost</var> is the cost of the
+dependence as estimated by the scheduler, and the third
+parameter <var>distance</var> is the distance in cycles between the two insns.
+The hook returns <code>true</code> if considering the distance between the two
+insns the dependence between them is considered costly by the target,
+and <code>false</code> otherwise.
+</p>
+<p>Defining this hook can be useful in multiple-issue out-of-order machines,
+where (a) it&rsquo;s practically hopeless to predict the actual data/resource
+delays, however: (b) there&rsquo;s a better chance to predict the actual grouping
+that will be formed, and (c) correctly emulating the grouping can be very
+important. In such targets one may want to allow issuing dependent insns
+closer to one another&mdash;i.e., closer than the dependence distance; however,
+not in cases of &ldquo;costly dependences&rdquo;, which this hooks allows to define.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fH_005fI_005fD_005fEXTENDED"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_H_I_D_EXTENDED</strong> <em>(void)</em></dt>
+<dd><p>This hook is called by the insn scheduler after emitting a new instruction to
+the instruction stream. The hook notifies a target backend to extend its
+per instruction data structures.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fALLOC_005fSCHED_005fCONTEXT"></a>Target Hook: <em>void *</em> <strong>TARGET_SCHED_ALLOC_SCHED_CONTEXT</strong> <em>(void)</em></dt>
+<dd><p>Return a pointer to a store large enough to hold target scheduling context.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fINIT_005fSCHED_005fCONTEXT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_INIT_SCHED_CONTEXT</strong> <em>(void *<var>tc</var>, bool <var>clean_p</var>)</em></dt>
+<dd><p>Initialize store pointed to by <var>tc</var> to hold target scheduling context.
+It <var>clean_p</var> is true then initialize <var>tc</var> as if scheduler is at the
+beginning of the block. Otherwise, copy the current context into <var>tc</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fSET_005fSCHED_005fCONTEXT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_SET_SCHED_CONTEXT</strong> <em>(void *<var>tc</var>)</em></dt>
+<dd><p>Copy target scheduling context pointed to by <var>tc</var> to the current context.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fCLEAR_005fSCHED_005fCONTEXT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_CLEAR_SCHED_CONTEXT</strong> <em>(void *<var>tc</var>)</em></dt>
+<dd><p>Deallocate internal data in target scheduling context pointed to by <var>tc</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFREE_005fSCHED_005fCONTEXT"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FREE_SCHED_CONTEXT</strong> <em>(void *<var>tc</var>)</em></dt>
+<dd><p>Deallocate a store for target scheduling context pointed to by <var>tc</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fSPECULATE_005fINSN"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_SPECULATE_INSN</strong> <em>(rtx_insn *<var>insn</var>, unsigned int <var>dep_status</var>, rtx *<var>new_pat</var>)</em></dt>
+<dd><p>This hook is called by the insn scheduler when <var>insn</var> has only
+speculative dependencies and therefore can be scheduled speculatively.
+The hook is used to check if the pattern of <var>insn</var> has a speculative
+version and, in case of successful check, to generate that speculative
+pattern. The hook should return 1, if the instruction has a speculative form,
+or -1, if it doesn&rsquo;t. <var>request</var> describes the type of requested
+speculation. If the return value equals 1 then <var>new_pat</var> is assigned
+the generated speculative pattern.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fNEEDS_005fBLOCK_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_NEEDS_BLOCK_P</strong> <em>(unsigned int <var>dep_status</var>)</em></dt>
+<dd><p>This hook is called by the insn scheduler during generation of recovery code
+for <var>insn</var>. It should return <code>true</code>, if the corresponding check
+instruction should branch to recovery code, or <code>false</code> otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fGEN_005fSPEC_005fCHECK"></a>Target Hook: <em>rtx</em> <strong>TARGET_SCHED_GEN_SPEC_CHECK</strong> <em>(rtx_insn *<var>insn</var>, rtx_insn *<var>label</var>, unsigned int <var>ds</var>)</em></dt>
+<dd><p>This hook is called by the insn scheduler to generate a pattern for recovery
+check instruction. If <var>mutate_p</var> is zero, then <var>insn</var> is a
+speculative instruction for which the check should be generated.
+<var>label</var> is either a label of a basic block, where recovery code should
+be emitted, or a null pointer, when requested check doesn&rsquo;t branch to
+recovery code (a simple check). If <var>mutate_p</var> is nonzero, then
+a pattern for a branchy check corresponding to a simple check denoted by
+<var>insn</var> should be generated. In this case <var>label</var> can&rsquo;t be null.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fSET_005fSCHED_005fFLAGS"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_SET_SCHED_FLAGS</strong> <em>(struct spec_info_def *<var>spec_info</var>)</em></dt>
+<dd><p>This hook is used by the insn scheduler to find out what features should be
+enabled/used.
+The structure *<var>spec_info</var> should be filled in by the target.
+The structure describes speculation types that can be used in the scheduler.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fCAN_005fSPECULATE_005fINSN"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_CAN_SPECULATE_INSN</strong> <em>(rtx_insn *<var>insn</var>)</em></dt>
+<dd><p>Some instructions should never be speculated by the schedulers, usually
+ because the instruction is too expensive to get this wrong. Often such
+ instructions have long latency, and often they are not fully modeled in the
+ pipeline descriptions. This hook should return <code>false</code> if <var>insn</var>
+ should not be speculated.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fSMS_005fRES_005fMII"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_SMS_RES_MII</strong> <em>(struct ddg *<var>g</var>)</em></dt>
+<dd><p>This hook is called by the swing modulo scheduler to calculate a
+resource-based lower bound which is based on the resources available in
+the machine and the resources required by each instruction. The target
+backend can use <var>g</var> to calculate such bound. A very simple lower
+bound will be used in case this hook is not implemented: the total number
+of instructions divided by the issue rate.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDISPATCH"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_DISPATCH</strong> <em>(rtx_insn *<var>insn</var>, int <var>x</var>)</em></dt>
+<dd><p>This hook is called by Haifa Scheduler. It returns true if dispatch scheduling
+is supported in hardware and the condition specified in the parameter is true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fDISPATCH_005fDO"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_DISPATCH_DO</strong> <em>(rtx_insn *<var>insn</var>, int <var>x</var>)</em></dt>
+<dd><p>This hook is called by Haifa Scheduler. It performs the operation specified
+in its second parameter.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fEXPOSED_005fPIPELINE"></a>Target Hook: <em>bool</em> <strong>TARGET_SCHED_EXPOSED_PIPELINE</strong></dt>
+<dd><p>True if the processor has an exposed pipeline, which means that not just
+the order of instructions is important for correctness when scheduling, but
+also the latencies of operations.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fREASSOCIATION_005fWIDTH"></a>Target Hook: <em>int</em> <strong>TARGET_SCHED_REASSOCIATION_WIDTH</strong> <em>(unsigned int <var>opc</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook is called by tree reassociator to determine a level of
+parallelism required in output calculations chain.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSCHED_005fFUSION_005fPRIORITY"></a>Target Hook: <em>void</em> <strong>TARGET_SCHED_FUSION_PRIORITY</strong> <em>(rtx_insn *<var>insn</var>, int <var>max_pri</var>, int *<var>fusion_pri</var>, int *<var>pri</var>)</em></dt>
+<dd><p>This hook is called by scheduling fusion pass. It calculates fusion
+priorities for each instruction passed in by parameter. The priorities
+are returned via pointer parameters.
+</p>
+<p><var>insn</var> is the instruction whose priorities need to be calculated.
+<var>max_pri</var> is the maximum priority can be returned in any cases.
+<var>fusion_pri</var> is the pointer parameter through which <var>insn</var>&rsquo;s
+fusion priority should be calculated and returned.
+<var>pri</var> is the pointer parameter through which <var>insn</var>&rsquo;s priority
+should be calculated and returned.
+</p>
+<p>Same <var>fusion_pri</var> should be returned for instructions which should
+be scheduled together. Different <var>pri</var> should be returned for
+instructions with same <var>fusion_pri</var>. <var>fusion_pri</var> is the major
+sort key, <var>pri</var> is the minor sort key. All instructions will be
+scheduled according to the two priorities. All priorities calculated
+should be between 0 (exclusive) and <var>max_pri</var> (inclusive). To avoid
+false dependencies, <var>fusion_pri</var> of instructions which need to be
+scheduled together should be smaller than <var>fusion_pri</var> of irrelevant
+instructions.
+</p>
+<p>Given below example:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> ldr r10, [r1, 4]
+ add r4, r4, r10
+ ldr r15, [r2, 8]
+ sub r5, r5, r15
+ ldr r11, [r1, 0]
+ add r4, r4, r11
+ ldr r16, [r2, 12]
+ sub r5, r5, r16
+</pre></div>
+
+<p>On targets like ARM/AArch64, the two pairs of consecutive loads should be
+merged. Since peephole2 pass can&rsquo;t help in this case unless consecutive
+loads are actually next to each other in instruction flow. That&rsquo;s where
+this scheduling fusion pass works. This hook calculates priority for each
+instruction based on its fustion type, like:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> ldr r10, [r1, 4] ; fusion_pri=99, pri=96
+ add r4, r4, r10 ; fusion_pri=100, pri=100
+ ldr r15, [r2, 8] ; fusion_pri=98, pri=92
+ sub r5, r5, r15 ; fusion_pri=100, pri=100
+ ldr r11, [r1, 0] ; fusion_pri=99, pri=100
+ add r4, r4, r11 ; fusion_pri=100, pri=100
+ ldr r16, [r2, 12] ; fusion_pri=98, pri=88
+ sub r5, r5, r16 ; fusion_pri=100, pri=100
+</pre></div>
+
+<p>Scheduling fusion pass then sorts all ready to issue instructions according
+to the priorities. As a result, instructions of same fusion type will be
+pushed together in instruction flow, like:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> ldr r11, [r1, 0]
+ ldr r10, [r1, 4]
+ ldr r15, [r2, 8]
+ ldr r16, [r2, 12]
+ add r4, r4, r10
+ sub r5, r5, r15
+ add r4, r4, r11
+ sub r5, r5, r16
+</pre></div>
+
+<p>Now peephole2 pass can simply merge the two pairs of loads.
+</p>
+<p>Since scheduling fusion pass relies on peephole2 to do real fusion
+work, it is only enabled by default when peephole2 is in effect.
+</p>
+<p>This is firstly introduced on ARM/AArch64 targets, please refer to
+the hook implementation for how different fusion types are supported.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXPAND_005fDIVMOD_005fLIBFUNC"></a>Target Hook: <em>void</em> <strong>TARGET_EXPAND_DIVMOD_LIBFUNC</strong> <em>(rtx <var>libfunc</var>, machine_mode <var>mode</var>, rtx <var>op0</var>, rtx <var>op1</var>, rtx *<var>quot</var>, rtx *<var>rem</var>)</em></dt>
+<dd><p>Define this hook for enabling divmod transform if the port does not have
+hardware divmod insn but defines target-specific divmod libfuncs.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sections.html#Sections" accesskey="n" rel="next">Sections</a>, Previous: <a href="Costs.html#Costs" accesskey="p" rel="previous">Costs</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Sections.html b/share/doc/gccint/Sections.html
new file mode 100644
index 0000000..0202701
--- /dev/null
+++ b/share/doc/gccint/Sections.html
@@ -0,0 +1,487 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Sections</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Sections">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Sections">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="PIC.html#PIC" rel="next" title="PIC">
+<link href="Scheduling.html#Scheduling" rel="previous" title="Scheduling">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Sections"></a>
+<div class="header">
+<p>
+Next: <a href="PIC.html#PIC" accesskey="n" rel="next">PIC</a>, Previous: <a href="Scheduling.html#Scheduling" accesskey="p" rel="previous">Scheduling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Dividing-the-Output-into-Sections-_0028Texts_002c-Data_002c-_2026_0029"></a>
+<h3 class="section">18.18 Dividing the Output into Sections (Texts, Data, &hellip;)</h3>
+
+<p>An object file is divided into sections containing different types of
+data. In the most common case, there are three sections: the <em>text
+section</em>, which holds instructions and read-only data; the <em>data
+section</em>, which holds initialized writable data; and the <em>bss
+section</em>, which holds uninitialized data. Some systems have other kinds
+of sections.
+</p>
+<p><samp>varasm.cc</samp> provides several well-known sections, such as
+<code>text_section</code>, <code>data_section</code> and <code>bss_section</code>.
+The normal way of controlling a <code><var>foo</var>_section</code> variable
+is to define the associated <code><var>FOO</var>_SECTION_ASM_OP</code> macro,
+as described below. The macros are only read once, when <samp>varasm.cc</samp>
+initializes itself, so their values must be run-time constants.
+They may however depend on command-line flags.
+</p>
+<p><em>Note:</em> Some run-time files, such <samp>crtstuff.c</samp>, also make
+use of the <code><var>FOO</var>_SECTION_ASM_OP</code> macros, and expect them
+to be string literals.
+</p>
+<p>Some assemblers require a different string to be written every time a
+section is selected. If your assembler falls into this category, you
+should define the <code>TARGET_ASM_INIT_SECTIONS</code> hook and use
+<code>get_unnamed_section</code> to set up the sections.
+</p>
+<p>You must always create a <code>text_section</code>, either by defining
+<code>TEXT_SECTION_ASM_OP</code> or by initializing <code>text_section</code>
+in <code>TARGET_ASM_INIT_SECTIONS</code>. The same is true of
+<code>data_section</code> and <code>DATA_SECTION_ASM_OP</code>. If you do not
+create a distinct <code>readonly_data_section</code>, the default is to
+reuse <code>text_section</code>.
+</p>
+<p>All the other <samp>varasm.cc</samp> sections are optional, and are null
+if the target does not provide them.
+</p>
+<dl>
+<dt><a name="index-TEXT_005fSECTION_005fASM_005fOP"></a>Macro: <strong>TEXT_SECTION_ASM_OP</strong></dt>
+<dd><p>A C expression whose value is a string, including spacing, containing the
+assembler operation that should precede instructions and read-only data.
+Normally <code>&quot;\t.text&quot;</code> is right.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HOT_005fTEXT_005fSECTION_005fNAME"></a>Macro: <strong>HOT_TEXT_SECTION_NAME</strong></dt>
+<dd><p>If defined, a C string constant for the name of the section containing most
+frequently executed functions of the program. If not defined, GCC will provide
+a default definition if the target supports named sections.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-UNLIKELY_005fEXECUTED_005fTEXT_005fSECTION_005fNAME"></a>Macro: <strong>UNLIKELY_EXECUTED_TEXT_SECTION_NAME</strong></dt>
+<dd><p>If defined, a C string constant for the name of the section containing unlikely
+executed functions in the program.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>DATA_SECTION_ASM_OP</strong></dt>
+<dd><p>A C expression whose value is a string, including spacing, containing the
+assembler operation to identify the following data as writable initialized
+data. Normally <code>&quot;\t.data&quot;</code> is right.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SDATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>SDATA_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+initialized, writable small data.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-READONLY_005fDATA_005fSECTION_005fASM_005fOP"></a>Macro: <strong>READONLY_DATA_SECTION_ASM_OP</strong></dt>
+<dd><p>A C expression whose value is a string, including spacing, containing the
+assembler operation to identify the following data as read-only initialized
+data.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BSS_005fSECTION_005fASM_005fOP"></a>Macro: <strong>BSS_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+uninitialized global data. If not defined, and
+<code>ASM_OUTPUT_ALIGNED_BSS</code> not defined,
+uninitialized global data will be output in the data section if
+<samp>-fno-common</samp> is passed, otherwise <code>ASM_OUTPUT_COMMON</code> will be
+used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SBSS_005fSECTION_005fASM_005fOP"></a>Macro: <strong>SBSS_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+uninitialized, writable small data.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TLS_005fCOMMON_005fASM_005fOP"></a>Macro: <strong>TLS_COMMON_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string containing the
+assembler operation to identify the following data as thread-local
+common data. The default is <code>&quot;.tls_common&quot;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TLS_005fSECTION_005fASM_005fFLAG"></a>Macro: <strong>TLS_SECTION_ASM_FLAG</strong></dt>
+<dd><p>If defined, a C expression whose value is a character constant
+containing the flag used to mark a section as a TLS section. The
+default is <code>'T'</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fSECTION_005fASM_005fOP"></a>Macro: <strong>INIT_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+initialization code. If not defined, GCC will assume such a section does
+not exist. This section has no corresponding <code>init_section</code>
+variable; it is used entirely in runtime code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FINI_005fSECTION_005fASM_005fOP"></a>Macro: <strong>FINI_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+finalization code. If not defined, GCC will assume such a section does
+not exist. This section has no corresponding <code>fini_section</code>
+variable; it is used entirely in runtime code.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INIT_005fARRAY_005fSECTION_005fASM_005fOP"></a>Macro: <strong>INIT_ARRAY_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+part of the <code>.init_array</code> (or equivalent) section. If not
+defined, GCC will assume such a section does not exist. Do not define
+both this macro and <code>INIT_SECTION_ASM_OP</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FINI_005fARRAY_005fSECTION_005fASM_005fOP"></a>Macro: <strong>FINI_ARRAY_SECTION_ASM_OP</strong></dt>
+<dd><p>If defined, a C expression whose value is a string, including spacing,
+containing the assembler operation to identify the following data as
+part of the <code>.fini_array</code> (or equivalent) section. If not
+defined, GCC will assume such a section does not exist. Do not define
+both this macro and <code>FINI_SECTION_ASM_OP</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MACH_005fDEP_005fSECTION_005fASM_005fFLAG"></a>Macro: <strong>MACH_DEP_SECTION_ASM_FLAG</strong></dt>
+<dd><p>If defined, a C expression whose value is a character constant
+containing the flag used to mark a machine-dependent section. This
+corresponds to the <code>SECTION_MACH_DEP</code> section flag.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CRT_005fCALL_005fSTATIC_005fFUNCTION"></a>Macro: <strong>CRT_CALL_STATIC_FUNCTION</strong> <em>(<var>section_op</var>, <var>function</var>)</em></dt>
+<dd><p>If defined, an ASM statement that switches to a different section
+via <var>section_op</var>, calls <var>function</var>, and switches back to
+the text section. This is used in <samp>crtstuff.c</samp> if
+<code>INIT_SECTION_ASM_OP</code> or <code>FINI_SECTION_ASM_OP</code> to calls
+to initialization and finalization functions from the init and fini
+sections. By default, this macro uses a simple function call. Some
+ports need hand-crafted assembly code to avoid dependencies on
+registers initialized in the function prologue or to ensure that
+constant pools don&rsquo;t end up too far way in the text section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBGCC_005fSDATA_005fSECTION"></a>Macro: <strong>TARGET_LIBGCC_SDATA_SECTION</strong></dt>
+<dd><p>If defined, a string which names the section into which small
+variables defined in crtstuff and libgcc should go. This is useful
+when the target has options for optimizing access to small data, and
+you want the crtstuff and libgcc routines to be conservative in what
+they expect of your application yet liberal in what your application
+expects. For example, for targets with a <code>.sdata</code> section (like
+MIPS), you could compile crtstuff with <code>-G 0</code> so that it doesn&rsquo;t
+require small data support from your application, but use this macro
+to put small data into <code>.sdata</code> so that your application can
+access these variables whether it uses small data or not.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FORCE_005fCODE_005fSECTION_005fALIGN"></a>Macro: <strong>FORCE_CODE_SECTION_ALIGN</strong></dt>
+<dd><p>If defined, an ASM statement that aligns a code section to some
+arbitrary boundary. This is used to force all fragments of the
+<code>.init</code> and <code>.fini</code> sections to have to same alignment
+and thus prevent the linker from having to add any padding.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-JUMP_005fTABLES_005fIN_005fTEXT_005fSECTION"></a>Macro: <strong>JUMP_TABLES_IN_TEXT_SECTION</strong></dt>
+<dd><p>Define this macro to be an expression with a nonzero value if jump
+tables (for <code>tablejump</code> insns) should be output in the text
+section, along with the assembler instructions. Otherwise, the
+readonly data section is used.
+</p>
+<p>This macro is irrelevant if there is no separate readonly data section.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fINIT_005fSECTIONS"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_INIT_SECTIONS</strong> <em>(void)</em></dt>
+<dd><p>Define this hook if you need to do something special to set up the
+<samp>varasm.cc</samp> sections, or if your target has some special sections
+of its own that you need to create.
+</p>
+<p>GCC calls this hook after processing the command line, but before writing
+any assembly code, and before calling any of the section-returning hooks
+described below.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fRELOC_005fRW_005fMASK"></a>Target Hook: <em>int</em> <strong>TARGET_ASM_RELOC_RW_MASK</strong> <em>(void)</em></dt>
+<dd><p>Return a mask describing how relocations should be treated when
+selecting sections. Bit 1 should be set if global relocations
+should be placed in a read-write section; bit 0 should be set if
+local relocations should be placed in a read-write section.
+</p>
+<p>The default version of this function returns 3 when <samp>-fpic</samp>
+is in effect, and 0 otherwise. The hook is typically redefined
+when the target cannot support (some kinds of) dynamic relocations
+in read-only sections even in executables.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fGENERATE_005fPIC_005fADDR_005fDIFF_005fVEC"></a>Target Hook: <em>bool</em> <strong>TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC</strong> <em>(void)</em></dt>
+<dd><p>Return true to generate ADDR_DIF_VEC table
+or false to generate ADDR_VEC table for jumps in case of -fPIC.
+</p>
+<p>The default version of this function returns true if flag_pic
+equals true and false otherwise
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fSELECT_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_SELECT_SECTION</strong> <em>(tree <var>exp</var>, int <var>reloc</var>, unsigned HOST_WIDE_INT <var>align</var>)</em></dt>
+<dd><p>Return the section into which <var>exp</var> should be placed. You can
+assume that <var>exp</var> is either a <code>VAR_DECL</code> node or a constant of
+some sort. <var>reloc</var> indicates whether the initial value of <var>exp</var>
+requires link-time relocations. Bit 0 is set when variable contains
+local relocations only, while bit 1 is set for global relocations.
+<var>align</var> is the constant alignment in bits.
+</p>
+<p>The default version of this function takes care of putting read-only
+variables in <code>readonly_data_section</code>.
+</p>
+<p>See also <var>USE_SELECT_SECTION_FOR_FUNCTIONS</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-USE_005fSELECT_005fSECTION_005fFOR_005fFUNCTIONS"></a>Macro: <strong>USE_SELECT_SECTION_FOR_FUNCTIONS</strong></dt>
+<dd><p>Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called
+for <code>FUNCTION_DECL</code>s as well as for variables and constants.
+</p>
+<p>In the case of a <code>FUNCTION_DECL</code>, <var>reloc</var> will be zero if the
+function has been determined to be likely to be called, and nonzero if
+it is unlikely to be called.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fUNIQUE_005fSECTION"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_UNIQUE_SECTION</strong> <em>(tree <var>decl</var>, int <var>reloc</var>)</em></dt>
+<dd><p>Build up a unique section name, expressed as a <code>STRING_CST</code> node,
+and assign it to &lsquo;<samp>DECL_SECTION_NAME (<var>decl</var>)</samp>&rsquo;.
+As with <code>TARGET_ASM_SELECT_SECTION</code>, <var>reloc</var> indicates whether
+the initial value of <var>exp</var> requires link-time relocations.
+</p>
+<p>The default version of this function appends the symbol name to the
+ELF section name that would normally be used for the symbol. For
+example, the function <code>foo</code> would be placed in <code>.text.foo</code>.
+Whatever the actual target object format, this is often good enough.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fFUNCTION_005fRODATA_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_FUNCTION_RODATA_SECTION</strong> <em>(tree <var>decl</var>, bool <var>relocatable</var>)</em></dt>
+<dd><p>Return the readonly data or reloc readonly data section associated with
+&lsquo;<samp>DECL_SECTION_NAME (<var>decl</var>)</samp>&rsquo;. <var>relocatable</var> selects the latter
+over the former.
+The default version of this function selects <code>.gnu.linkonce.r.name</code> if
+the function&rsquo;s section is <code>.gnu.linkonce.t.name</code>, <code>.rodata.name</code>
+or <code>.data.rel.ro.name</code> if function is in <code>.text.name</code>, and
+the normal readonly-data or reloc readonly data section otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fMERGEABLE_005fRODATA_005fPREFIX"></a>Target Hook: <em>const char *</em> <strong>TARGET_ASM_MERGEABLE_RODATA_PREFIX</strong></dt>
+<dd><p>Usually, the compiler uses the prefix <code>&quot;.rodata&quot;</code> to construct
+section names for mergeable constant data. Define this macro to override
+the string if a different section name should be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fTM_005fCLONE_005fTABLE_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_TM_CLONE_TABLE_SECTION</strong> <em>(void)</em></dt>
+<dd><p>Return the section that should be used for transactional memory clone
+tables.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fASM_005fSELECT_005fRTX_005fSECTION"></a>Target Hook: <em>section *</em> <strong>TARGET_ASM_SELECT_RTX_SECTION</strong> <em>(machine_mode <var>mode</var>, rtx <var>x</var>, unsigned HOST_WIDE_INT <var>align</var>)</em></dt>
+<dd><p>Return the section into which a constant <var>x</var>, of mode <var>mode</var>,
+should be placed. You can assume that <var>x</var> is some kind of
+constant in RTL. The argument <var>mode</var> is redundant except in the
+case of a <code>const_int</code> rtx. <var>align</var> is the constant alignment
+in bits.
+</p>
+<p>The default version of this function takes care of putting symbolic
+constants in <code>flag_pic</code> mode in <code>data_section</code> and everything
+else in <code>readonly_data_section</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMANGLE_005fDECL_005fASSEMBLER_005fNAME"></a>Target Hook: <em>tree</em> <strong>TARGET_MANGLE_DECL_ASSEMBLER_NAME</strong> <em>(tree <var>decl</var>, tree <var>id</var>)</em></dt>
+<dd><p>Define this hook if you need to postprocess the assembler name generated
+by target-independent code. The <var>id</var> provided to this hook will be
+the computed name (e.g., the macro <code>DECL_NAME</code> of the <var>decl</var> in C,
+or the mangled name of the <var>decl</var> in C++). The return value of the
+hook is an <code>IDENTIFIER_NODE</code> for the appropriate mangled name on
+your target system. The default implementation of this hook just
+returns the <var>id</var> provided.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fENCODE_005fSECTION_005fINFO"></a>Target Hook: <em>void</em> <strong>TARGET_ENCODE_SECTION_INFO</strong> <em>(tree <var>decl</var>, rtx <var>rtl</var>, int <var>new_decl_p</var>)</em></dt>
+<dd><p>Define this hook if references to a symbol or a constant must be
+treated differently depending on something about the variable or
+function named by the symbol (such as what section it is in).
+</p>
+<p>The hook is executed immediately after rtl has been created for
+<var>decl</var>, which may be a variable or function declaration or
+an entry in the constant pool. In either case, <var>rtl</var> is the
+rtl in question. Do <em>not</em> use <code>DECL_RTL (<var>decl</var>)</code>
+in this hook; that field may not have been initialized yet.
+</p>
+<p>In the case of a constant, it is safe to assume that the rtl is
+a <code>mem</code> whose address is a <code>symbol_ref</code>. Most decls
+will also have this form, but that is not guaranteed. Global
+register variables, for instance, will have a <code>reg</code> for their
+rtl. (Normally the right thing to do with such unusual rtl is
+leave it alone.)
+</p>
+<p>The <var>new_decl_p</var> argument will be true if this is the first time
+that <code>TARGET_ENCODE_SECTION_INFO</code> has been invoked on this decl. It will
+be false for subsequent invocations, which will happen for duplicate
+declarations. Whether or not anything must be done for the duplicate
+declaration depends on whether the hook examines <code>DECL_ATTRIBUTES</code>.
+<var>new_decl_p</var> is always true when the hook is called for a constant.
+</p>
+<a name="index-SYMBOL_005fREF_005fFLAG_002c-in-TARGET_005fENCODE_005fSECTION_005fINFO"></a>
+<p>The usual thing for this hook to do is to record flags in the
+<code>symbol_ref</code>, using <code>SYMBOL_REF_FLAG</code> or <code>SYMBOL_REF_FLAGS</code>.
+Historically, the name string was modified if it was necessary to
+encode more than one bit of information, but this practice is now
+discouraged; use <code>SYMBOL_REF_FLAGS</code>.
+</p>
+<p>The default definition of this hook, <code>default_encode_section_info</code>
+in <samp>varasm.cc</samp>, sets a number of commonly-useful bits in
+<code>SYMBOL_REF_FLAGS</code>. Check whether the default does what you need
+before overriding it.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTRIP_005fNAME_005fENCODING"></a>Target Hook: <em>const char *</em> <strong>TARGET_STRIP_NAME_ENCODING</strong> <em>(const char *<var>name</var>)</em></dt>
+<dd><p>Decode <var>name</var> and return the real name part, sans
+the characters that <code>TARGET_ENCODE_SECTION_INFO</code>
+may have added.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fIN_005fSMALL_005fDATA_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_IN_SMALL_DATA_P</strong> <em>(const_tree <var>exp</var>)</em></dt>
+<dd><p>Returns true if <var>exp</var> should be placed into a &ldquo;small data&rdquo; section.
+The default version of this hook always returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fSRODATA_005fSECTION"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_SRODATA_SECTION</strong></dt>
+<dd><p>Contains the value true if the target places read-only
+&ldquo;small data&rdquo; into a separate section. The default value is false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPROFILE_005fBEFORE_005fPROLOGUE"></a>Target Hook: <em>bool</em> <strong>TARGET_PROFILE_BEFORE_PROLOGUE</strong> <em>(void)</em></dt>
+<dd><p>It returns true if target wants profile code emitted before prologue.
+</p>
+<p>The default version of this hook use the target macro
+<code>PROFILE_BEFORE_PROLOGUE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fBINDS_005fLOCAL_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_BINDS_LOCAL_P</strong> <em>(const_tree <var>exp</var>)</em></dt>
+<dd><p>Returns true if <var>exp</var> names an object for which name resolution
+rules must resolve to the current &ldquo;module&rdquo; (dynamic shared library
+or executable image).
+</p>
+<p>The default version of this hook implements the name resolution rules
+for ELF, which has a looser model of global name binding than other
+currently supported object file formats.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHAVE_005fTLS"></a>Target Hook: <em>bool</em> <strong>TARGET_HAVE_TLS</strong></dt>
+<dd><p>Contains the value true if the target supports thread-local storage.
+The default value is false.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="PIC.html#PIC" accesskey="n" rel="next">PIC</a>, Previous: <a href="Scheduling.html#Scheduling" accesskey="p" rel="previous">Scheduling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Selectors.html b/share/doc/gccint/Selectors.html
new file mode 100644
index 0000000..504180b
--- /dev/null
+++ b/share/doc/gccint/Selectors.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Selectors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Selectors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Selectors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" rel="next" title="Effective-Target Keywords">
+<link href="Directives.html#Directives" rel="previous" title="Directives">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Selectors"></a>
+<div class="header">
+<p>
+Next: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="n" rel="next">Effective-Target Keywords</a>, Previous: <a href="Directives.html#Directives" accesskey="p" rel="previous">Directives</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Selecting-targets-to-which-a-test-applies"></a>
+<h4 class="subsection">7.2.2 Selecting targets to which a test applies</h4>
+
+<p>Several test directives include <var>selector</var>s to limit the targets
+for which a test is run or to declare that a test is expected to fail
+on particular targets.
+</p>
+<p>A selector is:
+</p><ul>
+<li> one or more target triplets, possibly including wildcard characters;
+use &lsquo;<samp>*-*-*</samp>&rsquo; to match any target
+</li><li> a single effective-target keyword (see <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords">Effective-Target Keywords</a>)
+</li><li> a list of compiler options that should be included or excluded
+(as described in more detail below)
+</li><li> a logical expression
+</li></ul>
+
+<p>Depending on the context, the selector specifies whether a test is
+skipped and reported as unsupported or is expected to fail. A context
+that allows either &lsquo;<samp>target</samp>&rsquo; or &lsquo;<samp>xfail</samp>&rsquo; also allows
+&lsquo;<samp>{ target <var>selector1</var> xfail <var>selector2</var> }</samp>&rsquo;
+to skip the test for targets that don&rsquo;t match <var>selector1</var> and the
+test to fail for targets that match <var>selector2</var>.
+</p>
+<p>A selector expression appears within curly braces and uses a single
+logical operator: one of &lsquo;<samp>!</samp>&rsquo;, &lsquo;<samp>&amp;&amp;</samp>&rsquo;, or &lsquo;<samp>||</samp>&rsquo;. An
+operand is one of the following:
+</p>
+<ul>
+<li> another selector expression, in curly braces
+
+</li><li> an effective-target keyword, such as <code>lp64</code>
+
+</li><li> a single target triplet
+
+</li><li> a list of target triplets within quotes or curly braces
+
+</li><li> one of the following:
+
+<dl compact="compact">
+<dt>&lsquo;<samp>{ any-opts <var>opt1</var> &hellip; <var>optn</var> }</samp>&rsquo;</dt>
+<dd><p>Each of <var>opt1</var> to <var>optn</var> is a space-separated list of option globs.
+The selector expression evaluates to true if, for one of these strings,
+every glob in the string matches an option that was passed to the compiler.
+For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ any-opts &quot;-O3 -flto&quot; &quot;-O[2g]&quot; }
+</pre></div>
+
+<p>is true if any of the following are true:
+</p>
+<ul>
+<li> <samp>-O2</samp> was passed to the compiler
+
+</li><li> <samp>-Og</samp> was passed to the compiler
+
+</li><li> both <samp>-O3</samp> and <samp>-flto</samp> were passed to the compiler
+</li></ul>
+
+<p>This kind of selector can only be used within <code>dg-final</code> directives.
+Use <code>dg-skip-if</code>, <code>dg-xfail-if</code> or <code>dg-xfail-run-if</code> to
+skip whole tests based on options, or to mark them as expected to fail
+with certain options.
+</p>
+</dd>
+<dt>&lsquo;<samp>{ no-opts <var>opt1</var> &hellip; <var>optn</var> }</samp>&rsquo;</dt>
+<dd><p>As for <code>any-opts</code> above, each of <var>opt1</var> to <var>optn</var> is a
+space-separated list of option globs. The selector expression
+evaluates to true if, for all of these strings, there is at least
+one glob that does not match an option that was passed to the compiler.
+It is shorthand for:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ ! { any-opts <var>opt1</var> &hellip; <var>optn</var> } }
+</pre></div>
+
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ no-opts &quot;-O3 -flto&quot; &quot;-O[2g]&quot; }
+</pre></div>
+
+<p>is true if all of the following are true:
+</p>
+<ul>
+<li> <samp>-O2</samp> was not passed to the compiler
+
+</li><li> <samp>-Og</samp> was not passed to the compiler
+
+</li><li> at least one of <samp>-O3</samp> or <samp>-flto</samp> was not passed to the compiler
+</li></ul>
+
+<p>Like <code>any-opts</code>, this kind of selector can only be used within
+<code>dg-final</code> directives.
+</p>
+</dd>
+</dl>
+</li></ul>
+
+<p>Here are some examples of full target selectors:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ target { ! &quot;hppa*-*-* ia64*-*-*&quot; } }
+{ target { powerpc*-*-* &amp;&amp; lp64 } }
+{ xfail { lp64 || vect_no_align } }
+{ xfail { aarch64*-*-* &amp;&amp; { any-opts &quot;-O2&quot; } } }
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="n" rel="next">Effective-Target Keywords</a>, Previous: <a href="Directives.html#Directives" accesskey="p" rel="previous">Directives</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Sequence-iterators.html b/share/doc/gccint/Sequence-iterators.html
new file mode 100644
index 0000000..4f7b6ad
--- /dev/null
+++ b/share/doc/gccint/Sequence-iterators.html
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Sequence iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Sequence iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Sequence iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" rel="next" title="Adding a new GIMPLE statement code">
+<link href="GIMPLE-sequences.html#GIMPLE-sequences" rel="previous" title="GIMPLE sequences">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Sequence-iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" accesskey="n" rel="next">Adding a new GIMPLE statement code</a>, Previous: <a href="GIMPLE-sequences.html#GIMPLE-sequences" accesskey="p" rel="previous">GIMPLE sequences</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Sequence-iterators-1"></a>
+<h3 class="section">12.10 Sequence iterators</h3>
+<a name="index-Sequence-iterators"></a>
+
+<p>Sequence iterators are convenience constructs for iterating
+through statements in a sequence. Given a sequence <code>SEQ</code>, here is
+a typical use of gimple sequence iterators:
+</p>
+<div class="smallexample">
+<pre class="smallexample">gimple_stmt_iterator gsi;
+
+for (gsi = gsi_start (seq); !gsi_end_p (gsi); gsi_next (&amp;gsi))
+ {
+ gimple g = gsi_stmt (gsi);
+ /* Do something with gimple statement <code>G</code>. */
+ }
+</pre></div>
+
+<p>Backward iterations are possible:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> for (gsi = gsi_last (seq); !gsi_end_p (gsi); gsi_prev (&amp;gsi))
+</pre></div>
+
+<p>Forward and backward iterations on basic blocks are possible with
+<code>gsi_start_bb</code> and <code>gsi_last_bb</code>.
+</p>
+<p>In the documentation below we sometimes refer to enum
+<code>gsi_iterator_update</code>. The valid options for this enumeration are:
+</p>
+<ul>
+<li> <code>GSI_NEW_STMT</code>
+Only valid when a single statement is added. Move the iterator to it.
+
+</li><li> <code>GSI_SAME_STMT</code>
+Leave the iterator at the same statement.
+
+</li><li> <code>GSI_CONTINUE_LINKING</code>
+Move iterator to whatever position is suitable for linking other
+statements in the same direction.
+</li></ul>
+
+<p>Below is a list of the functions used to manipulate and use
+statement iterators.
+</p>
+<dl>
+<dt><a name="index-gsi_005fstart"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_start</strong> <em>(gimple_seq seq)</em></dt>
+<dd><p>Return a new iterator pointing to the sequence <code>SEQ</code>&rsquo;s first
+statement. If <code>SEQ</code> is empty, the iterator&rsquo;s basic block is <code>NULL</code>.
+Use <code>gsi_start_bb</code> instead when the iterator needs to always have
+the correct basic block set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fstart_005fbb"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_start_bb</strong> <em>(basic_block bb)</em></dt>
+<dd><p>Return a new iterator pointing to the first statement in basic
+block <code>BB</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flast"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_last</strong> <em>(gimple_seq seq)</em></dt>
+<dd><p>Return a new iterator initially pointing to the last statement of
+sequence <code>SEQ</code>. If <code>SEQ</code> is empty, the iterator&rsquo;s basic block is
+<code>NULL</code>. Use <code>gsi_last_bb</code> instead when the iterator needs to always
+have the correct basic block set.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flast_005fbb"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_last_bb</strong> <em>(basic_block bb)</em></dt>
+<dd><p>Return a new iterator pointing to the last statement in basic
+block <code>BB</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fend_005fp"></a>GIMPLE function: <em>bool</em> <strong>gsi_end_p</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Return <code>TRUE</code> if at the end of <code>I</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fone_005fbefore_005fend_005fp"></a>GIMPLE function: <em>bool</em> <strong>gsi_one_before_end_p</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Return <code>TRUE</code> if we&rsquo;re one statement before the end of <code>I</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fnext"></a>GIMPLE function: <em>void</em> <strong>gsi_next</strong> <em>(gimple_stmt_iterator *i)</em></dt>
+<dd><p>Advance the iterator to the next gimple statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fprev"></a>GIMPLE function: <em>void</em> <strong>gsi_prev</strong> <em>(gimple_stmt_iterator *i)</em></dt>
+<dd><p>Advance the iterator to the previous gimple statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fstmt"></a>GIMPLE function: <em>gimple</em> <strong>gsi_stmt</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Return the current stmt.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fafter_005flabels"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_after_labels</strong> <em>(basic_block bb)</em></dt>
+<dd><p>Return a block statement iterator that points to the first
+non-label statement in block <code>BB</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fstmt_005fptr"></a>GIMPLE function: <em>gimple *</em> <strong>gsi_stmt_ptr</strong> <em>(gimple_stmt_iterator *i)</em></dt>
+<dd><p>Return a pointer to the current stmt.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fbb"></a>GIMPLE function: <em>basic_block</em> <strong>gsi_bb</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Return the basic block associated with this iterator.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fseq"></a>GIMPLE function: <em>gimple_seq</em> <strong>gsi_seq</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Return the sequence associated with this iterator.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fremove"></a>GIMPLE function: <em>void</em> <strong>gsi_remove</strong> <em>(gimple_stmt_iterator *i, bool remove_eh_info)</em></dt>
+<dd><p>Remove the current stmt from the sequence. The iterator is
+updated to point to the next statement. When <code>REMOVE_EH_INFO</code> is
+true we remove the statement pointed to by iterator <code>I</code> from the <code>EH</code>
+tables. Otherwise we do not modify the <code>EH</code> tables. Generally,
+<code>REMOVE_EH_INFO</code> should be true when the statement is going to be
+removed from the <code>IL</code> and not reinserted elsewhere.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flink_005fseq_005fbefore"></a>GIMPLE function: <em>void</em> <strong>gsi_link_seq_before</strong> <em>(gimple_stmt_iterator *i, gimple_seq seq, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Links the sequence of statements <code>SEQ</code> before the statement pointed
+by iterator <code>I</code>. <code>MODE</code> indicates what to do with the iterator
+after insertion (see <code>enum gsi_iterator_update</code> above).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flink_005fbefore"></a>GIMPLE function: <em>void</em> <strong>gsi_link_before</strong> <em>(gimple_stmt_iterator *i, gimple g, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Links statement <code>G</code> before the statement pointed-to by iterator <code>I</code>.
+Updates iterator <code>I</code> according to <code>MODE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flink_005fseq_005fafter"></a>GIMPLE function: <em>void</em> <strong>gsi_link_seq_after</strong> <em>(gimple_stmt_iterator *i, gimple_seq seq, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Links sequence <code>SEQ</code> after the statement pointed-to by iterator <code>I</code>.
+<code>MODE</code> is as in <code>gsi_insert_after</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005flink_005fafter"></a>GIMPLE function: <em>void</em> <strong>gsi_link_after</strong> <em>(gimple_stmt_iterator *i, gimple g, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Links statement <code>G</code> after the statement pointed-to by iterator <code>I</code>.
+<code>MODE</code> is as in <code>gsi_insert_after</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fsplit_005fseq_005fafter"></a>GIMPLE function: <em>gimple_seq</em> <strong>gsi_split_seq_after</strong> <em>(gimple_stmt_iterator i)</em></dt>
+<dd><p>Move all statements in the sequence after <code>I</code> to a new sequence.
+Return this new sequence.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fsplit_005fseq_005fbefore"></a>GIMPLE function: <em>gimple_seq</em> <strong>gsi_split_seq_before</strong> <em>(gimple_stmt_iterator *i)</em></dt>
+<dd><p>Move all statements in the sequence before <code>I</code> to a new sequence.
+Return this new sequence.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005freplace"></a>GIMPLE function: <em>void</em> <strong>gsi_replace</strong> <em>(gimple_stmt_iterator *i, gimple stmt, bool update_eh_info)</em></dt>
+<dd><p>Replace the statement pointed-to by <code>I</code> to <code>STMT</code>. If <code>UPDATE_EH_INFO</code>
+is true, the exception handling information of the original
+statement is moved to the new statement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fbefore"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_before</strong> <em>(gimple_stmt_iterator *i, gimple stmt, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Insert statement <code>STMT</code> before the statement pointed-to by iterator
+<code>I</code>, update <code>STMT</code>&rsquo;s basic block and scan it for new operands. <code>MODE</code>
+specifies how to update iterator <code>I</code> after insertion (see enum
+<code>gsi_iterator_update</code>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fseq_005fbefore"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_seq_before</strong> <em>(gimple_stmt_iterator *i, gimple_seq seq, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Like <code>gsi_insert_before</code>, but for all the statements in <code>SEQ</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fafter"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_after</strong> <em>(gimple_stmt_iterator *i, gimple stmt, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Insert statement <code>STMT</code> after the statement pointed-to by iterator
+<code>I</code>, update <code>STMT</code>&rsquo;s basic block and scan it for new operands. <code>MODE</code>
+specifies how to update iterator <code>I</code> after insertion (see enum
+<code>gsi_iterator_update</code>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fseq_005fafter"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_seq_after</strong> <em>(gimple_stmt_iterator *i, gimple_seq seq, enum gsi_iterator_update mode)</em></dt>
+<dd><p>Like <code>gsi_insert_after</code>, but for all the statements in <code>SEQ</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005ffor_005fstmt"></a>GIMPLE function: <em>gimple_stmt_iterator</em> <strong>gsi_for_stmt</strong> <em>(gimple stmt)</em></dt>
+<dd><p>Finds iterator for <code>STMT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fmove_005fafter"></a>GIMPLE function: <em>void</em> <strong>gsi_move_after</strong> <em>(gimple_stmt_iterator *from, gimple_stmt_iterator *to)</em></dt>
+<dd><p>Move the statement at <code>FROM</code> so it comes right after the statement
+at <code>TO</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fmove_005fbefore"></a>GIMPLE function: <em>void</em> <strong>gsi_move_before</strong> <em>(gimple_stmt_iterator *from, gimple_stmt_iterator *to)</em></dt>
+<dd><p>Move the statement at <code>FROM</code> so it comes right before the statement
+at <code>TO</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fmove_005fto_005fbb_005fend"></a>GIMPLE function: <em>void</em> <strong>gsi_move_to_bb_end</strong> <em>(gimple_stmt_iterator *from, basic_block bb)</em></dt>
+<dd><p>Move the statement at <code>FROM</code> to the end of basic block <code>BB</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fon_005fedge"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_on_edge</strong> <em>(edge e, gimple stmt)</em></dt>
+<dd><p>Add <code>STMT</code> to the pending list of edge <code>E</code>. No actual insertion is
+made until a call to <code>gsi_commit_edge_inserts</code>() is made.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fseq_005fon_005fedge"></a>GIMPLE function: <em>void</em> <strong>gsi_insert_seq_on_edge</strong> <em>(edge e, gimple_seq seq)</em></dt>
+<dd><p>Add the sequence of statements in <code>SEQ</code> to the pending list of edge
+<code>E</code>. No actual insertion is made until a call to
+<code>gsi_commit_edge_inserts</code>() is made.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005finsert_005fon_005fedge_005fimmediate"></a>GIMPLE function: <em>basic_block</em> <strong>gsi_insert_on_edge_immediate</strong> <em>(edge e, gimple stmt)</em></dt>
+<dd><p>Similar to <code>gsi_insert_on_edge</code>+<code>gsi_commit_edge_inserts</code>. If a new
+block has to be created, it is returned.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fcommit_005fone_005fedge_005finsert"></a>GIMPLE function: <em>void</em> <strong>gsi_commit_one_edge_insert</strong> <em>(edge e, basic_block *new_bb)</em></dt>
+<dd><p>Commit insertions pending at edge <code>E</code>. If a new block is created,
+set <code>NEW_BB</code> to this block, otherwise set it to <code>NULL</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-gsi_005fcommit_005fedge_005finserts"></a>GIMPLE function: <em>void</em> <strong>gsi_commit_edge_inserts</strong> <em>(void)</em></dt>
+<dd><p>This routine will commit all pending edge insertions, creating
+any new basic blocks which are necessary.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" accesskey="n" rel="next">Adding a new GIMPLE statement code</a>, Previous: <a href="GIMPLE-sequences.html#GIMPLE-sequences" accesskey="p" rel="previous">GIMPLE sequences</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Sharing.html b/share/doc/gccint/Sharing.html
new file mode 100644
index 0000000..7cf9fe7
--- /dev/null
+++ b/share/doc/gccint/Sharing.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Sharing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Sharing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Sharing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Reading-RTL.html#Reading-RTL" rel="next" title="Reading RTL">
+<link href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions" rel="previous" title="Changing Multiple RTL SSA Instructions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Sharing"></a>
+<div class="header">
+<p>
+Next: <a href="Reading-RTL.html#Reading-RTL" accesskey="n" rel="next">Reading RTL</a>, Previous: <a href="RTL-SSA.html#RTL-SSA" accesskey="p" rel="previous">RTL SSA</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Structure-Sharing-Assumptions"></a>
+<h3 class="section">14.22 Structure Sharing Assumptions</h3>
+<a name="index-sharing-of-RTL-components"></a>
+<a name="index-RTL-structure-sharing-assumptions"></a>
+
+<p>The compiler assumes that certain kinds of RTL expressions are unique;
+there do not exist two distinct objects representing the same value.
+In other cases, it makes an opposite assumption: that no RTL expression
+object of a certain kind appears in more than one place in the
+containing structure.
+</p>
+<p>These assumptions refer to a single function; except for the RTL
+objects that describe global variables and external functions,
+and a few standard objects such as small integer constants,
+no RTL objects are common to two functions.
+</p>
+<ul>
+<li> <a name="index-reg_002c-RTL-sharing"></a>
+Each pseudo-register has only a single <code>reg</code> object to represent it,
+and therefore only a single machine mode.
+
+</li><li> <a name="index-symbolic-label"></a>
+<a name="index-symbol_005fref_002c-RTL-sharing"></a>
+For any symbolic label, there is only one <code>symbol_ref</code> object
+referring to it.
+
+</li><li> <a name="index-const_005fint_002c-RTL-sharing"></a>
+All <code>const_int</code> expressions with equal values are shared.
+
+</li><li> <a name="index-const_005fpoly_005fint_002c-RTL-sharing"></a>
+All <code>const_poly_int</code> expressions with equal modes and values
+are shared.
+
+</li><li> <a name="index-pc_002c-RTL-sharing"></a>
+There is only one <code>pc</code> expression.
+
+</li><li> <a name="index-const_005fdouble_002c-RTL-sharing"></a>
+There is only one <code>const_double</code> expression with value 0 for
+each floating point mode. Likewise for values 1 and 2.
+
+</li><li> <a name="index-const_005fvector_002c-RTL-sharing"></a>
+There is only one <code>const_vector</code> expression with value 0 for
+each vector mode, be it an integer or a double constant vector.
+
+</li><li> <a name="index-label_005fref_002c-RTL-sharing"></a>
+<a name="index-scratch_002c-RTL-sharing"></a>
+No <code>label_ref</code> or <code>scratch</code> appears in more than one place in
+the RTL structure; in other words, it is safe to do a tree-walk of all
+the insns in the function and assume that each time a <code>label_ref</code>
+or <code>scratch</code> is seen it is distinct from all others that are seen.
+
+</li><li> <a name="index-mem_002c-RTL-sharing"></a>
+Only one <code>mem</code> object is normally created for each static
+variable or stack slot, so these objects are frequently shared in all
+the places they appear. However, separate but equal objects for these
+variables are occasionally made.
+
+</li><li> <a name="index-asm_005foperands_002c-RTL-sharing"></a>
+When a single <code>asm</code> statement has multiple output operands, a
+distinct <code>asm_operands</code> expression is made for each output operand.
+However, these all share the vector which contains the sequence of input
+operands. This sharing is used later on to test whether two
+<code>asm_operands</code> expressions come from the same statement, so all
+optimizations must carefully preserve the sharing if they copy the
+vector at all.
+
+</li><li> No RTL object appears in more than one place in the RTL structure
+except as described above. Many passes of the compiler rely on this
+by assuming that they can modify RTL objects in place without unwanted
+side-effects on other insns.
+
+</li><li> <a name="index-unshare_005fall_005frtl"></a>
+During initial RTL generation, shared structure is freely introduced.
+After all the RTL for a function has been generated, all shared
+structure is copied by <code>unshare_all_rtl</code> in <samp>emit-rtl.cc</samp>,
+after which the above rules are guaranteed to be followed.
+
+</li><li> <a name="index-copy_005frtx_005fif_005fshared"></a>
+During the combiner pass, shared structure within an insn can exist
+temporarily. However, the shared structure is copied before the
+combiner is finished with the insn. This is done by calling
+<code>copy_rtx_if_shared</code>, which is a subroutine of
+<code>unshare_all_rtl</code>.
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Reading-RTL.html#Reading-RTL" accesskey="n" rel="next">Reading RTL</a>, Previous: <a href="RTL-SSA.html#RTL-SSA" accesskey="p" rel="previous">RTL SSA</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Shrink_002dwrapping-separate-components.html b/share/doc/gccint/Shrink_002dwrapping-separate-components.html
new file mode 100644
index 0000000..8240029
--- /dev/null
+++ b/share/doc/gccint/Shrink_002dwrapping-separate-components.html
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Shrink-wrapping separate components</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Shrink-wrapping separate components">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Shrink-wrapping separate components">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Stack-Smashing-Protection.html#Stack-Smashing-Protection" rel="next" title="Stack Smashing Protection">
+<link href="Tail-Calls.html#Tail-Calls" rel="previous" title="Tail Calls">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Shrink_002dwrapping-separate-components"></a>
+<div class="header">
+<p>
+Next: <a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection" accesskey="n" rel="next">Stack Smashing Protection</a>, Previous: <a href="Tail-Calls.html#Tail-Calls" accesskey="p" rel="previous">Tail Calls</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Shrink_002dwrapping-separate-components-1"></a>
+<h4 class="subsection">18.9.14 Shrink-wrapping separate components</h4>
+<a name="index-shrink_002dwrapping-separate-components"></a>
+
+<p>The prologue may perform a variety of target dependent tasks such as
+saving callee-saved registers, saving the return address, aligning the
+stack, creating a stack frame, initializing the PIC register, setting
+up the static chain, etc.
+</p>
+<p>On some targets some of these tasks may be independent of others and
+thus may be shrink-wrapped separately. These independent tasks are
+referred to as components and are handled generically by the target
+independent parts of GCC.
+</p>
+<p>Using the following hooks those prologue or epilogue components can be
+shrink-wrapped separately, so that the initialization (and possibly
+teardown) those components do is not done as frequently on execution
+paths where this would unnecessary.
+</p>
+<p>What exactly those components are is up to the target code; the generic
+code treats them abstractly, as a bit in an <code>sbitmap</code>. These
+<code>sbitmap</code>s are allocated by the <code>shrink_wrap.get_separate_components</code>
+and <code>shrink_wrap.components_for_bb</code> hooks, and deallocated by the
+generic code.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fGET_005fSEPARATE_005fCOMPONENTS"></a>Target Hook: <em>sbitmap</em> <strong>TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS</strong> <em>(void)</em></dt>
+<dd><p>This hook should return an <code>sbitmap</code> with the bits set for those
+components that can be separately shrink-wrapped in the current function.
+Return <code>NULL</code> if the current function should not get any separate
+shrink-wrapping.
+Don&rsquo;t define this hook if it would always return <code>NULL</code>.
+If it is defined, the other hooks in this group have to be defined as well.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fCOMPONENTS_005fFOR_005fBB"></a>Target Hook: <em>sbitmap</em> <strong>TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB</strong> <em>(basic_block)</em></dt>
+<dd><p>This hook should return an <code>sbitmap</code> with the bits set for those
+components where either the prologue component has to be executed before
+the <code>basic_block</code>, or the epilogue component after it, or both.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fDISQUALIFY_005fCOMPONENTS"></a>Target Hook: <em>void</em> <strong>TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS</strong> <em>(sbitmap <var>components</var>, edge <var>e</var>, sbitmap <var>edge_components</var>, bool <var>is_prologue</var>)</em></dt>
+<dd><p>This hook should clear the bits in the <var>components</var> bitmap for those
+components in <var>edge_components</var> that the target cannot handle on edge
+<var>e</var>, where <var>is_prologue</var> says if this is for a prologue or an
+epilogue instead.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fEMIT_005fPROLOGUE_005fCOMPONENTS"></a>Target Hook: <em>void</em> <strong>TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS</strong> <em>(sbitmap)</em></dt>
+<dd><p>Emit prologue insns for the components indicated by the parameter.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fEMIT_005fEPILOGUE_005fCOMPONENTS"></a>Target Hook: <em>void</em> <strong>TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS</strong> <em>(sbitmap)</em></dt>
+<dd><p>Emit epilogue insns for the components indicated by the parameter.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSHRINK_005fWRAP_005fSET_005fHANDLED_005fCOMPONENTS"></a>Target Hook: <em>void</em> <strong>TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS</strong> <em>(sbitmap)</em></dt>
+<dd><p>Mark the components in the parameter as handled, so that the
+<code>prologue</code> and <code>epilogue</code> named patterns know to ignore those
+components. The target code should not hang on to the <code>sbitmap</code>, it
+will be deleted after this call.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection" accesskey="n" rel="next">Stack Smashing Protection</a>, Previous: <a href="Tail-Calls.html#Tail-Calls" accesskey="p" rel="previous">Tail Calls</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Side-Effects.html b/share/doc/gccint/Side-Effects.html
new file mode 100644
index 0000000..5686ca3
--- /dev/null
+++ b/share/doc/gccint/Side-Effects.html
@@ -0,0 +1,461 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Side Effects</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Side Effects">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Side Effects">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Incdec.html#Incdec" rel="next" title="Incdec">
+<link href="RTL-Declarations.html#RTL-Declarations" rel="previous" title="RTL Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Side-Effects"></a>
+<div class="header">
+<p>
+Next: <a href="Incdec.html#Incdec" accesskey="n" rel="next">Incdec</a>, Previous: <a href="RTL-Declarations.html#RTL-Declarations" accesskey="p" rel="previous">RTL Declarations</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Side-Effect-Expressions"></a>
+<h3 class="section">14.15 Side Effect Expressions</h3>
+<a name="index-RTL-side-effect-expressions"></a>
+
+<p>The expression codes described so far represent values, not actions.
+But machine instructions never produce values; they are meaningful
+only for their side effects on the state of the machine. Special
+expression codes are used to represent side effects.
+</p>
+<p>The body of an instruction is always one of these side effect codes;
+the codes described above, which represent values, appear only as
+the operands of these.
+</p>
+<dl compact="compact">
+<dd><a name="index-set"></a>
+</dd>
+<dt><code>(set <var>lval</var> <var>x</var>)</code></dt>
+<dd><p>Represents the action of storing the value of <var>x</var> into the place
+represented by <var>lval</var>. <var>lval</var> must be an expression
+representing a place that can be stored in: <code>reg</code> (or <code>subreg</code>,
+<code>strict_low_part</code> or <code>zero_extract</code>), <code>mem</code>, <code>pc</code>,
+or <code>parallel</code>.
+</p>
+<p>If <var>lval</var> is a <code>reg</code>, <code>subreg</code> or <code>mem</code>, it has a
+machine mode; then <var>x</var> must be valid for that mode.
+</p>
+<p>If <var>lval</var> is a <code>reg</code> whose machine mode is less than the full
+width of the register, then it means that the part of the register
+specified by the machine mode is given the specified value and the
+rest of the register receives an undefined value. Likewise, if
+<var>lval</var> is a <code>subreg</code> whose machine mode is narrower than
+the mode of the register, the rest of the register can be changed in
+an undefined way.
+</p>
+<p>If <var>lval</var> is a <code>strict_low_part</code> of a subreg, then the part
+of the register specified by the machine mode of the <code>subreg</code> is
+given the value <var>x</var> and the rest of the register is not changed.
+</p>
+<p>If <var>lval</var> is a <code>zero_extract</code>, then the referenced part of
+the bit-field (a memory or register reference) specified by the
+<code>zero_extract</code> is given the value <var>x</var> and the rest of the
+bit-field is not changed. Note that <code>sign_extract</code> cannot
+appear in <var>lval</var>.
+</p>
+<p>If <var>lval</var> is a <code>parallel</code>, it is used to represent the case of
+a function returning a structure in multiple registers. Each element
+of the <code>parallel</code> is an <code>expr_list</code> whose first operand is a
+<code>reg</code> and whose second operand is a <code>const_int</code> representing the
+offset (in bytes) into the structure at which the data in that register
+corresponds. The first element may be null to indicate that the structure
+is also passed partly in memory.
+</p>
+<a name="index-jump-instructions-and-set"></a>
+<a name="index-if_005fthen_005felse-usage"></a>
+<p>If <var>lval</var> is <code>(pc)</code>, we have a jump instruction, and the
+possibilities for <var>x</var> are very limited. It may be a
+<code>label_ref</code> expression (unconditional jump). It may be an
+<code>if_then_else</code> (conditional jump), in which case either the
+second or the third operand must be <code>(pc)</code> (for the case which
+does not jump) and the other of the two must be a <code>label_ref</code>
+(for the case which does jump). <var>x</var> may also be a <code>mem</code> or
+<code>(plus:SI (pc) <var>y</var>)</code>, where <var>y</var> may be a <code>reg</code> or a
+<code>mem</code>; these unusual patterns are used to represent jumps through
+branch tables.
+</p>
+<p>If <var>lval</var> is not <code>(pc)</code>, the mode of
+<var>lval</var> must not be <code>VOIDmode</code> and the mode of <var>x</var> must be
+valid for the mode of <var>lval</var>.
+</p>
+<a name="index-SET_005fDEST"></a>
+<a name="index-SET_005fSRC"></a>
+<p><var>lval</var> is customarily accessed with the <code>SET_DEST</code> macro and
+<var>x</var> with the <code>SET_SRC</code> macro.
+</p>
+<a name="index-return"></a>
+</dd>
+<dt><code>(return)</code></dt>
+<dd><p>As the sole expression in a pattern, represents a return from the
+current function, on machines where this can be done with one
+instruction, such as VAXen. On machines where a multi-instruction
+&ldquo;epilogue&rdquo; must be executed in order to return from the function,
+returning is done by jumping to a label which precedes the epilogue, and
+the <code>return</code> expression code is never used.
+</p>
+<p>Inside an <code>if_then_else</code> expression, represents the value to be
+placed in <code>pc</code> to return to the caller.
+</p>
+<p>Note that an insn pattern of <code>(return)</code> is logically equivalent to
+<code>(set (pc) (return))</code>, but the latter form is never used.
+</p>
+<a name="index-simple_005freturn"></a>
+</dd>
+<dt><code>(simple_return)</code></dt>
+<dd><p>Like <code>(return)</code>, but truly represents only a function return, while
+<code>(return)</code> may represent an insn that also performs other functions
+of the function epilogue. Like <code>(return)</code>, this may also occur in
+conditional jumps.
+</p>
+<a name="index-call-1"></a>
+</dd>
+<dt><code>(call <var>function</var> <var>nargs</var>)</code></dt>
+<dd><p>Represents a function call. <var>function</var> is a <code>mem</code> expression
+whose address is the address of the function to be called.
+<var>nargs</var> is an expression which can be used for two purposes: on
+some machines it represents the number of bytes of stack argument; on
+others, it represents the number of argument registers.
+</p>
+<p>Each machine has a standard machine mode which <var>function</var> must
+have. The machine description defines macro <code>FUNCTION_MODE</code> to
+expand into the requisite mode name. The purpose of this mode is to
+specify what kind of addressing is allowed, on machines where the
+allowed kinds of addressing depend on the machine mode being
+addressed.
+</p>
+<a name="index-clobber"></a>
+</dd>
+<dt><code>(clobber <var>x</var>)</code></dt>
+<dd><p>Represents the storing or possible storing of an unpredictable,
+undescribed value into <var>x</var>, which must be a <code>reg</code>,
+<code>scratch</code>, <code>parallel</code> or <code>mem</code> expression.
+</p>
+<p>One place this is used is in string instructions that store standard
+values into particular hard registers. It may not be worth the
+trouble to describe the values that are stored, but it is essential to
+inform the compiler that the registers will be altered, lest it
+attempt to keep data in them across the string instruction.
+</p>
+<p>If <var>x</var> is <code>(mem:BLK (const_int 0))</code> or
+<code>(mem:BLK (scratch))</code>, it means that all memory
+locations must be presumed clobbered. If <var>x</var> is a <code>parallel</code>,
+it has the same meaning as a <code>parallel</code> in a <code>set</code> expression.
+</p>
+<p>Note that the machine description classifies certain hard registers as
+&ldquo;call-clobbered&rdquo;. All function call instructions are assumed by
+default to clobber these registers, so there is no need to use
+<code>clobber</code> expressions to indicate this fact. Also, each function
+call is assumed to have the potential to alter any memory location,
+unless the function is declared <code>const</code>.
+</p>
+<p>If the last group of expressions in a <code>parallel</code> are each a
+<code>clobber</code> expression whose arguments are <code>reg</code> or
+<code>match_scratch</code> (see <a href="RTL-Template.html#RTL-Template">RTL Template</a>) expressions, the combiner
+phase can add the appropriate <code>clobber</code> expressions to an insn it
+has constructed when doing so will cause a pattern to be matched.
+</p>
+<p>This feature can be used, for example, on a machine that whose multiply
+and add instructions don&rsquo;t use an MQ register but which has an
+add-accumulate instruction that does clobber the MQ register. Similarly,
+a combined instruction might require a temporary register while the
+constituent instructions might not.
+</p>
+<p>When a <code>clobber</code> expression for a register appears inside a
+<code>parallel</code> with other side effects, the register allocator
+guarantees that the register is unoccupied both before and after that
+insn if it is a hard register clobber. For pseudo-register clobber,
+the register allocator and the reload pass do not assign the same hard
+register to the clobber and the input operands if there is an insn
+alternative containing the &lsquo;<samp>&amp;</samp>&rsquo; constraint (see <a href="Modifiers.html#Modifiers">Modifiers</a>) for
+the clobber and the hard register is in register classes of the
+clobber in the alternative. You can clobber either a specific hard
+register, a pseudo register, or a <code>scratch</code> expression; in the
+latter two cases, GCC will allocate a hard register that is available
+there for use as a temporary.
+</p>
+<p>For instructions that require a temporary register, you should use
+<code>scratch</code> instead of a pseudo-register because this will allow the
+combiner phase to add the <code>clobber</code> when required. You do this by
+coding (<code>clobber</code> (<code>match_scratch</code> &hellip;)). If you do
+clobber a pseudo register, use one which appears nowhere else&mdash;generate
+a new one each time. Otherwise, you may confuse CSE.
+</p>
+<p>There is one other known use for clobbering a pseudo register in a
+<code>parallel</code>: when one of the input operands of the insn is also
+clobbered by the insn. In this case, using the same pseudo register in
+the clobber and elsewhere in the insn produces the expected results.
+</p>
+<a name="index-use"></a>
+</dd>
+<dt><code>(use <var>x</var>)</code></dt>
+<dd><p>Represents the use of the value of <var>x</var>. It indicates that the
+value in <var>x</var> at this point in the program is needed, even though
+it may not be apparent why this is so. Therefore, the compiler will
+not attempt to delete previous instructions whose only effect is to
+store a value in <var>x</var>. <var>x</var> must be a <code>reg</code> expression.
+</p>
+<p>In some situations, it may be tempting to add a <code>use</code> of a
+register in a <code>parallel</code> to describe a situation where the value
+of a special register will modify the behavior of the instruction.
+A hypothetical example might be a pattern for an addition that can
+either wrap around or use saturating addition depending on the value
+of a special control register:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3)
+ (reg:SI 4)] 0))
+ (use (reg:SI 1))])
+</pre></div>
+
+
+<p>This will not work, several of the optimizers only look at expressions
+locally; it is very likely that if you have multiple insns with
+identical inputs to the <code>unspec</code>, they will be optimized away even
+if register 1 changes in between.
+</p>
+<p>This means that <code>use</code> can <em>only</em> be used to describe
+that the register is live. You should think twice before adding
+<code>use</code> statements, more often you will want to use <code>unspec</code>
+instead. The <code>use</code> RTX is most commonly useful to describe that
+a fixed register is implicitly used in an insn. It is also safe to use
+in patterns where the compiler knows for other reasons that the result
+of the whole pattern is variable, such as &lsquo;<samp>cpymem<var>m</var></samp>&rsquo; or
+&lsquo;<samp>call</samp>&rsquo; patterns.
+</p>
+<p>During the reload phase, an insn that has a <code>use</code> as pattern
+can carry a reg_equal note. These <code>use</code> insns will be deleted
+before the reload phase exits.
+</p>
+<p>During the delayed branch scheduling phase, <var>x</var> may be an insn.
+This indicates that <var>x</var> previously was located at this place in the
+code and its data dependencies need to be taken into account. These
+<code>use</code> insns will be deleted before the delayed branch scheduling
+phase exits.
+</p>
+<a name="index-parallel"></a>
+</dd>
+<dt><code>(parallel [<var>x0</var> <var>x1</var> &hellip;])</code></dt>
+<dd><p>Represents several side effects performed in parallel. The square
+brackets stand for a vector; the operand of <code>parallel</code> is a
+vector of expressions. <var>x0</var>, <var>x1</var> and so on are individual
+side effect expressions&mdash;expressions of code <code>set</code>, <code>call</code>,
+<code>return</code>, <code>simple_return</code>, <code>clobber</code> or <code>use</code>.
+</p>
+<p>&ldquo;In parallel&rdquo; means that first all the values used in the individual
+side-effects are computed, and second all the actual side-effects are
+performed. For example,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(parallel [(set (reg:SI 1) (mem:SI (reg:SI 1)))
+ (set (mem:SI (reg:SI 1)) (reg:SI 1))])
+</pre></div>
+
+<p>says unambiguously that the values of hard register 1 and the memory
+location addressed by it are interchanged. In both places where
+<code>(reg:SI 1)</code> appears as a memory address it refers to the value
+in register 1 <em>before</em> the execution of the insn.
+</p>
+<p>It follows that it is <em>incorrect</em> to use <code>parallel</code> and
+expect the result of one <code>set</code> to be available for the next one.
+For example, people sometimes attempt to represent a jump-if-zero
+instruction this way:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(parallel [(set (reg:CC CC_REG) (reg:SI 34))
+ (set (pc) (if_then_else
+ (eq (reg:CC CC_REG) (const_int 0))
+ (label_ref &hellip;)
+ (pc)))])
+</pre></div>
+
+<p>But this is incorrect, because it says that the jump condition depends
+on the condition code value <em>before</em> this instruction, not on the
+new value that is set by this instruction.
+</p>
+<a name="index-peephole-optimization_002c-RTL-representation"></a>
+<p>Peephole optimization, which takes place together with final assembly
+code output, can produce insns whose patterns consist of a <code>parallel</code>
+whose elements are the operands needed to output the resulting
+assembler code&mdash;often <code>reg</code>, <code>mem</code> or constant expressions.
+This would not be well-formed RTL at any other stage in compilation,
+but it is OK then because no further optimization remains to be done.
+</p>
+<a name="index-cond_005fexec"></a>
+</dd>
+<dt><code>(cond_exec [<var>cond</var> <var>expr</var>])</code></dt>
+<dd><p>Represents a conditionally executed expression. The <var>expr</var> is
+executed only if the <var>cond</var> is nonzero. The <var>cond</var> expression
+must not have side-effects, but the <var>expr</var> may very well have
+side-effects.
+</p>
+<a name="index-sequence"></a>
+</dd>
+<dt><code>(sequence [<var>insns</var> &hellip;])</code></dt>
+<dd><p>Represents a sequence of insns. If a <code>sequence</code> appears in the
+chain of insns, then each of the <var>insns</var> that appears in the sequence
+must be suitable for appearing in the chain of insns, i.e. must satisfy
+the <code>INSN_P</code> predicate.
+</p>
+<p>After delay-slot scheduling is completed, an insn and all the insns that
+reside in its delay slots are grouped together into a <code>sequence</code>.
+The insn requiring the delay slot is the first insn in the vector;
+subsequent insns are to be placed in the delay slot.
+</p>
+<p><code>INSN_ANNULLED_BRANCH_P</code> is set on an insn in a delay slot to
+indicate that a branch insn should be used that will conditionally annul
+the effect of the insns in the delay slots. In such a case,
+<code>INSN_FROM_TARGET_P</code> indicates that the insn is from the target of
+the branch and should be executed only if the branch is taken; otherwise
+the insn should be executed only if the branch is not taken.
+See <a href="Delay-Slots.html#Delay-Slots">Delay Slots</a>.
+</p>
+<p>Some back ends also use <code>sequence</code> objects for purposes other than
+delay-slot groups. This is not supported in the common parts of the
+compiler, which treat such sequences as delay-slot groups.
+</p>
+<p>DWARF2 Call Frame Address (CFA) adjustments are sometimes also expressed
+using <code>sequence</code> objects as the value of a <code>RTX_FRAME_RELATED_P</code>
+note. This only happens if the CFA adjustments cannot be easily derived
+from the pattern of the instruction to which the note is attached. In
+such cases, the value of the note is used instead of best-guesing the
+semantics of the instruction. The back end can attach notes containing
+a <code>sequence</code> of <code>set</code> patterns that express the effect of the
+parent instruction.
+</p></dd>
+</dl>
+
+<p>These expression codes appear in place of a side effect, as the body of
+an insn, though strictly speaking they do not always describe side
+effects as such:
+</p>
+<dl compact="compact">
+<dd><a name="index-asm_005finput"></a>
+</dd>
+<dt><code>(asm_input <var>s</var>)</code></dt>
+<dd><p>Represents literal assembler code as described by the string <var>s</var>.
+</p>
+<a name="index-unspec"></a>
+<a name="index-unspec_005fvolatile"></a>
+</dd>
+<dt><code>(unspec [<var>operands</var> &hellip;] <var>index</var>)</code></dt>
+<dt><code>(unspec_volatile [<var>operands</var> &hellip;] <var>index</var>)</code></dt>
+<dd><p>Represents a machine-specific operation on <var>operands</var>. <var>index</var>
+selects between multiple machine-specific operations.
+<code>unspec_volatile</code> is used for volatile operations and operations
+that may trap; <code>unspec</code> is used for other operations.
+</p>
+<p>These codes may appear inside a <code>pattern</code> of an
+insn, inside a <code>parallel</code>, or inside an expression.
+</p>
+<a name="index-addr_005fvec"></a>
+</dd>
+<dt><code>(addr_vec:<var>m</var> [<var>lr0</var> <var>lr1</var> &hellip;])</code></dt>
+<dd><p>Represents a table of jump addresses. The vector elements <var>lr0</var>,
+etc., are <code>label_ref</code> expressions. The mode <var>m</var> specifies
+how much space is given to each address; normally <var>m</var> would be
+<code>Pmode</code>.
+</p>
+<a name="index-addr_005fdiff_005fvec"></a>
+</dd>
+<dt><code>(addr_diff_vec:<var>m</var> <var>base</var> [<var>lr0</var> <var>lr1</var> &hellip;] <var>min</var> <var>max</var> <var>flags</var>)</code></dt>
+<dd><p>Represents a table of jump addresses expressed as offsets from
+<var>base</var>. The vector elements <var>lr0</var>, etc., are <code>label_ref</code>
+expressions and so is <var>base</var>. The mode <var>m</var> specifies how much
+space is given to each address-difference. <var>min</var> and <var>max</var>
+are set up by branch shortening and hold a label with a minimum and a
+maximum address, respectively. <var>flags</var> indicates the relative
+position of <var>base</var>, <var>min</var> and <var>max</var> to the containing insn
+and of <var>min</var> and <var>max</var> to <var>base</var>. See rtl.def for details.
+</p>
+<a name="index-prefetch"></a>
+</dd>
+<dt><code>(prefetch:<var>m</var> <var>addr</var> <var>rw</var> <var>locality</var>)</code></dt>
+<dd><p>Represents prefetch of memory at address <var>addr</var>.
+Operand <var>rw</var> is 1 if the prefetch is for data to be written, 0 otherwise;
+targets that do not support write prefetches should treat this as a normal
+prefetch.
+Operand <var>locality</var> specifies the amount of temporal locality; 0 if there
+is none or 1, 2, or 3 for increasing levels of temporal locality;
+targets that do not support locality hints should ignore this.
+</p>
+<p>This insn is used to minimize cache-miss latency by moving data into a
+cache before it is accessed. It should use only non-faulting data prefetch
+instructions.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Incdec.html#Incdec" accesskey="n" rel="next">Incdec</a>, Previous: <a href="RTL-Declarations.html#RTL-Declarations" accesskey="p" rel="previous">RTL Declarations</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Simple-Constraints.html b/share/doc/gccint/Simple-Constraints.html
new file mode 100644
index 0000000..149c1ae
--- /dev/null
+++ b/share/doc/gccint/Simple-Constraints.html
@@ -0,0 +1,433 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Simple Constraints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Simple Constraints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Simple Constraints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Constraints.html#Constraints" rel="up" title="Constraints">
+<link href="Multi_002dAlternative.html#Multi_002dAlternative" rel="next" title="Multi-Alternative">
+<link href="Constraints.html#Constraints" rel="previous" title="Constraints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Simple-Constraints"></a>
+<div class="header">
+<p>
+Next: <a href="Multi_002dAlternative.html#Multi_002dAlternative" accesskey="n" rel="next">Multi-Alternative</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Simple-Constraints-1"></a>
+<h4 class="subsection">17.8.1 Simple Constraints</h4>
+<a name="index-simple-constraints"></a>
+
+<p>The simplest kind of constraint is a string full of letters, each of
+which describes one kind of operand that is permitted. Here are
+the letters that are allowed:
+</p>
+<dl compact="compact">
+<dt>whitespace</dt>
+<dd><p>Whitespace characters are ignored and can be inserted at any position
+except the first. This enables each alternative for different operands to
+be visually aligned in the machine description even if they have different
+number of constraints and modifiers.
+</p>
+<a name="index-m-in-constraint"></a>
+<a name="index-memory-references-in-constraints"></a>
+</dd>
+<dt>&lsquo;<samp>m</samp>&rsquo;</dt>
+<dd><p>A memory operand is allowed, with any kind of address that the machine
+supports in general.
+Note that the letter used for the general memory constraint can be
+re-defined by a back end using the <code>TARGET_MEM_CONSTRAINT</code> macro.
+</p>
+<a name="index-offsettable-address"></a>
+<a name="index-o-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>A memory operand is allowed, but only if the address is
+<em>offsettable</em>. This means that adding a small integer (actually,
+the width in bytes of the operand, as determined by its machine mode)
+may be added to the address and the result is also a valid memory
+address.
+</p>
+<a name="index-autoincrement_002fdecrement-addressing"></a>
+<p>For example, an address which is constant is offsettable; so is an
+address that is the sum of a register and a constant (as long as a
+slightly larger constant is also within the range of address-offsets
+supported by the machine); but an autoincrement or autodecrement
+address is not offsettable. More complicated indirect/indexed
+addresses may or may not be offsettable depending on the other
+addressing modes that the machine supports.
+</p>
+<p>Note that in an output operand which can be matched by another
+operand, the constraint letter &lsquo;<samp>o</samp>&rsquo; is valid only when accompanied
+by both &lsquo;<samp>&lt;</samp>&rsquo; (if the target machine has predecrement addressing)
+and &lsquo;<samp>&gt;</samp>&rsquo; (if the target machine has preincrement addressing).
+</p>
+<a name="index-V-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>V</samp>&rsquo;</dt>
+<dd><p>A memory operand that is not offsettable. In other words, anything that
+would fit the &lsquo;<samp>m</samp>&rsquo; constraint but not the &lsquo;<samp>o</samp>&rsquo; constraint.
+</p>
+<a name="index-_003c-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>&lt;</samp>&rsquo;</dt>
+<dd><p>A memory operand with autodecrement addressing (either predecrement or
+postdecrement) is allowed. In inline <code>asm</code> this constraint is only
+allowed if the operand is used exactly once in an instruction that can
+handle the side effects. Not using an operand with &lsquo;<samp>&lt;</samp>&rsquo; in constraint
+string in the inline <code>asm</code> pattern at all or using it in multiple
+instructions isn&rsquo;t valid, because the side effects wouldn&rsquo;t be performed
+or would be performed more than once. Furthermore, on some targets
+the operand with &lsquo;<samp>&lt;</samp>&rsquo; in constraint string must be accompanied by
+special instruction suffixes like <code>%U0</code> instruction suffix on PowerPC
+or <code>%P0</code> on IA-64.
+</p>
+<a name="index-_003e-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>&gt;</samp>&rsquo;</dt>
+<dd><p>A memory operand with autoincrement addressing (either preincrement or
+postincrement) is allowed. In inline <code>asm</code> the same restrictions
+as for &lsquo;<samp>&lt;</samp>&rsquo; apply.
+</p>
+<a name="index-r-in-constraint"></a>
+<a name="index-registers-in-constraints"></a>
+</dd>
+<dt>&lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>A register operand is allowed provided that it is in a general
+register.
+</p>
+<a name="index-constants-in-constraints"></a>
+<a name="index-i-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>i</samp>&rsquo;</dt>
+<dd><p>An immediate integer operand (one with constant value) is allowed.
+This includes symbolic constants whose values will be known only at
+assembly time or later.
+</p>
+<a name="index-n-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>An immediate integer operand with a known numeric value is allowed.
+Many systems cannot support assembly-time constants for operands less
+than a word wide. Constraints for these operands should use &lsquo;<samp>n</samp>&rsquo;
+rather than &lsquo;<samp>i</samp>&rsquo;.
+</p>
+<a name="index-I-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>I</samp>&rsquo;, &lsquo;<samp>J</samp>&rsquo;, &lsquo;<samp>K</samp>&rsquo;, &hellip; &lsquo;<samp>P</samp>&rsquo;</dt>
+<dd><p>Other letters in the range &lsquo;<samp>I</samp>&rsquo; through &lsquo;<samp>P</samp>&rsquo; may be defined in
+a machine-dependent fashion to permit immediate integer operands with
+explicit integer values in specified ranges. For example, on the
+68000, &lsquo;<samp>I</samp>&rsquo; is defined to stand for the range of values 1 to 8.
+This is the range permitted as a shift count in the shift
+instructions.
+</p>
+<a name="index-E-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>An immediate floating operand (expression code <code>const_double</code>) is
+allowed, but only if the target floating point format is the same as
+that of the host machine (on which the compiler is running).
+</p>
+<a name="index-F-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>F</samp>&rsquo;</dt>
+<dd><p>An immediate floating operand (expression code <code>const_double</code> or
+<code>const_vector</code>) is allowed.
+</p>
+<a name="index-G-in-constraint"></a>
+<a name="index-H-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>G</samp>&rsquo;, &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>&lsquo;<samp>G</samp>&rsquo; and &lsquo;<samp>H</samp>&rsquo; may be defined in a machine-dependent fashion to
+permit immediate floating operands in particular ranges of values.
+</p>
+<a name="index-s-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>An immediate integer operand whose value is not an explicit integer is
+allowed.
+</p>
+<p>This might appear strange; if an insn allows a constant operand with a
+value not known at compile time, it certainly must allow any known
+value. So why use &lsquo;<samp>s</samp>&rsquo; instead of &lsquo;<samp>i</samp>&rsquo;? Sometimes it allows
+better code to be generated.
+</p>
+<p>For example, on the 68000 in a fullword instruction it is possible to
+use an immediate operand; but if the immediate value is between -128
+and 127, better code results from loading the value into a register and
+using the register. This is because the load into the register can be
+done with a &lsquo;<samp>moveq</samp>&rsquo; instruction. We arrange for this to happen
+by defining the letter &lsquo;<samp>K</samp>&rsquo; to mean &ldquo;any integer outside the
+range -128 to 127&rdquo;, and then specifying &lsquo;<samp>Ks</samp>&rsquo; in the operand
+constraints.
+</p>
+<a name="index-g-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>Any register, memory or immediate integer operand is allowed, except for
+registers that are not general registers.
+</p>
+<a name="index-X-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>X</samp>&rsquo;</dt>
+<dd><p>Any operand whatsoever is allowed, even if it does not satisfy
+<code>general_operand</code>. This is normally used in the constraint of
+a <code>match_scratch</code> when certain alternatives will not actually
+require a scratch register.
+</p>
+<a name="index-0-in-constraint"></a>
+<a name="index-digits-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>0</samp>&rsquo;, &lsquo;<samp>1</samp>&rsquo;, &lsquo;<samp>2</samp>&rsquo;, &hellip; &lsquo;<samp>9</samp>&rsquo;</dt>
+<dd><p>An operand that matches the specified operand number is allowed. If a
+digit is used together with letters within the same alternative, the
+digit should come last.
+</p>
+<p>This number is allowed to be more than a single digit. If multiple
+digits are encountered consecutively, they are interpreted as a single
+decimal integer. There is scant chance for ambiguity, since to-date
+it has never been desirable that &lsquo;<samp>10</samp>&rsquo; be interpreted as matching
+either operand 1 <em>or</em> operand 0. Should this be desired, one
+can use multiple alternatives instead.
+</p>
+<a name="index-matching-constraint"></a>
+<a name="index-constraint_002c-matching"></a>
+<p>This is called a <em>matching constraint</em> and what it really means is
+that the assembler has only a single operand that fills two roles
+considered separate in the RTL insn. For example, an add insn has two
+input operands and one output operand in the RTL, but on most CISC
+machines an add instruction really has only two operands, one of them an
+input-output operand:
+</p>
+<div class="smallexample">
+<pre class="smallexample">addl #35,r12
+</pre></div>
+
+<p>Matching constraints are used in these circumstances.
+More precisely, the two operands that match must include one input-only
+operand and one output-only operand. Moreover, the digit must be a
+smaller number than the number of the operand that uses it in the
+constraint.
+</p>
+<p>For operands to match in a particular case usually means that they
+are identical-looking RTL expressions. But in a few special cases
+specific kinds of dissimilarity are allowed. For example, <code>*x</code>
+as an input operand will match <code>*x++</code> as an output operand.
+For proper results in such cases, the output template should always
+use the output-operand&rsquo;s number when printing the operand.
+</p>
+<a name="index-load-address-instruction"></a>
+<a name="index-push-address-instruction"></a>
+<a name="index-address-constraints"></a>
+<a name="index-p-in-constraint"></a>
+</dd>
+<dt>&lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>An operand that is a valid memory address is allowed. This is
+for &ldquo;load address&rdquo; and &ldquo;push address&rdquo; instructions.
+</p>
+<a name="index-address_005foperand-1"></a>
+<p>&lsquo;<samp>p</samp>&rsquo; in the constraint must be accompanied by <code>address_operand</code>
+as the predicate in the <code>match_operand</code>. This predicate interprets
+the mode specified in the <code>match_operand</code> as the mode of the memory
+reference for which the address would be valid.
+</p>
+<a name="index-other-register-constraints"></a>
+<a name="index-extensible-constraints"></a>
+</dd>
+<dt><var>other-letters</var></dt>
+<dd><p>Other letters can be defined in machine-dependent fashion to stand for
+particular classes of registers or other arbitrary operand types.
+&lsquo;<samp>d</samp>&rsquo;, &lsquo;<samp>a</samp>&rsquo; and &lsquo;<samp>f</samp>&rsquo; are defined on the 68000/68020 to stand
+for data, address and floating point registers.
+</p></dd>
+</dl>
+
+<p>In order to have valid assembler code, each operand must satisfy
+its constraint. But a failure to do so does not prevent the pattern
+from applying to an insn. Instead, it directs the compiler to modify
+the code so that the constraint will be satisfied. Usually this is
+done by copying an operand into a register.
+</p>
+<p>Contrast, therefore, the two instruction patterns that follow:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r&quot;)
+ (plus:SI (match_dup 0)
+ (match_operand:SI 1 &quot;general_operand&quot; &quot;r&quot;)))]
+ &quot;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>which has two operands, one of which must appear in two places, and
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=r&quot;)
+ (plus:SI (match_operand:SI 1 &quot;general_operand&quot; &quot;0&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;r&quot;)))]
+ &quot;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>which has three operands, two of which are required by a constraint to be
+identical. If we are considering an insn of the form
+</p>
+<div class="smallexample">
+<pre class="smallexample">(insn <var>n</var> <var>prev</var> <var>next</var>
+ (set (reg:SI 3)
+ (plus:SI (reg:SI 6) (reg:SI 109)))
+ &hellip;)
+</pre></div>
+
+<p>the first pattern would not apply at all, because this insn does not
+contain two identical subexpressions in the right place. The pattern would
+say, &ldquo;That does not look like an add instruction; try other patterns&rdquo;.
+The second pattern would say, &ldquo;Yes, that&rsquo;s an add instruction, but there
+is something wrong with it&rdquo;. It would direct the reload pass of the
+compiler to generate additional insns to make the constraint true. The
+results might look like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(insn <var>n2</var> <var>prev</var> <var>n</var>
+ (set (reg:SI 3) (reg:SI 6))
+ &hellip;)
+
+(insn <var>n</var> <var>n2</var> <var>next</var>
+ (set (reg:SI 3)
+ (plus:SI (reg:SI 3) (reg:SI 109)))
+ &hellip;)
+</pre></div>
+
+<p>It is up to you to make sure that each operand, in each pattern, has
+constraints that can handle any RTL expression that could be present for
+that operand. (When multiple alternatives are in use, each pattern must,
+for each possible combination of operand expressions, have at least one
+alternative which can handle that combination of operands.) The
+constraints don&rsquo;t need to <em>allow</em> any possible operand&mdash;when this is
+the case, they do not constrain&mdash;but they must at least point the way to
+reloading any possible operand so that it will fit.
+</p>
+<ul>
+<li> If the constraint accepts whatever operands the predicate permits,
+there is no problem: reloading is never necessary for this operand.
+
+<p>For example, an operand whose constraints permit everything except
+registers is safe provided its predicate rejects registers.
+</p>
+<p>An operand whose predicate accepts only constant values is safe
+provided its constraints include the letter &lsquo;<samp>i</samp>&rsquo;. If any possible
+constant value is accepted, then nothing less than &lsquo;<samp>i</samp>&rsquo; will do;
+if the predicate is more selective, then the constraints may also be
+more selective.
+</p>
+</li><li> Any operand expression can be reloaded by copying it into a register.
+So if an operand&rsquo;s constraints allow some kind of register, it is
+certain to be safe. It need not permit all classes of registers; the
+compiler knows how to copy a register into another register of the
+proper class in order to make an instruction valid.
+
+</li><li> <a name="index-nonoffsettable-memory-reference"></a>
+<a name="index-memory-reference_002c-nonoffsettable"></a>
+A nonoffsettable memory reference can be reloaded by copying the
+address into a register. So if the constraint uses the letter
+&lsquo;<samp>o</samp>&rsquo;, all memory references are taken care of.
+
+</li><li> A constant operand can be reloaded by allocating space in memory to
+hold it as preinitialized data. Then the memory reference can be used
+in place of the constant. So if the constraint uses the letters
+&lsquo;<samp>o</samp>&rsquo; or &lsquo;<samp>m</samp>&rsquo;, constant operands are not a problem.
+
+</li><li> If the constraint permits a constant and a pseudo register used in an insn
+was not allocated to a hard register and is equivalent to a constant,
+the register will be replaced with the constant. If the predicate does
+not permit a constant and the insn is re-recognized for some reason, the
+compiler will crash. Thus the predicate must always recognize any
+objects allowed by the constraint.
+</li></ul>
+
+<p>If the operand&rsquo;s predicate can recognize registers, but the constraint does
+not permit them, it can make the compiler crash. When this operand happens
+to be a register, the reload pass will be stymied, because it does not know
+how to copy a register temporarily into memory.
+</p>
+<p>If the predicate accepts a unary operator, the constraint applies to the
+operand. For example, the MIPS processor at ISA level 3 supports an
+instruction which adds two registers in <code>SImode</code> to produce a
+<code>DImode</code> result, but only if the registers are correctly sign
+extended. This predicate for the input operands accepts a
+<code>sign_extend</code> of an <code>SImode</code> register. Write the constraint
+to indicate the type of register that is required for the operand of the
+<code>sign_extend</code>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Multi_002dAlternative.html#Multi_002dAlternative" accesskey="n" rel="next">Multi-Alternative</a>, Up: <a href="Constraints.html#Constraints" accesskey="u" rel="up">Constraints</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Small-IPA-passes.html b/share/doc/gccint/Small-IPA-passes.html
new file mode 100644
index 0000000..4f5e5c2
--- /dev/null
+++ b/share/doc/gccint/Small-IPA-passes.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Small IPA passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Small IPA passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Small IPA passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="IPA-passes.html#IPA-passes" rel="up" title="IPA passes">
+<link href="Regular-IPA-passes.html#Regular-IPA-passes" rel="next" title="Regular IPA passes">
+<link href="IPA-passes.html#IPA-passes" rel="previous" title="IPA passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Small-IPA-passes"></a>
+<div class="header">
+<p>
+Next: <a href="Regular-IPA-passes.html#Regular-IPA-passes" accesskey="n" rel="next">Regular IPA passes</a>, Up: <a href="IPA-passes.html#IPA-passes" accesskey="u" rel="up">IPA passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Small-IPA-passes-1"></a>
+<h4 class="subsection">9.4.1 Small IPA passes</h4>
+<a name="index-small-IPA-passes"></a>
+<p>A small IPA pass is a pass derived from <code>simple_ipa_opt_pass</code>.
+As described in <a href="IPA.html#IPA">IPA</a>, it does everything at once and
+defines only the <em>Execute</em> stage. During this
+stage it accesses and modifies the function bodies.
+No <code>generate_summary</code>, <code>read_summary</code>, or <code>write_summary</code>
+hooks are defined.
+</p>
+<ul>
+<li> IPA free lang data
+
+<p>This pass frees resources that are used by the front end but are
+not needed once it is done. It is located in <samp>tree.cc</samp> and is described by
+<code>pass_ipa_free_lang_data</code>.
+</p>
+</li><li> IPA function and variable visibility
+
+<p>This is a local function pass handling visibilities of all symbols. This
+happens before LTO streaming, so <samp>-fwhole-program</samp> should be ignored
+at this level. It is located in <samp>ipa-visibility.cc</samp> and is described by
+<code>pass_ipa_function_and_variable_visibility</code>.
+</p>
+</li><li> IPA remove symbols
+
+<p>This pass performs reachability analysis and reclaims all unreachable nodes.
+It is located in <samp>passes.cc</samp> and is described by
+<code>pass_ipa_remove_symbols</code>.
+</p>
+</li><li> IPA OpenACC
+
+<p>This is a pass group for OpenACC processing. It is located in
+<samp>tree-ssa-loop.cc</samp> and is described by <code>pass_ipa_oacc</code>.
+</p>
+</li><li> IPA points-to analysis
+
+<p>This is a tree-based points-to analysis pass. The idea behind this analyzer
+is to generate set constraints from the program, then solve the resulting
+constraints in order to generate the points-to sets. It is located in
+<samp>tree-ssa-structalias.cc</samp> and is described by <code>pass_ipa_pta</code>.
+</p>
+</li><li> IPA OpenACC kernels
+
+<p>This is a pass group for processing OpenACC kernels regions. It is a
+subpass of the IPA OpenACC pass group that runs on offloaded functions
+containing OpenACC kernels loops. It is located in
+<samp>tree-ssa-loop.cc</samp> and is described by
+<code>pass_ipa_oacc_kernels</code>.
+</p>
+</li><li> Target clone
+
+<p>This is a pass for parsing functions with multiple target attributes.
+It is located in <samp>multiple_target.cc</samp> and is described by
+<code>pass_target_clone</code>.
+</p>
+</li><li> IPA auto profile
+
+<p>This pass uses AutoFDO profiling data to annotate the control flow graph.
+It is located in <samp>auto-profile.cc</samp> and is described by
+<code>pass_ipa_auto_profile</code>.
+</p>
+</li><li> IPA tree profile
+
+<p>This pass does profiling for all functions in the call graph.
+It calculates branch
+probabilities and basic block execution counts. It is located
+in <samp>tree-profile.cc</samp> and is described by <code>pass_ipa_tree_profile</code>.
+</p>
+</li><li> IPA free function summary
+
+<p>This pass is a small IPA pass when argument <code>small_p</code> is true.
+It releases inline function summaries and call summaries.
+It is located in <samp>ipa-fnsummary.cc</samp> and is described by
+<code>pass_ipa_free_free_fn_summary</code>.
+</p>
+</li><li> IPA increase alignment
+
+<p>This pass increases the alignment of global arrays to improve
+vectorization. It is located in <samp>tree-vectorizer.cc</samp>
+and is described by <code>pass_ipa_increase_alignment</code>.
+</p>
+</li><li> IPA transactional memory
+
+<p>This pass is for transactional memory support.
+It is located in <samp>trans-mem.cc</samp> and is described by
+<code>pass_ipa_tm</code>.
+</p>
+</li><li> IPA lower emulated TLS
+
+<p>This pass lowers thread-local storage (TLS) operations
+to emulation functions provided by libgcc.
+It is located in <samp>tree-emutls.cc</samp> and is described by
+<code>pass_ipa_lower_emutls</code>.
+</p>
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Regular-IPA-passes.html#Regular-IPA-passes" accesskey="n" rel="next">Regular IPA passes</a>, Up: <a href="IPA-passes.html#IPA-passes" accesskey="u" rel="up">IPA passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Soft-float-library-routines.html b/share/doc/gccint/Soft-float-library-routines.html
new file mode 100644
index 0000000..5889761
--- /dev/null
+++ b/share/doc/gccint/Soft-float-library-routines.html
@@ -0,0 +1,393 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Soft float library routines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Soft float library routines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Soft float library routines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Libgcc.html#Libgcc" rel="up" title="Libgcc">
+<link href="Decimal-float-library-routines.html#Decimal-float-library-routines" rel="next" title="Decimal float library routines">
+<link href="Integer-library-routines.html#Integer-library-routines" rel="previous" title="Integer library routines">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Soft-float-library-routines"></a>
+<div class="header">
+<p>
+Next: <a href="Decimal-float-library-routines.html#Decimal-float-library-routines" accesskey="n" rel="next">Decimal float library routines</a>, Previous: <a href="Integer-library-routines.html#Integer-library-routines" accesskey="p" rel="previous">Integer library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Routines-for-floating-point-emulation"></a>
+<h3 class="section">4.2 Routines for floating point emulation</h3>
+<a name="index-soft-float-library"></a>
+<a name="index-arithmetic-library"></a>
+<a name="index-math-library"></a>
+<a name="index-msoft_002dfloat"></a>
+
+<p>The software floating point library is used on machines which do not
+have hardware support for floating point. It is also used whenever
+<samp>-msoft-float</samp> is used to disable generation of floating point
+instructions. (Not all targets support this switch.)
+</p>
+<p>For compatibility with other compilers, the floating point emulation
+routines can be renamed with the <code>DECLARE_LIBRARY_RENAMES</code> macro
+(see <a href="Library-Calls.html#Library-Calls">Library Calls</a>). In this section, the default names are used.
+</p>
+<p>Presently the library does not support <code>XFmode</code>, which is used
+for <code>long double</code> on some architectures.
+</p>
+<a name="Arithmetic-functions-1"></a>
+<h4 class="subsection">4.2.1 Arithmetic functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005faddsf3"></a>Runtime Function: <em>float</em> <strong>__addsf3</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fadddf3"></a>Runtime Function: <em>double</em> <strong>__adddf3</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddtf3"></a>Runtime Function: <em>long double</em> <strong>__addtf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005faddxf3"></a>Runtime Function: <em>long double</em> <strong>__addxf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return the sum of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fsubsf3"></a>Runtime Function: <em>float</em> <strong>__subsf3</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubdf3"></a>Runtime Function: <em>double</em> <strong>__subdf3</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubtf3"></a>Runtime Function: <em>long double</em> <strong>__subtf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fsubxf3"></a>Runtime Function: <em>long double</em> <strong>__subxf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return the difference between <var>b</var> and <var>a</var>;
+that is, <em><var>a</var> - <var>b</var></em><!-- /@w -->.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmulsf3"></a>Runtime Function: <em>float</em> <strong>__mulsf3</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmuldf3"></a>Runtime Function: <em>double</em> <strong>__muldf3</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmultf3"></a>Runtime Function: <em>long double</em> <strong>__multf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fmulxf3"></a>Runtime Function: <em>long double</em> <strong>__mulxf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return the product of <var>a</var> and <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdivsf3"></a>Runtime Function: <em>float</em> <strong>__divsf3</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivdf3"></a>Runtime Function: <em>double</em> <strong>__divdf3</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivtf3"></a>Runtime Function: <em>long double</em> <strong>__divtf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fdivxf3"></a>Runtime Function: <em>long double</em> <strong>__divxf3</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return the quotient of <var>a</var> and <var>b</var>; that is,
+<em><var>a</var> / <var>b</var></em><!-- /@w -->.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fnegsf2"></a>Runtime Function: <em>float</em> <strong>__negsf2</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegdf2"></a>Runtime Function: <em>double</em> <strong>__negdf2</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegtf2"></a>Runtime Function: <em>long double</em> <strong>__negtf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fnegxf2"></a>Runtime Function: <em>long double</em> <strong>__negxf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions return the negation of <var>a</var>. They simply flip the
+sign bit, so they can produce negative zero and negative NaN.
+</p></dd></dl>
+
+<a name="Conversion-functions"></a>
+<h4 class="subsection">4.2.2 Conversion functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fextendsfdf2"></a>Runtime Function: <em>double</em> <strong>__extendsfdf2</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fextendsftf2"></a>Runtime Function: <em>long double</em> <strong>__extendsftf2</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fextendsfxf2"></a>Runtime Function: <em>long double</em> <strong>__extendsfxf2</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fextenddftf2"></a>Runtime Function: <em>long double</em> <strong>__extenddftf2</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005fextenddfxf2"></a>Runtime Function: <em>long double</em> <strong>__extenddfxf2</strong> <em>(double <var>a</var>)</em></dt>
+<dd><p>These functions extend <var>a</var> to the wider mode of their return
+type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ftruncxfdf2"></a>Runtime Function: <em>double</em> <strong>__truncxfdf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ftrunctfdf2"></a>Runtime Function: <em>double</em> <strong>__trunctfdf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ftruncxfsf2"></a>Runtime Function: <em>float</em> <strong>__truncxfsf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ftrunctfsf2"></a>Runtime Function: <em>float</em> <strong>__trunctfsf2</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ftruncdfsf2"></a>Runtime Function: <em>float</em> <strong>__truncdfsf2</strong> <em>(double <var>a</var>)</em></dt>
+<dd><p>These functions truncate <var>a</var> to the narrower mode of their return
+type, rounding toward zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixsfsi"></a>Runtime Function: <em>int</em> <strong>__fixsfsi</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixdfsi"></a>Runtime Function: <em>int</em> <strong>__fixdfsi</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixtfsi"></a>Runtime Function: <em>int</em> <strong>__fixtfsi</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixxfsi"></a>Runtime Function: <em>int</em> <strong>__fixxfsi</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to a signed integer, rounding toward zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixsfdi"></a>Runtime Function: <em>long</em> <strong>__fixsfdi</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixdfdi"></a>Runtime Function: <em>long</em> <strong>__fixdfdi</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixtfdi"></a>Runtime Function: <em>long</em> <strong>__fixtfdi</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixxfdi"></a>Runtime Function: <em>long</em> <strong>__fixxfdi</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to a signed long, rounding toward zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixsfti"></a>Runtime Function: <em>long long</em> <strong>__fixsfti</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixdfti"></a>Runtime Function: <em>long long</em> <strong>__fixdfti</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixtfti"></a>Runtime Function: <em>long long</em> <strong>__fixtfti</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixxfti"></a>Runtime Function: <em>long long</em> <strong>__fixxfti</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to a signed long long, rounding toward zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixunssfsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fixunssfsi</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsdfsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fixunsdfsi</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunstfsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fixunstfsi</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsxfsi"></a>Runtime Function: <em>unsigned int</em> <strong>__fixunsxfsi</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to an unsigned integer, rounding
+toward zero. Negative values all become zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixunssfdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fixunssfdi</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsdfdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fixunsdfdi</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunstfdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fixunstfdi</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsxfdi"></a>Runtime Function: <em>unsigned long</em> <strong>__fixunsxfdi</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to an unsigned long, rounding
+toward zero. Negative values all become zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffixunssfti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fixunssfti</strong> <em>(float <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsdfti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fixunsdfti</strong> <em>(double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunstfti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fixunstfti</strong> <em>(long double <var>a</var>)</em></dt>
+<dt><a name="index-_005f_005ffixunsxfti"></a>Runtime Function: <em>unsigned long long</em> <strong>__fixunsxfti</strong> <em>(long double <var>a</var>)</em></dt>
+<dd><p>These functions convert <var>a</var> to an unsigned long long, rounding
+toward zero. Negative values all become zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloatsisf"></a>Runtime Function: <em>float</em> <strong>__floatsisf</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatsidf"></a>Runtime Function: <em>double</em> <strong>__floatsidf</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatsitf"></a>Runtime Function: <em>long double</em> <strong>__floatsitf</strong> <em>(int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatsixf"></a>Runtime Function: <em>long double</em> <strong>__floatsixf</strong> <em>(int <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, a signed integer, to floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloatdisf"></a>Runtime Function: <em>float</em> <strong>__floatdisf</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatdidf"></a>Runtime Function: <em>double</em> <strong>__floatdidf</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatditf"></a>Runtime Function: <em>long double</em> <strong>__floatditf</strong> <em>(long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatdixf"></a>Runtime Function: <em>long double</em> <strong>__floatdixf</strong> <em>(long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, a signed long, to floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloattisf"></a>Runtime Function: <em>float</em> <strong>__floattisf</strong> <em>(long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloattidf"></a>Runtime Function: <em>double</em> <strong>__floattidf</strong> <em>(long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloattitf"></a>Runtime Function: <em>long double</em> <strong>__floattitf</strong> <em>(long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloattixf"></a>Runtime Function: <em>long double</em> <strong>__floattixf</strong> <em>(long long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, a signed long long, to floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloatunsisf"></a>Runtime Function: <em>float</em> <strong>__floatunsisf</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatunsidf"></a>Runtime Function: <em>double</em> <strong>__floatunsidf</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatunsitf"></a>Runtime Function: <em>long double</em> <strong>__floatunsitf</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatunsixf"></a>Runtime Function: <em>long double</em> <strong>__floatunsixf</strong> <em>(unsigned int <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, an unsigned integer, to floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloatundisf"></a>Runtime Function: <em>float</em> <strong>__floatundisf</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatundidf"></a>Runtime Function: <em>double</em> <strong>__floatundidf</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatunditf"></a>Runtime Function: <em>long double</em> <strong>__floatunditf</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatundixf"></a>Runtime Function: <em>long double</em> <strong>__floatundixf</strong> <em>(unsigned long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, an unsigned long, to floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005ffloatuntisf"></a>Runtime Function: <em>float</em> <strong>__floatuntisf</strong> <em>(unsigned long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatuntidf"></a>Runtime Function: <em>double</em> <strong>__floatuntidf</strong> <em>(unsigned long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatuntitf"></a>Runtime Function: <em>long double</em> <strong>__floatuntitf</strong> <em>(unsigned long long <var>i</var>)</em></dt>
+<dt><a name="index-_005f_005ffloatuntixf"></a>Runtime Function: <em>long double</em> <strong>__floatuntixf</strong> <em>(unsigned long long <var>i</var>)</em></dt>
+<dd><p>These functions convert <var>i</var>, an unsigned long long, to floating point.
+</p></dd></dl>
+
+<a name="Comparison-functions-1"></a>
+<h4 class="subsection">4.2.3 Comparison functions</h4>
+
+<p>There are two sets of basic comparison functions.
+</p>
+<dl>
+<dt><a name="index-_005f_005fcmpsf2"></a>Runtime Function: <em>int</em> <strong>__cmpsf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmpdf2"></a>Runtime Function: <em>int</em> <strong>__cmpdf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fcmptf2"></a>Runtime Function: <em>int</em> <strong>__cmptf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions calculate <em>a &lt;=&gt; b</em>. That is, if <var>a</var> is less
+than <var>b</var>, they return -1; if <var>a</var> is greater than <var>b</var>, they
+return 1; and if <var>a</var> and <var>b</var> are equal they return 0. If
+either argument is NaN they return 1, but you should not rely on this;
+if NaN is a possibility, use one of the higher-level comparison
+functions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005funordsf2"></a>Runtime Function: <em>int</em> <strong>__unordsf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005funorddf2"></a>Runtime Function: <em>int</em> <strong>__unorddf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005funordtf2"></a>Runtime Function: <em>int</em> <strong>__unordtf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a nonzero value if either argument is NaN, otherwise 0.
+</p></dd></dl>
+
+<p>There is also a complete group of higher level functions which
+correspond directly to comparison operators. They implement the ISO C
+semantics for floating-point comparisons, taking NaN into account.
+Pay careful attention to the return values defined for each set.
+Under the hood, all of these routines are implemented as
+</p>
+<div class="smallexample">
+<pre class="smallexample"> if (__unord<var>X</var>f2 (a, b))
+ return <var>E</var>;
+ return __cmp<var>X</var>f2 (a, b);
+</pre></div>
+
+<p>where <var>E</var> is a constant chosen to give the proper behavior for
+NaN. Thus, the meaning of the return value is different for each set.
+Do not rely on this implementation; only the semantics documented
+below are guaranteed.
+</p>
+<dl>
+<dt><a name="index-_005f_005feqsf2"></a>Runtime Function: <em>int</em> <strong>__eqsf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005feqdf2"></a>Runtime Function: <em>int</em> <strong>__eqdf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005feqtf2"></a>Runtime Function: <em>int</em> <strong>__eqtf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return zero if neither argument is NaN, and <var>a</var> and
+<var>b</var> are equal.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fnesf2"></a>Runtime Function: <em>int</em> <strong>__nesf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fnedf2"></a>Runtime Function: <em>int</em> <strong>__nedf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fnetf2"></a>Runtime Function: <em>int</em> <strong>__netf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a nonzero value if either argument is NaN, or
+if <var>a</var> and <var>b</var> are unequal.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fgesf2"></a>Runtime Function: <em>int</em> <strong>__gesf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fgedf2"></a>Runtime Function: <em>int</em> <strong>__gedf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fgetf2"></a>Runtime Function: <em>int</em> <strong>__getf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a value greater than or equal to zero if
+neither argument is NaN, and <var>a</var> is greater than or equal to
+<var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fltsf2"></a>Runtime Function: <em>int</em> <strong>__ltsf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fltdf2"></a>Runtime Function: <em>int</em> <strong>__ltdf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005flttf2"></a>Runtime Function: <em>int</em> <strong>__lttf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a value less than zero if neither argument is
+NaN, and <var>a</var> is strictly less than <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005flesf2"></a>Runtime Function: <em>int</em> <strong>__lesf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fledf2"></a>Runtime Function: <em>int</em> <strong>__ledf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fletf2"></a>Runtime Function: <em>int</em> <strong>__letf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a value less than or equal to zero if neither
+argument is NaN, and <var>a</var> is less than or equal to <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fgtsf2"></a>Runtime Function: <em>int</em> <strong>__gtsf2</strong> <em>(float <var>a</var>, float <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fgtdf2"></a>Runtime Function: <em>int</em> <strong>__gtdf2</strong> <em>(double <var>a</var>, double <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fgttf2"></a>Runtime Function: <em>int</em> <strong>__gttf2</strong> <em>(long double <var>a</var>, long double <var>b</var>)</em></dt>
+<dd><p>These functions return a value greater than zero if neither argument
+is NaN, and <var>a</var> is strictly greater than <var>b</var>.
+</p></dd></dl>
+
+<a name="Other-floating_002dpoint-functions"></a>
+<h4 class="subsection">4.2.4 Other floating-point functions</h4>
+
+<dl>
+<dt><a name="index-_005f_005fpowisf2"></a>Runtime Function: <em>float</em> <strong>__powisf2</strong> <em>(float <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fpowidf2"></a>Runtime Function: <em>double</em> <strong>__powidf2</strong> <em>(double <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fpowitf2"></a>Runtime Function: <em>long double</em> <strong>__powitf2</strong> <em>(long double <var>a</var>, int <var>b</var>)</em></dt>
+<dt><a name="index-_005f_005fpowixf2"></a>Runtime Function: <em>long double</em> <strong>__powixf2</strong> <em>(long double <var>a</var>, int <var>b</var>)</em></dt>
+<dd><p>These functions convert raise <var>a</var> to the power <var>b</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fmulsc3"></a>Runtime Function: <em>complex float</em> <strong>__mulsc3</strong> <em>(float <var>a</var>, float <var>b</var>, float <var>c</var>, float <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fmuldc3"></a>Runtime Function: <em>complex double</em> <strong>__muldc3</strong> <em>(double <var>a</var>, double <var>b</var>, double <var>c</var>, double <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fmultc3"></a>Runtime Function: <em>complex long double</em> <strong>__multc3</strong> <em>(long double <var>a</var>, long double <var>b</var>, long double <var>c</var>, long double <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fmulxc3"></a>Runtime Function: <em>complex long double</em> <strong>__mulxc3</strong> <em>(long double <var>a</var>, long double <var>b</var>, long double <var>c</var>, long double <var>d</var>)</em></dt>
+<dd><p>These functions return the product of <em><var>a</var> + i<var>b</var></em> and
+<em><var>c</var> + i<var>d</var></em>, following the rules of C99 Annex G.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fdivsc3"></a>Runtime Function: <em>complex float</em> <strong>__divsc3</strong> <em>(float <var>a</var>, float <var>b</var>, float <var>c</var>, float <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fdivdc3"></a>Runtime Function: <em>complex double</em> <strong>__divdc3</strong> <em>(double <var>a</var>, double <var>b</var>, double <var>c</var>, double <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fdivtc3"></a>Runtime Function: <em>complex long double</em> <strong>__divtc3</strong> <em>(long double <var>a</var>, long double <var>b</var>, long double <var>c</var>, long double <var>d</var>)</em></dt>
+<dt><a name="index-_005f_005fdivxc3"></a>Runtime Function: <em>complex long double</em> <strong>__divxc3</strong> <em>(long double <var>a</var>, long double <var>b</var>, long double <var>c</var>, long double <var>d</var>)</em></dt>
+<dd><p>These functions return the quotient of <em><var>a</var> + i<var>b</var></em> and
+<em><var>c</var> + i<var>d</var></em> (i.e., <em>(<var>a</var> + i<var>b</var>) / (<var>c</var>
++ i<var>d</var>)</em>), following the rules of C99 Annex G.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Decimal-float-library-routines.html#Decimal-float-library-routines" accesskey="n" rel="next">Decimal float library routines</a>, Previous: <a href="Integer-library-routines.html#Integer-library-routines" accesskey="p" rel="previous">Integer library routines</a>, Up: <a href="Libgcc.html#Libgcc" accesskey="u" rel="up">Libgcc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Sorting-poly_005fints.html b/share/doc/gccint/Sorting-poly_005fints.html
new file mode 100644
index 0000000..6dbb91f
--- /dev/null
+++ b/share/doc/gccint/Sorting-poly_005fints.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Sorting poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Sorting poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Sorting poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" rel="up" title="Comparisons involving poly_int">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="next" title="Arithmetic on poly_ints">
+<link href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints" rel="previous" title="Range checks on poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Sorting-poly_005fints"></a>
+<div class="header">
+<p>
+Previous: <a href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints" accesskey="p" rel="previous">Range checks on <code>poly_int</code>s</a>, Up: <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="u" rel="up">Comparisons involving <code>poly_int</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Sorting-poly_005fints-1"></a>
+<h4 class="subsection">10.3.7 Sorting <code>poly_int</code>s</h4>
+
+<p><code>poly_int</code> provides the following routine for sorting:
+</p>
+<dl compact="compact">
+<dt>&lsquo;<samp>compare_sizes_for_sort (<var>a</var>, <var>b</var>)</samp>&rsquo;</dt>
+<dd><p>Compare <var>a</var> and <var>b</var> in reverse lexicographical order (that is,
+compare the highest-indexed coefficients first). This can be useful when
+sorting data structures, since it has the effect of separating constant
+and non-constant values. If all values are nonnegative, the constant
+values come first.
+</p>
+<p>Note that the values do not necessarily end up in numerical order.
+For example, &lsquo;<samp>1 + 1<var>x</var></samp>&rsquo; would come after &lsquo;<samp>100</samp>&rsquo; in the sort order,
+but may well be less than &lsquo;<samp>100</samp>&rsquo; at run time.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Source-Tree.html b/share/doc/gccint/Source-Tree.html
new file mode 100644
index 0000000..b6ddd99
--- /dev/null
+++ b/share/doc/gccint/Source-Tree.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Source Tree</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Source Tree">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Source Tree">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Configure-Terms.html#Configure-Terms" rel="next" title="Configure Terms">
+<link href="Languages.html#Languages" rel="previous" title="Languages">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Source-Tree"></a>
+<div class="header">
+<p>
+Next: <a href="Testsuites.html#Testsuites" accesskey="n" rel="next">Testsuites</a>, Previous: <a href="Languages.html#Languages" accesskey="p" rel="previous">Languages</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Source-Tree-Structure-and-Build-System"></a>
+<h2 class="chapter">6 Source Tree Structure and Build System</h2>
+
+<p>This chapter describes the structure of the GCC source tree, and how
+GCC is built. The user documentation for building and installing GCC
+is in a separate manual (<a href="https://gcc.gnu.org/install/">https://gcc.gnu.org/install/</a>), with
+which it is presumed that you are familiar.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Configure-Terms.html#Configure-Terms" accesskey="1">Configure Terms</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Configuration terminology and history.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Top-Level.html#Top-Level" accesskey="2">Top Level</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The top level source directory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="gcc-Directory.html#gcc-Directory" accesskey="3">gcc Directory</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The <samp>gcc</samp> subdirectory.
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Special-Accessors.html b/share/doc/gccint/Special-Accessors.html
new file mode 100644
index 0000000..bfe4013
--- /dev/null
+++ b/share/doc/gccint/Special-Accessors.html
@@ -0,0 +1,293 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Special Accessors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Special Accessors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Special Accessors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Flags.html#Flags" rel="next" title="Flags">
+<link href="Accessors.html#Accessors" rel="previous" title="Accessors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Special-Accessors"></a>
+<div class="header">
+<p>
+Next: <a href="Flags.html#Flags" accesskey="n" rel="next">Flags</a>, Previous: <a href="Accessors.html#Accessors" accesskey="p" rel="previous">Accessors</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Access-to-Special-Operands"></a>
+<h3 class="section">14.4 Access to Special Operands</h3>
+<a name="index-access-to-special-operands"></a>
+
+<p>Some RTL nodes have special annotations associated with them.
+</p>
+<dl compact="compact">
+<dt><code>MEM</code></dt>
+<dd><dl compact="compact">
+<dd><a name="index-MEM_005fALIAS_005fSET"></a>
+</dd>
+<dt><code>MEM_ALIAS_SET (<var>x</var>)</code></dt>
+<dd><p>If 0, <var>x</var> is not in any alias set, and may alias anything. Otherwise,
+<var>x</var> can only alias <code>MEM</code>s in a conflicting alias set. This value
+is set in a language-dependent manner in the front-end, and should not be
+altered in the back-end. In some front-ends, these numbers may correspond
+in some way to types, or other language-level entities, but they need not,
+and the back-end makes no such assumptions.
+These set numbers are tested with <code>alias_sets_conflict_p</code>.
+</p>
+<a name="index-MEM_005fEXPR"></a>
+</dd>
+<dt><code>MEM_EXPR (<var>x</var>)</code></dt>
+<dd><p>If this register is known to hold the value of some user-level
+declaration, this is that tree node. It may also be a
+<code>COMPONENT_REF</code>, in which case this is some field reference,
+and <code>TREE_OPERAND (<var>x</var>, 0)</code> contains the declaration,
+or another <code>COMPONENT_REF</code>, or null if there is no compile-time
+object associated with the reference.
+</p>
+<a name="index-MEM_005fOFFSET_005fKNOWN_005fP"></a>
+</dd>
+<dt><code>MEM_OFFSET_KNOWN_P (<var>x</var>)</code></dt>
+<dd><p>True if the offset of the memory reference from <code>MEM_EXPR</code> is known.
+&lsquo;<samp>MEM_OFFSET (<var>x</var>)</samp>&rsquo; provides the offset if so.
+</p>
+<a name="index-MEM_005fOFFSET"></a>
+</dd>
+<dt><code>MEM_OFFSET (<var>x</var>)</code></dt>
+<dd><p>The offset from the start of <code>MEM_EXPR</code>. The value is only valid if
+&lsquo;<samp>MEM_OFFSET_KNOWN_P (<var>x</var>)</samp>&rsquo; is true.
+</p>
+<a name="index-MEM_005fSIZE_005fKNOWN_005fP"></a>
+</dd>
+<dt><code>MEM_SIZE_KNOWN_P (<var>x</var>)</code></dt>
+<dd><p>True if the size of the memory reference is known.
+&lsquo;<samp>MEM_SIZE (<var>x</var>)</samp>&rsquo; provides its size if so.
+</p>
+<a name="index-MEM_005fSIZE"></a>
+</dd>
+<dt><code>MEM_SIZE (<var>x</var>)</code></dt>
+<dd><p>The size in bytes of the memory reference.
+This is mostly relevant for <code>BLKmode</code> references as otherwise
+the size is implied by the mode. The value is only valid if
+&lsquo;<samp>MEM_SIZE_KNOWN_P (<var>x</var>)</samp>&rsquo; is true.
+</p>
+<a name="index-MEM_005fALIGN"></a>
+</dd>
+<dt><code>MEM_ALIGN (<var>x</var>)</code></dt>
+<dd><p>The known alignment in bits of the memory reference.
+</p>
+<a name="index-MEM_005fADDR_005fSPACE"></a>
+</dd>
+<dt><code>MEM_ADDR_SPACE (<var>x</var>)</code></dt>
+<dd><p>The address space of the memory reference. This will commonly be zero
+for the generic address space.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>REG</code></dt>
+<dd><dl compact="compact">
+<dd><a name="index-ORIGINAL_005fREGNO"></a>
+</dd>
+<dt><code>ORIGINAL_REGNO (<var>x</var>)</code></dt>
+<dd><p>This field holds the number the register &ldquo;originally&rdquo; had; for a
+pseudo register turned into a hard reg this will hold the old pseudo
+register number.
+</p>
+<a name="index-REG_005fEXPR"></a>
+</dd>
+<dt><code>REG_EXPR (<var>x</var>)</code></dt>
+<dd><p>If this register is known to hold the value of some user-level
+declaration, this is that tree node.
+</p>
+<a name="index-REG_005fOFFSET"></a>
+</dd>
+<dt><code>REG_OFFSET (<var>x</var>)</code></dt>
+<dd><p>If this register is known to hold the value of some user-level
+declaration, this is the offset into that logical storage.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code>SYMBOL_REF</code></dt>
+<dd><dl compact="compact">
+<dd><a name="index-SYMBOL_005fREF_005fDECL"></a>
+</dd>
+<dt><code>SYMBOL_REF_DECL (<var>x</var>)</code></dt>
+<dd><p>If the <code>symbol_ref</code> <var>x</var> was created for a <code>VAR_DECL</code> or
+a <code>FUNCTION_DECL</code>, that tree is recorded here. If this value is
+null, then <var>x</var> was created by back end code generation routines,
+and there is no associated front end symbol table entry.
+</p>
+<p><code>SYMBOL_REF_DECL</code> may also point to a tree of class <code>'c'</code>,
+that is, some sort of constant. In this case, the <code>symbol_ref</code>
+is an entry in the per-file constant pool; again, there is no associated
+front end symbol table entry.
+</p>
+<a name="index-SYMBOL_005fREF_005fCONSTANT"></a>
+</dd>
+<dt><code>SYMBOL_REF_CONSTANT (<var>x</var>)</code></dt>
+<dd><p>If &lsquo;<samp>CONSTANT_POOL_ADDRESS_P (<var>x</var>)</samp>&rsquo; is true, this is the constant
+pool entry for <var>x</var>. It is null otherwise.
+</p>
+<a name="index-SYMBOL_005fREF_005fDATA"></a>
+</dd>
+<dt><code>SYMBOL_REF_DATA (<var>x</var>)</code></dt>
+<dd><p>A field of opaque type used to store <code>SYMBOL_REF_DECL</code> or
+<code>SYMBOL_REF_CONSTANT</code>.
+</p>
+<a name="index-SYMBOL_005fREF_005fFLAGS"></a>
+</dd>
+<dt><code>SYMBOL_REF_FLAGS (<var>x</var>)</code></dt>
+<dd><p>In a <code>symbol_ref</code>, this is used to communicate various predicates
+about the symbol. Some of these are common enough to be computed by
+common code, some are specific to the target. The common bits are:
+</p>
+<dl compact="compact">
+<dd><a name="index-SYMBOL_005fREF_005fFUNCTION_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fFUNCTION"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_FUNCTION</code></dt>
+<dd><p>Set if the symbol refers to a function.
+</p>
+<a name="index-SYMBOL_005fREF_005fLOCAL_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fLOCAL"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_LOCAL</code></dt>
+<dd><p>Set if the symbol is local to this &ldquo;module&rdquo;.
+See <code>TARGET_BINDS_LOCAL_P</code>.
+</p>
+<a name="index-SYMBOL_005fREF_005fEXTERNAL_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fEXTERNAL"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_EXTERNAL</code></dt>
+<dd><p>Set if this symbol is not defined in this translation unit.
+Note that this is not the inverse of <code>SYMBOL_FLAG_LOCAL</code>.
+</p>
+<a name="index-SYMBOL_005fREF_005fSMALL_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fSMALL"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_SMALL</code></dt>
+<dd><p>Set if the symbol is located in the small data section.
+See <code>TARGET_IN_SMALL_DATA_P</code>.
+</p>
+<a name="index-SYMBOL_005fFLAG_005fTLS_005fSHIFT"></a>
+<a name="index-SYMBOL_005fREF_005fTLS_005fMODEL"></a>
+</dd>
+<dt><code>SYMBOL_REF_TLS_MODEL (<var>x</var>)</code></dt>
+<dd><p>This is a multi-bit field accessor that returns the <code>tls_model</code>
+to be used for a thread-local storage symbol. It returns zero for
+non-thread-local symbols.
+</p>
+<a name="index-SYMBOL_005fREF_005fHAS_005fBLOCK_005fINFO_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fHAS_005fBLOCK_005fINFO"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_HAS_BLOCK_INFO</code></dt>
+<dd><p>Set if the symbol has <code>SYMBOL_REF_BLOCK</code> and
+<code>SYMBOL_REF_BLOCK_OFFSET</code> fields.
+</p>
+<a name="index-SYMBOL_005fREF_005fANCHOR_005fP"></a>
+<a name="index-SYMBOL_005fFLAG_005fANCHOR"></a>
+<a name="index-_002dfsection_002danchors"></a>
+</dd>
+<dt><code>SYMBOL_FLAG_ANCHOR</code></dt>
+<dd><p>Set if the symbol is used as a section anchor. &ldquo;Section anchors&rdquo;
+are symbols that have a known position within an <code>object_block</code>
+and that can be used to access nearby members of that block.
+They are used to implement <samp>-fsection-anchors</samp>.
+</p>
+<p>If this flag is set, then <code>SYMBOL_FLAG_HAS_BLOCK_INFO</code> will be too.
+</p></dd>
+</dl>
+
+<p>Bits beginning with <code>SYMBOL_FLAG_MACH_DEP</code> are available for
+the target&rsquo;s use.
+</p></dd>
+</dl>
+
+<a name="index-SYMBOL_005fREF_005fBLOCK"></a>
+</dd>
+<dt><code>SYMBOL_REF_BLOCK (<var>x</var>)</code></dt>
+<dd><p>If &lsquo;<samp>SYMBOL_REF_HAS_BLOCK_INFO_P (<var>x</var>)</samp>&rsquo;, this is the
+&lsquo;<samp>object_block</samp>&rsquo; structure to which the symbol belongs,
+or <code>NULL</code> if it has not been assigned a block.
+</p>
+<a name="index-SYMBOL_005fREF_005fBLOCK_005fOFFSET"></a>
+</dd>
+<dt><code>SYMBOL_REF_BLOCK_OFFSET (<var>x</var>)</code></dt>
+<dd><p>If &lsquo;<samp>SYMBOL_REF_HAS_BLOCK_INFO_P (<var>x</var>)</samp>&rsquo;, this is the offset of <var>x</var>
+from the first object in &lsquo;<samp>SYMBOL_REF_BLOCK (<var>x</var>)</samp>&rsquo;. The value is
+negative if <var>x</var> has not yet been assigned to a block, or it has not
+been given an offset within that block.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Flags.html#Flags" accesskey="n" rel="next">Flags</a>, Previous: <a href="Accessors.html#Accessors" accesskey="p" rel="previous">Accessors</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Stack-Arguments.html b/share/doc/gccint/Stack-Arguments.html
new file mode 100644
index 0000000..015f0d0
--- /dev/null
+++ b/share/doc/gccint/Stack-Arguments.html
@@ -0,0 +1,264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Stack Arguments</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Stack Arguments">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Stack Arguments">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Register-Arguments.html#Register-Arguments" rel="next" title="Register Arguments">
+<link href="Elimination.html#Elimination" rel="previous" title="Elimination">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Stack-Arguments"></a>
+<div class="header">
+<p>
+Next: <a href="Register-Arguments.html#Register-Arguments" accesskey="n" rel="next">Register Arguments</a>, Previous: <a href="Elimination.html#Elimination" accesskey="p" rel="previous">Elimination</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Passing-Function-Arguments-on-the-Stack"></a>
+<h4 class="subsection">18.9.6 Passing Function Arguments on the Stack</h4>
+<a name="index-arguments-on-stack"></a>
+<a name="index-stack-arguments"></a>
+
+<p>The macros in this section control how arguments are passed
+on the stack. See the following section for other macros that
+control passing certain arguments in registers.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fPROMOTE_005fPROTOTYPES"></a>Target Hook: <em>bool</em> <strong>TARGET_PROMOTE_PROTOTYPES</strong> <em>(const_tree <var>fntype</var>)</em></dt>
+<dd><p>This target hook returns <code>true</code> if an argument declared in a
+prototype as an integral type smaller than <code>int</code> should actually be
+passed as an <code>int</code>. In addition to avoiding errors in certain
+cases of mismatch, it also makes for better code on certain machines.
+The default is to not promote prototypes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPUSH_005fARGUMENT"></a>Target Hook: <em>bool</em> <strong>TARGET_PUSH_ARGUMENT</strong> <em>(unsigned int <var>npush</var>)</em></dt>
+<dd><p>This target hook returns <code>true</code> if push instructions will be
+used to pass outgoing arguments. When the push instruction usage is
+optional, <var>npush</var> is nonzero to indicate the number of bytes to
+push. Otherwise, <var>npush</var> is zero. If the target machine does not
+have a push instruction or push instruction should be avoided,
+<code>false</code> should be returned. That directs GCC to use an alternate
+strategy: to allocate the entire argument block and then store the
+arguments into it. If this target hook may return <code>true</code>,
+<code>PUSH_ROUNDING</code> must be defined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PUSH_005fARGS_005fREVERSED"></a>Macro: <strong>PUSH_ARGS_REVERSED</strong></dt>
+<dd><p>A C expression. If nonzero, function arguments will be evaluated from
+last to first, rather than from first to last. If this macro is not
+defined, it defaults to <code>PUSH_ARGS</code> on targets where the stack
+and args grow in opposite directions, and 0 otherwise.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PUSH_005fROUNDING"></a>Macro: <strong>PUSH_ROUNDING</strong> <em>(<var>npushed</var>)</em></dt>
+<dd><p>A C expression that is the number of bytes actually pushed onto the
+stack when an instruction attempts to push <var>npushed</var> bytes.
+</p>
+<p>On some machines, the definition
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define PUSH_ROUNDING(BYTES) (BYTES)
+</pre></div>
+
+<p>will suffice. But on other machines, instructions that appear
+to push one byte actually push two bytes in an attempt to maintain
+alignment. Then the definition should be
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) &amp; ~1)
+</pre></div>
+
+<p>If the value of this macro has a type, it should be an unsigned type.
+</p></dd></dl>
+
+<a name="index-outgoing_005fargs_005fsize"></a>
+<a name="index-crtl_002d_003eoutgoing_005fargs_005fsize"></a>
+<dl>
+<dt><a name="index-ACCUMULATE_005fOUTGOING_005fARGS"></a>Macro: <strong>ACCUMULATE_OUTGOING_ARGS</strong></dt>
+<dd><p>A C expression. If nonzero, the maximum amount of space required for outgoing arguments
+will be computed and placed into
+<code>crtl-&gt;outgoing_args_size</code>. No space will be pushed
+onto the stack for each call; instead, the function prologue should
+increase the stack frame size by this amount.
+</p>
+<p>Setting both <code>PUSH_ARGS</code> and <code>ACCUMULATE_OUTGOING_ARGS</code>
+is not proper.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REG_005fPARM_005fSTACK_005fSPACE"></a>Macro: <strong>REG_PARM_STACK_SPACE</strong> <em>(<var>fndecl</var>)</em></dt>
+<dd><p>Define this macro if functions should assume that stack space has been
+allocated for arguments even when their values are passed in
+registers.
+</p>
+<p>The value of this macro is the size, in bytes, of the area reserved for
+arguments passed in registers for the function represented by <var>fndecl</var>,
+which can be zero if GCC is calling a library function.
+The argument <var>fndecl</var> can be the FUNCTION_DECL, or the type itself
+of the function.
+</p>
+<p>This space can be allocated by the caller, or be a part of the
+machine-dependent stack frame: <code>OUTGOING_REG_PARM_STACK_SPACE</code> says
+which.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCOMING_005fREG_005fPARM_005fSTACK_005fSPACE"></a>Macro: <strong>INCOMING_REG_PARM_STACK_SPACE</strong> <em>(<var>fndecl</var>)</em></dt>
+<dd><p>Like <code>REG_PARM_STACK_SPACE</code>, but for incoming register arguments.
+Define this macro if space guaranteed when compiling a function body
+is different to space required when making a call, a situation that
+can arise with K&amp;R style function definitions.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-OUTGOING_005fREG_005fPARM_005fSTACK_005fSPACE"></a>Macro: <strong>OUTGOING_REG_PARM_STACK_SPACE</strong> <em>(<var>fntype</var>)</em></dt>
+<dd><p>Define this to a nonzero value if it is the responsibility of the
+caller to allocate the area reserved for arguments passed in registers
+when calling a function of <var>fntype</var>. <var>fntype</var> may be NULL
+if the function called is a library function.
+</p>
+<p>If <code>ACCUMULATE_OUTGOING_ARGS</code> is defined, this macro controls
+whether the space for these arguments counts in the value of
+<code>crtl-&gt;outgoing_args_size</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fPARMS_005fIN_005fREG_005fPARM_005fAREA"></a>Macro: <strong>STACK_PARMS_IN_REG_PARM_AREA</strong></dt>
+<dd><p>Define this macro if <code>REG_PARM_STACK_SPACE</code> is defined, but the
+stack parameters don&rsquo;t skip the area specified by it.
+</p>
+<p>Normally, when a parameter is not passed in registers, it is placed on the
+stack beyond the <code>REG_PARM_STACK_SPACE</code> area. Defining this macro
+suppresses this behavior and causes the parameter to be passed on the
+stack in its natural location.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRETURN_005fPOPS_005fARGS"></a>Target Hook: <em>poly_int64</em> <strong>TARGET_RETURN_POPS_ARGS</strong> <em>(tree <var>fundecl</var>, tree <var>funtype</var>, poly_int64 <var>size</var>)</em></dt>
+<dd><p>This target hook returns the number of bytes of its own arguments that
+a function pops on returning, or 0 if the function pops no arguments
+and the caller must therefore pop them all after the function returns.
+</p>
+<p><var>fundecl</var> is a C variable whose value is a tree node that describes
+the function in question. Normally it is a node of type
+<code>FUNCTION_DECL</code> that describes the declaration of the function.
+From this you can obtain the <code>DECL_ATTRIBUTES</code> of the function.
+</p>
+<p><var>funtype</var> is a C variable whose value is a tree node that
+describes the function in question. Normally it is a node of type
+<code>FUNCTION_TYPE</code> that describes the data type of the function.
+From this it is possible to obtain the data types of the value and
+arguments (if known).
+</p>
+<p>When a call to a library function is being considered, <var>fundecl</var>
+will contain an identifier node for the library function. Thus, if
+you need to distinguish among various library functions, you can do so
+by their names. Note that &ldquo;library function&rdquo; in this context means
+a function used to perform arithmetic, whose name is known specially
+in the compiler and was not mentioned in the C code being compiled.
+</p>
+<p><var>size</var> is the number of bytes of arguments passed on the
+stack. If a variable number of bytes is passed, it is zero, and
+argument popping will always be the responsibility of the calling function.
+</p>
+<p>On the VAX, all functions always pop their arguments, so the definition
+of this macro is <var>size</var>. On the 68000, using the standard
+calling convention, no functions pop their arguments, so the value of
+the macro is always 0 in this case. But an alternative calling
+convention is available in which functions that take a fixed number of
+arguments pop them but other functions (such as <code>printf</code>) pop
+nothing (the caller pops all). When this convention is in use,
+<var>funtype</var> is examined to determine whether a function takes a fixed
+number of arguments.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CALL_005fPOPS_005fARGS"></a>Macro: <strong>CALL_POPS_ARGS</strong> <em>(<var>cum</var>)</em></dt>
+<dd><p>A C expression that should indicate the number of bytes a call sequence
+pops off the stack. It is added to the value of <code>RETURN_POPS_ARGS</code>
+when compiling a function call.
+</p>
+<p><var>cum</var> is the variable in which all arguments to the called function
+have been accumulated.
+</p>
+<p>On certain architectures, such as the SH5, a call trampoline is used
+that pops certain registers off the stack, depending on the arguments
+that have been passed to the function. Since this is a property of the
+call site, not of the called function, <code>RETURN_POPS_ARGS</code> is not
+appropriate.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Register-Arguments.html#Register-Arguments" accesskey="n" rel="next">Register Arguments</a>, Previous: <a href="Elimination.html#Elimination" accesskey="p" rel="previous">Elimination</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Stack-Checking.html b/share/doc/gccint/Stack-Checking.html
new file mode 100644
index 0000000..1ce4943
--- /dev/null
+++ b/share/doc/gccint/Stack-Checking.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Stack Checking</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Stack Checking">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Stack Checking">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Frame-Registers.html#Frame-Registers" rel="next" title="Frame Registers">
+<link href="Exception-Handling.html#Exception-Handling" rel="previous" title="Exception Handling">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Stack-Checking"></a>
+<div class="header">
+<p>
+Next: <a href="Frame-Registers.html#Frame-Registers" accesskey="n" rel="next">Frame Registers</a>, Previous: <a href="Exception-Handling.html#Exception-Handling" accesskey="p" rel="previous">Exception Handling</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Specifying-How-Stack-Checking-is-Done"></a>
+<h4 class="subsection">18.9.3 Specifying How Stack Checking is Done</h4>
+
+<p>GCC will check that stack references are within the boundaries of the
+stack, if the option <samp>-fstack-check</samp> is specified, in one of
+three ways:
+</p>
+<ol>
+<li> If the value of the <code>STACK_CHECK_BUILTIN</code> macro is nonzero, GCC
+will assume that you have arranged for full stack checking to be done
+at appropriate places in the configuration files. GCC will not do
+other special processing.
+
+</li><li> If <code>STACK_CHECK_BUILTIN</code> is zero and the value of the
+<code>STACK_CHECK_STATIC_BUILTIN</code> macro is nonzero, GCC will assume
+that you have arranged for static stack checking (checking of the
+static stack frame of functions) to be done at appropriate places
+in the configuration files. GCC will only emit code to do dynamic
+stack checking (checking on dynamic stack allocations) using the third
+approach below.
+
+</li><li> If neither of the above are true, GCC will generate code to periodically
+&ldquo;probe&rdquo; the stack pointer using the values of the macros defined below.
+</li></ol>
+
+<p>If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is defined,
+GCC will change its allocation strategy for large objects if the option
+<samp>-fstack-check</samp> is specified: they will always be allocated
+dynamically if their size exceeds <code>STACK_CHECK_MAX_VAR_SIZE</code> bytes.
+</p>
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fBUILTIN"></a>Macro: <strong>STACK_CHECK_BUILTIN</strong></dt>
+<dd><p>A nonzero value if stack checking is done by the configuration files in a
+machine-dependent manner. You should define this macro if stack checking
+is required by the ABI of your machine or if you would like to do stack
+checking in some more efficient way than the generic approach. The default
+value of this macro is zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fSTATIC_005fBUILTIN"></a>Macro: <strong>STACK_CHECK_STATIC_BUILTIN</strong></dt>
+<dd><p>A nonzero value if static stack checking is done by the configuration files
+in a machine-dependent manner. You should define this macro if you would
+like to do static stack checking in some more efficient way than the generic
+approach. The default value of this macro is zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fPROBE_005fINTERVAL_005fEXP"></a>Macro: <strong>STACK_CHECK_PROBE_INTERVAL_EXP</strong></dt>
+<dd><p>An integer specifying the interval at which GCC must generate stack probe
+instructions, defined as 2 raised to this integer. You will normally
+define this macro so that the interval be no larger than the size of
+the &ldquo;guard pages&rdquo; at the end of a stack area. The default value
+of 12 (4096-byte interval) is suitable for most systems.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fMOVING_005fSP"></a>Macro: <strong>STACK_CHECK_MOVING_SP</strong></dt>
+<dd><p>An integer which is nonzero if GCC should move the stack pointer page by page
+when doing probes. This can be necessary on systems where the stack pointer
+contains the bottom address of the memory area accessible to the executing
+thread at any point in time. In this situation an alternate signal stack
+is required in order to be able to recover from a stack overflow. The
+default value of this macro is zero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fPROTECT"></a>Macro: <strong>STACK_CHECK_PROTECT</strong></dt>
+<dd><p>The number of bytes of stack needed to recover from a stack overflow, for
+languages where such a recovery is supported. The default value of 4KB/8KB
+with the <code>setjmp</code>/<code>longjmp</code>-based exception handling mechanism and
+8KB/12KB with other exception handling mechanisms should be adequate for most
+architectures and operating systems.
+</p></dd></dl>
+
+<p>The following macros are relevant only if neither STACK_CHECK_BUILTIN
+nor STACK_CHECK_STATIC_BUILTIN is defined; you can omit them altogether
+in the opposite case.
+</p>
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fMAX_005fFRAME_005fSIZE"></a>Macro: <strong>STACK_CHECK_MAX_FRAME_SIZE</strong></dt>
+<dd><p>The maximum size of a stack frame, in bytes. GCC will generate probe
+instructions in non-leaf functions to ensure at least this many bytes of
+stack are available. If a stack frame is larger than this size, stack
+checking will not be reliable and GCC will issue a warning. The
+default is chosen so that GCC only generates one instruction on most
+systems. You should normally not change the default value of this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fFIXED_005fFRAME_005fSIZE"></a>Macro: <strong>STACK_CHECK_FIXED_FRAME_SIZE</strong></dt>
+<dd><p>GCC uses this value to generate the above warning message. It
+represents the amount of fixed frame used by a function, not including
+space for any callee-saved registers, temporaries and user variables.
+You need only specify an upper bound for this amount and will normally
+use the default of four words.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fCHECK_005fMAX_005fVAR_005fSIZE"></a>Macro: <strong>STACK_CHECK_MAX_VAR_SIZE</strong></dt>
+<dd><p>The maximum size, in bytes, of an object that GCC will place in the
+fixed area of the stack frame when the user specifies
+<samp>-fstack-check</samp>.
+GCC computed the default from the values of the above macros and you will
+normally not need to override that default.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTACK_005fCLASH_005fPROTECTION_005fALLOCA_005fPROBE_005fRANGE"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE</strong> <em>(void)</em></dt>
+<dd><p>Some targets have an ABI defined interval for which no probing needs to be done.
+When a probe does need to be done this same interval is used as the probe distance
+up when doing stack clash protection for alloca.
+On such targets this value can be set to override the default probing up interval.
+Define this variable to return nonzero if such a probe range is required or zero otherwise.
+Defining this hook also requires your functions which make use of alloca to have at least 8 byes
+of outgoing arguments. If this is not the case the stack will be corrupted.
+You need not define this macro if it would always have the value zero.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Frame-Registers.html#Frame-Registers" accesskey="n" rel="next">Frame Registers</a>, Previous: <a href="Exception-Handling.html#Exception-Handling" accesskey="p" rel="previous">Exception Handling</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Stack-Registers.html b/share/doc/gccint/Stack-Registers.html
new file mode 100644
index 0000000..c3a4c67
--- /dev/null
+++ b/share/doc/gccint/Stack-Registers.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Stack Registers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Stack Registers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Stack Registers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html#Registers" rel="up" title="Registers">
+<link href="Register-Classes.html#Register-Classes" rel="next" title="Register Classes">
+<link href="Leaf-Functions.html#Leaf-Functions" rel="previous" title="Leaf Functions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Stack-Registers"></a>
+<div class="header">
+<p>
+Previous: <a href="Leaf-Functions.html#Leaf-Functions" accesskey="p" rel="previous">Leaf Functions</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Registers-That-Form-a-Stack"></a>
+<h4 class="subsection">18.7.5 Registers That Form a Stack</h4>
+
+<p>There are special features to handle computers where some of the
+&ldquo;registers&rdquo; form a stack. Stack registers are normally written by
+pushing onto the stack, and are numbered relative to the top of the
+stack.
+</p>
+<p>Currently, GCC can only handle one group of stack-like registers, and
+they must be consecutively numbered. Furthermore, the existing
+support for stack-like registers is specific to the 80387 floating
+point coprocessor. If you have a new architecture that uses
+stack-like registers, you will need to do substantial work on
+<samp>reg-stack.cc</samp> and write your machine description to cooperate
+with it, as well as defining these macros.
+</p>
+<dl>
+<dt><a name="index-STACK_005fREGS"></a>Macro: <strong>STACK_REGS</strong></dt>
+<dd><p>Define this if the machine has any stack-like registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fREG_005fCOVER_005fCLASS"></a>Macro: <strong>STACK_REG_COVER_CLASS</strong></dt>
+<dd><p>This is a cover class containing the stack registers. Define this if
+the machine has any stack-like registers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FIRST_005fSTACK_005fREG"></a>Macro: <strong>FIRST_STACK_REG</strong></dt>
+<dd><p>The number of the first stack-like register. This one is the top
+of the stack.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LAST_005fSTACK_005fREG"></a>Macro: <strong>LAST_STACK_REG</strong></dt>
+<dd><p>The number of the last stack-like register. This one is the bottom of
+the stack.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Stack-Smashing-Protection.html b/share/doc/gccint/Stack-Smashing-Protection.html
new file mode 100644
index 0000000..198f3f7
--- /dev/null
+++ b/share/doc/gccint/Stack-Smashing-Protection.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Stack Smashing Protection</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Stack Smashing Protection">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Stack Smashing Protection">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks" rel="next" title="Miscellaneous Register Hooks">
+<link href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components" rel="previous" title="Shrink-wrapping separate components">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Stack-Smashing-Protection"></a>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks" accesskey="n" rel="next">Miscellaneous Register Hooks</a>, Previous: <a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components" accesskey="p" rel="previous">Shrink-wrapping separate components</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Stack-smashing-protection"></a>
+<h4 class="subsection">18.9.15 Stack smashing protection</h4>
+<a name="index-stack-smashing-protection"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fSTACK_005fPROTECT_005fGUARD"></a>Target Hook: <em>tree</em> <strong>TARGET_STACK_PROTECT_GUARD</strong> <em>(void)</em></dt>
+<dd><p>This hook returns a <code>DECL</code> node for the external variable to use
+for the stack protection guard. This variable is initialized by the
+runtime to some random value and is used to initialize the guard value
+that is placed at the top of the local stack frame. The type of this
+variable must be <code>ptr_type_node</code>.
+</p>
+<p>The default version of this hook creates a variable called
+&lsquo;<samp>__stack_chk_guard</samp>&rsquo;, which is normally defined in <samp>libgcc2.c</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTACK_005fPROTECT_005fFAIL"></a>Target Hook: <em>tree</em> <strong>TARGET_STACK_PROTECT_FAIL</strong> <em>(void)</em></dt>
+<dd><p>This hook returns a <code>CALL_EXPR</code> that alerts the runtime that the
+stack protect guard variable has been modified. This expression should
+involve a call to a <code>noreturn</code> function.
+</p>
+<p>The default version of this hook invokes a function called
+&lsquo;<samp>__stack_chk_fail</samp>&rsquo;, taking no arguments. This function is
+normally defined in <samp>libgcc2.c</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTACK_005fPROTECT_005fRUNTIME_005fENABLED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_STACK_PROTECT_RUNTIME_ENABLED_P</strong> <em>(void)</em></dt>
+<dd><p>Returns true if the target wants GCC&rsquo;s default stack protect runtime support,
+otherwise return false. The default implementation always returns true.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSUPPORTS_005fSPLIT_005fSTACK"></a>Common Target Hook: <em>bool</em> <strong>TARGET_SUPPORTS_SPLIT_STACK</strong> <em>(bool <var>report</var>, struct gcc_options *<var>opts</var>)</em></dt>
+<dd><p>Whether this target supports splitting the stack when the options
+described in <var>opts</var> have been passed. This is called
+after options have been parsed, so the target may reject splitting
+the stack in some configurations. The default version of this hook
+returns false. If <var>report</var> is true, this function may issue a warning
+or error; if <var>report</var> is false, it must simply return a value
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fGET_005fVALID_005fOPTION_005fVALUES"></a>Common Target Hook: <em>vec&lt;const char *&gt;</em> <strong>TARGET_GET_VALID_OPTION_VALUES</strong> <em>(int <var>option_code</var>, const char *<var>prefix</var>)</em></dt>
+<dd><p>The hook is used for options that have a non-trivial list of
+possible option values. OPTION_CODE is option code of opt_code
+enum type. PREFIX is used for bash completion and allows an implementation
+to return more specific completion based on the prefix. All string values
+should be allocated from heap memory and consumers should release them.
+The result will be pruned to cases with PREFIX if not NULL.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks" accesskey="n" rel="next">Miscellaneous Register Hooks</a>, Previous: <a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components" accesskey="p" rel="previous">Shrink-wrapping separate components</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Stack-and-Calling.html b/share/doc/gccint/Stack-and-Calling.html
new file mode 100644
index 0000000..dce7999
--- /dev/null
+++ b/share/doc/gccint/Stack-and-Calling.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Stack and Calling</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Stack and Calling">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Stack and Calling">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Frame-Layout.html#Frame-Layout" rel="next" title="Frame Layout">
+<link href="Register-Classes.html#Register-Classes" rel="previous" title="Register Classes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Stack-and-Calling"></a>
+<div class="header">
+<p>
+Next: <a href="Varargs.html#Varargs" accesskey="n" rel="next">Varargs</a>, Previous: <a href="Register-Classes.html#Register-Classes" accesskey="p" rel="previous">Register Classes</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Stack-Layout-and-Calling-Conventions"></a>
+<h3 class="section">18.9 Stack Layout and Calling Conventions</h3>
+<a name="index-calling-conventions"></a>
+
+<p>This describes the stack layout and calling conventions.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Frame-Layout.html#Frame-Layout" accesskey="1">Frame Layout</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Exception-Handling.html#Exception-Handling" accesskey="2">Exception Handling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack-Checking.html#Stack-Checking" accesskey="3">Stack Checking</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Frame-Registers.html#Frame-Registers" accesskey="4">Frame Registers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Elimination.html#Elimination" accesskey="5">Elimination</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack-Arguments.html#Stack-Arguments" accesskey="6">Stack Arguments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Register-Arguments.html#Register-Arguments" accesskey="7">Register Arguments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scalar-Return.html#Scalar-Return" accesskey="8">Scalar Return</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Aggregate-Return.html#Aggregate-Return" accesskey="9">Aggregate Return</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Caller-Saves.html#Caller-Saves">Caller Saves</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Function-Entry.html#Function-Entry">Function Entry</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Profiling.html#Profiling">Profiling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tail-Calls.html#Tail-Calls">Tail Calls</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">Shrink-wrapping separate components</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">Stack Smashing Protection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks">Miscellaneous Register Hooks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Standard-Names.html b/share/doc/gccint/Standard-Names.html
new file mode 100644
index 0000000..f78bc19
--- /dev/null
+++ b/share/doc/gccint/Standard-Names.html
@@ -0,0 +1,3707 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Standard Names</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Standard Names">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Standard Names">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
+<link href="Pattern-Ordering.html#Pattern-Ordering" rel="next" title="Pattern Ordering">
+<link href="C-Constraint-Interface.html#C-Constraint-Interface" rel="previous" title="C Constraint Interface">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Standard-Names"></a>
+<div class="header">
+<p>
+Next: <a href="Pattern-Ordering.html#Pattern-Ordering" accesskey="n" rel="next">Pattern Ordering</a>, Previous: <a href="Constraints.html#Constraints" accesskey="p" rel="previous">Constraints</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Standard-Pattern-Names-For-Generation"></a>
+<h3 class="section">17.9 Standard Pattern Names For Generation</h3>
+<a name="index-standard-pattern-names"></a>
+<a name="index-pattern-names"></a>
+<a name="index-names_002c-pattern"></a>
+
+<p>Here is a table of the instruction names that are meaningful in the RTL
+generation pass of the compiler. Giving one of these names to an
+instruction pattern tells the RTL generation pass that it can use the
+pattern to accomplish a certain task.
+</p>
+<dl compact="compact">
+<dd><a name="index-movm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mov<var>m</var></samp>&rsquo;</dt>
+<dd><p>Here <var>m</var> stands for a two-letter machine mode name, in lowercase.
+This instruction pattern moves data with that machine mode from operand
+1 to operand 0. For example, &lsquo;<samp>movsi</samp>&rsquo; moves full-word data.
+</p>
+<p>If operand 0 is a <code>subreg</code> with mode <var>m</var> of a register whose
+own mode is wider than <var>m</var>, the effect of this instruction is
+to store the specified value in the part of the register that corresponds
+to mode <var>m</var>. Bits outside of <var>m</var>, but which are within the
+same target word as the <code>subreg</code> are undefined. Bits which are
+outside the target word are left unchanged.
+</p>
+<p>This class of patterns is special in several ways. First of all, each
+of these names up to and including full word size <em>must</em> be defined,
+because there is no other way to copy a datum from one place to another.
+If there are patterns accepting operands in larger modes,
+&lsquo;<samp>mov<var>m</var></samp>&rsquo; must be defined for integer modes of those sizes.
+</p>
+<p>Second, these patterns are not used solely in the RTL generation pass.
+Even the reload pass can generate move insns to copy values from stack
+slots into temporary registers. When it does so, one of the operands is
+a hard register and the other is an operand that can need to be reloaded
+into a register.
+</p>
+<a name="index-force_005freg"></a>
+<p>Therefore, when given such a pair of operands, the pattern must generate
+RTL which needs no reloading and needs no temporary registers&mdash;no
+registers other than the operands. For example, if you support the
+pattern with a <code>define_expand</code>, then in such a case the
+<code>define_expand</code> mustn&rsquo;t call <code>force_reg</code> or any other such
+function which might generate new pseudo registers.
+</p>
+<p>This requirement exists even for subword modes on a RISC machine where
+fetching those modes from memory normally requires several insns and
+some temporary registers.
+</p>
+<a name="index-change_005faddress"></a>
+<p>During reload a memory reference with an invalid address may be passed
+as an operand. Such an address will be replaced with a valid address
+later in the reload pass. In this case, nothing may be done with the
+address except to use it as it stands. If it is copied, it will not be
+replaced with a valid address. No attempt should be made to make such
+an address into a valid address and no routine (such as
+<code>change_address</code>) that will do so may be called. Note that
+<code>general_operand</code> will fail when applied to such an address.
+</p>
+<a name="index-reload_005fin_005fprogress"></a>
+<p>The global variable <code>reload_in_progress</code> (which must be explicitly
+declared if required) can be used to determine whether such special
+handling is required.
+</p>
+<p>The variety of operands that have reloads depends on the rest of the
+machine description, but typically on a RISC machine these can only be
+pseudo registers that did not get hard registers, while on other
+machines explicit memory references will get optional reloads.
+</p>
+<p>If a scratch register is required to move an object to or from memory,
+it can be allocated using <code>gen_reg_rtx</code> prior to life analysis.
+</p>
+<p>If there are cases which need scratch registers during or after reload,
+you must provide an appropriate secondary_reload target hook.
+</p>
+<a name="index-can_005fcreate_005fpseudo_005fp"></a>
+<p>The macro <code>can_create_pseudo_p</code> can be used to determine if it
+is unsafe to create new pseudo registers. If this variable is nonzero, then
+it is unsafe to call <code>gen_reg_rtx</code> to allocate a new pseudo.
+</p>
+<p>The constraints on a &lsquo;<samp>mov<var>m</var></samp>&rsquo; must permit moving any hard
+register to any other hard register provided that
+<code>TARGET_HARD_REGNO_MODE_OK</code> permits mode <var>m</var> in both registers and
+<code>TARGET_REGISTER_MOVE_COST</code> applied to their classes returns a value
+of 2.
+</p>
+<p>It is obligatory to support floating point &lsquo;<samp>mov<var>m</var></samp>&rsquo;
+instructions into and out of any registers that can hold fixed point
+values, because unions and structures (which have modes <code>SImode</code> or
+<code>DImode</code>) can be in those registers and they may have floating
+point members.
+</p>
+<p>There may also be a need to support fixed point &lsquo;<samp>mov<var>m</var></samp>&rsquo;
+instructions in and out of floating point registers. Unfortunately, I
+have forgotten why this was so, and I don&rsquo;t know whether it is still
+true. If <code>TARGET_HARD_REGNO_MODE_OK</code> rejects fixed point values in
+floating point registers, then the constraints of the fixed point
+&lsquo;<samp>mov<var>m</var></samp>&rsquo; instructions must be designed to avoid ever trying to
+reload into a floating point register.
+</p>
+<a name="index-reload_005fin-instruction-pattern"></a>
+<a name="index-reload_005fout-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reload_in<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>reload_out<var>m</var></samp>&rsquo;</dt>
+<dd><p>These named patterns have been obsoleted by the target hook
+<code>secondary_reload</code>.
+</p>
+<p>Like &lsquo;<samp>mov<var>m</var></samp>&rsquo;, but used when a scratch register is required to
+move between operand 0 and operand 1. Operand 2 describes the scratch
+register. See the discussion of the <code>SECONDARY_RELOAD_CLASS</code>
+macro in see <a href="Register-Classes.html#Register-Classes">Register Classes</a>.
+</p>
+<p>There are special restrictions on the form of the <code>match_operand</code>s
+used in these patterns. First, only the predicate for the reload
+operand is examined, i.e., <code>reload_in</code> examines operand 1, but not
+the predicates for operand 0 or 2. Second, there may be only one
+alternative in the constraints. Third, only a single register class
+letter may be used for the constraint; subsequent constraint letters
+are ignored. As a special exception, an empty constraint string
+matches the <code>ALL_REGS</code> register class. This may relieve ports
+of the burden of defining an <code>ALL_REGS</code> constraint letter just
+for these patterns.
+</p>
+<a name="index-movstrictm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>movstrict<var>m</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>mov<var>m</var></samp>&rsquo; except that if operand 0 is a <code>subreg</code>
+with mode <var>m</var> of a register whose natural mode is wider,
+the &lsquo;<samp>movstrict<var>m</var></samp>&rsquo; instruction is guaranteed not to alter
+any of the register except the part which belongs to mode <var>m</var>.
+</p>
+<a name="index-movmisalignm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>movmisalign<var>m</var></samp>&rsquo;</dt>
+<dd><p>This variant of a move pattern is designed to load or store a value
+from a memory address that is not naturally aligned for its mode.
+For a store, the memory will be in operand 0; for a load, the memory
+will be in operand 1. The other operand is guaranteed not to be a
+memory, so that it&rsquo;s easy to tell whether this is a load or store.
+</p>
+<p>This pattern is used by the autovectorizer, and when expanding a
+<code>MISALIGNED_INDIRECT_REF</code> expression.
+</p>
+<a name="index-load_005fmultiple-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>load_multiple</samp>&rsquo;</dt>
+<dd><p>Load several consecutive memory locations into consecutive registers.
+Operand 0 is the first of the consecutive registers, operand 1
+is the first memory location, and operand 2 is a constant: the
+number of consecutive registers.
+</p>
+<p>Define this only if the target machine really has such an instruction;
+do not define this if the most efficient way of loading consecutive
+registers from memory is to do them one at a time.
+</p>
+<p>On some machines, there are restrictions as to which consecutive
+registers can be stored into memory, such as particular starting or
+ending register numbers or only a range of valid counts. For those
+machines, use a <code>define_expand</code> (see <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>)
+and make the pattern fail if the restrictions are not met.
+</p>
+<p>Write the generated insn as a <code>parallel</code> with elements being a
+<code>set</code> of one register from the appropriate memory location (you may
+also need <code>use</code> or <code>clobber</code> elements). Use a
+<code>match_parallel</code> (see <a href="RTL-Template.html#RTL-Template">RTL Template</a>) to recognize the insn. See
+<samp>rs6000.md</samp> for examples of the use of this insn pattern.
+</p>
+<a name="index-store_005fmultiple-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>store_multiple</samp>&rsquo;</dt>
+<dd><p>Similar to &lsquo;<samp>load_multiple</samp>&rsquo;, but store several consecutive registers
+into consecutive memory locations. Operand 0 is the first of the
+consecutive memory locations, operand 1 is the first register, and
+operand 2 is a constant: the number of consecutive registers.
+</p>
+<a name="index-vec_005fload_005flanesmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_load_lanes<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Perform an interleaved load of several vectors from memory operand 1
+into register operand 0. Both operands have mode <var>m</var>. The register
+operand is viewed as holding consecutive vectors of mode <var>n</var>,
+while the memory operand is a flat array that contains the same number
+of elements. The operation is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int c = GET_MODE_SIZE (<var>m</var>) / GET_MODE_SIZE (<var>n</var>);
+for (j = 0; j &lt; GET_MODE_NUNITS (<var>n</var>); j++)
+ for (i = 0; i &lt; c; i++)
+ operand0[i][j] = operand1[j * c + i];
+</pre></div>
+
+<p>For example, &lsquo;<samp>vec_load_lanestiv4hi</samp>&rsquo; loads 8 16-bit values
+from memory into a register of mode &lsquo;<samp>TI</samp>&rsquo;. The register
+contains two consecutive vectors of mode &lsquo;<samp>V4HI</samp>&rsquo;.
+</p>
+<p>This pattern can only be used if:
+</p><div class="smallexample">
+<pre class="smallexample">TARGET_ARRAY_MODE_SUPPORTED_P (<var>n</var>, <var>c</var>)
+</pre></div>
+<p>is true. GCC assumes that, if a target supports this kind of
+instruction for some mode <var>n</var>, it also supports unaligned
+loads for vectors of mode <var>n</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-vec_005fmask_005fload_005flanesmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_mask_load_lanes<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>vec_load_lanes<var>m</var><var>n</var></samp>&rsquo;, but takes an additional
+mask operand (operand 2) that specifies which elements of the destination
+vectors should be loaded. Other elements of the destination
+vectors are set to zero. The operation is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int c = GET_MODE_SIZE (<var>m</var>) / GET_MODE_SIZE (<var>n</var>);
+for (j = 0; j &lt; GET_MODE_NUNITS (<var>n</var>); j++)
+ if (operand2[j])
+ for (i = 0; i &lt; c; i++)
+ operand0[i][j] = operand1[j * c + i];
+ else
+ for (i = 0; i &lt; c; i++)
+ operand0[i][j] = 0;
+</pre></div>
+
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-vec_005fstore_005flanesmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_store_lanes<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Equivalent to &lsquo;<samp>vec_load_lanes<var>m</var><var>n</var></samp>&rsquo;, with the memory
+and register operands reversed. That is, the instruction is
+equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int c = GET_MODE_SIZE (<var>m</var>) / GET_MODE_SIZE (<var>n</var>);
+for (j = 0; j &lt; GET_MODE_NUNITS (<var>n</var>); j++)
+ for (i = 0; i &lt; c; i++)
+ operand0[j * c + i] = operand1[i][j];
+</pre></div>
+
+<p>for a memory operand 0 and register operand 1.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-vec_005fmask_005fstore_005flanesmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_mask_store_lanes<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>vec_store_lanes<var>m</var><var>n</var></samp>&rsquo;, but takes an additional
+mask operand (operand 2) that specifies which elements of the source
+vectors should be stored. The operation is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">int c = GET_MODE_SIZE (<var>m</var>) / GET_MODE_SIZE (<var>n</var>);
+for (j = 0; j &lt; GET_MODE_NUNITS (<var>n</var>); j++)
+ if (operand2[j])
+ for (i = 0; i &lt; c; i++)
+ operand0[j * c + i] = operand1[i][j];
+</pre></div>
+
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-gather_005floadmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>gather_load<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Load several separate memory locations into a vector of mode <var>m</var>.
+Operand 1 is a scalar base address and operand 2 is a vector of mode <var>n</var>
+containing offsets from that base. Operand 0 is a destination vector with
+the same number of elements as <var>n</var>. For each element index <var>i</var>:
+</p>
+<ul>
+<li> extend the offset element <var>i</var> to address width, using zero
+extension if operand 3 is 1 and sign extension if operand 3 is zero;
+</li><li> multiply the extended offset by operand 4;
+</li><li> add the result to the base; and
+</li><li> load the value at that address into element <var>i</var> of operand 0.
+</li></ul>
+
+<p>The value of operand 3 does not matter if the offsets are already
+address width.
+</p>
+<a name="index-mask_005fgather_005floadmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mask_gather_load<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>gather_load<var>m</var><var>n</var></samp>&rsquo;, but takes an extra mask operand as
+operand 5. Bit <var>i</var> of the mask is set if element <var>i</var>
+of the result should be loaded from memory and clear if element <var>i</var>
+of the result should be set to zero.
+</p>
+<a name="index-scatter_005fstoremn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>scatter_store<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Store a vector of mode <var>m</var> into several distinct memory locations.
+Operand 0 is a scalar base address and operand 1 is a vector of mode
+<var>n</var> containing offsets from that base. Operand 4 is the vector of
+values that should be stored, which has the same number of elements as
+<var>n</var>. For each element index <var>i</var>:
+</p>
+<ul>
+<li> extend the offset element <var>i</var> to address width, using zero
+extension if operand 2 is 1 and sign extension if operand 2 is zero;
+</li><li> multiply the extended offset by operand 3;
+</li><li> add the result to the base; and
+</li><li> store element <var>i</var> of operand 4 to that address.
+</li></ul>
+
+<p>The value of operand 2 does not matter if the offsets are already
+address width.
+</p>
+<a name="index-mask_005fscatter_005fstoremn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mask_scatter_store<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>scatter_store<var>m</var><var>n</var></samp>&rsquo;, but takes an extra mask operand as
+operand 5. Bit <var>i</var> of the mask is set if element <var>i</var>
+of the result should be stored to memory.
+</p>
+<a name="index-vec_005fsetm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_set<var>m</var></samp>&rsquo;</dt>
+<dd><p>Set given field in the vector value. Operand 0 is the vector to modify,
+operand 1 is new value of field and operand 2 specify the field index.
+</p>
+<a name="index-vec_005fextractmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_extract<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Extract given field from the vector value. Operand 1 is the vector, operand 2
+specify field index and operand 0 place to store value into. The
+<var>n</var> mode is the mode of the field or vector of fields that should be
+extracted, should be either element mode of the vector mode <var>m</var>, or
+a vector mode with the same element mode and smaller number of elements.
+If <var>n</var> is a vector mode, the index is counted in units of that mode.
+</p>
+<a name="index-vec_005finitmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_init<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Initialize the vector to given values. Operand 0 is the vector to initialize
+and operand 1 is parallel containing values for individual fields. The
+<var>n</var> mode is the mode of the elements, should be either element mode of
+the vector mode <var>m</var>, or a vector mode with the same element mode and
+smaller number of elements.
+</p>
+<a name="index-vec_005fduplicatem-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_duplicate<var>m</var></samp>&rsquo;</dt>
+<dd><p>Initialize vector output operand 0 so that each element has the value given
+by scalar input operand 1. The vector has mode <var>m</var> and the scalar has
+the mode appropriate for one element of <var>m</var>.
+</p>
+<p>This pattern only handles duplicates of non-constant inputs. Constant
+vectors go through the <code>mov<var>m</var></code> pattern instead.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-vec_005fseriesm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_series<var>m</var></samp>&rsquo;</dt>
+<dd><p>Initialize vector output operand 0 so that element <var>i</var> is equal to
+operand 1 plus <var>i</var> times operand 2. In other words, create a linear
+series whose base value is operand 1 and whose step is operand 2.
+</p>
+<p>The vector output has mode <var>m</var> and the scalar inputs have the mode
+appropriate for one element of <var>m</var>. This pattern is not used for
+floating-point vectors, in order to avoid having to specify the
+rounding behavior for <var>i</var> &gt; 1.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-while_005fultmn-instruction-pattern"></a>
+</dd>
+<dt><code>while_ult<var>m</var><var>n</var></code></dt>
+<dd><p>Set operand 0 to a mask that is true while incrementing operand 1
+gives a value that is less than operand 2, for a vector length up to operand 3.
+Operand 0 has mode <var>n</var> and operands 1 and 2 are scalar integers of mode
+<var>m</var>. Operand 3 should be omitted when <var>n</var> is a vector mode, and
+a <code>CONST_INT</code> otherwise. The operation for vector modes is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">operand0[0] = operand1 &lt; operand2;
+for (i = 1; i &lt; GET_MODE_NUNITS (<var>n</var>); i++)
+ operand0[i] = operand0[i - 1] &amp;&amp; (operand1 + i &lt; operand2);
+</pre></div>
+
+<p>And for non-vector modes the operation is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">operand0[0] = operand1 &lt; operand2;
+for (i = 1; i &lt; operand3; i++)
+ operand0[i] = operand0[i - 1] &amp;&amp; (operand1 + i &lt; operand2);
+</pre></div>
+
+<a name="index-check_005fraw_005fptrsm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>check_raw_ptrs<var>m</var></samp>&rsquo;</dt>
+<dd><p>Check whether, given two pointers <var>a</var> and <var>b</var> and a length <var>len</var>,
+a write of <var>len</var> bytes at <var>a</var> followed by a read of <var>len</var> bytes
+at <var>b</var> can be split into interleaved byte accesses
+&lsquo;<samp><var>a</var>[0], <var>b</var>[0], <var>a</var>[1], <var>b</var>[1], &hellip;</samp>&rsquo;
+without affecting the dependencies between the bytes. Set operand 0
+to true if the split is possible and false otherwise.
+</p>
+<p>Operands 1, 2 and 3 provide the values of <var>a</var>, <var>b</var> and <var>len</var>
+respectively. Operand 4 is a constant integer that provides the known
+common alignment of <var>a</var> and <var>b</var>. All inputs have mode <var>m</var>.
+</p>
+<p>This split is possible if:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>a</var> == <var>b</var> || <var>a</var> + <var>len</var> &lt;= <var>b</var> || <var>b</var> + <var>len</var> &lt;= <var>a</var>
+</pre></div>
+
+<p>You should only define this pattern if the target has a way of accelerating
+the test without having to do the individual comparisons.
+</p>
+<a name="index-check_005fwar_005fptrsm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>check_war_ptrs<var>m</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>check_raw_ptrs<var>m</var></samp>&rsquo;, but with the read and write swapped round.
+The split is possible in this case if:
+</p>
+<div class="smallexample">
+<pre class="smallexample"><var>b</var> &lt;= <var>a</var> || <var>a</var> + <var>len</var> &lt;= <var>b</var>
+</pre></div>
+
+<a name="index-vec_005fcmpmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_cmp<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Output a vector comparison. Operand 0 of mode <var>n</var> is the destination for
+predicate in operand 1 which is a signed vector comparison with operands of
+mode <var>m</var> in operands 2 and 3. Predicate is computed by element-wise
+evaluation of the vector comparison with a truth value of all-ones and a false
+value of all-zeros.
+</p>
+<a name="index-vec_005fcmpumn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_cmpu<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Similar to <code>vec_cmp<var>m</var><var>n</var></code> but perform unsigned vector comparison.
+</p>
+<a name="index-vec_005fcmpeqmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_cmpeq<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Similar to <code>vec_cmp<var>m</var><var>n</var></code> but perform equality or non-equality
+vector comparison only. If <code>vec_cmp<var>m</var><var>n</var></code>
+or <code>vec_cmpu<var>m</var><var>n</var></code> instruction pattern is supported,
+it will be preferred over <code>vec_cmpeq<var>m</var><var>n</var></code>, so there is
+no need to define this instruction pattern if the others are supported.
+</p>
+<a name="index-vcondmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vcond<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Output a conditional vector move. Operand 0 is the destination to
+receive a combination of operand 1 and operand 2, which are of mode <var>m</var>,
+dependent on the outcome of the predicate in operand 3 which is a signed
+vector comparison with operands of mode <var>n</var> in operands 4 and 5. The
+modes <var>m</var> and <var>n</var> should have the same size. Operand 0
+will be set to the value <var>op1</var> &amp; <var>msk</var> | <var>op2</var> &amp; ~<var>msk</var>
+where <var>msk</var> is computed by element-wise evaluation of the vector
+comparison with a truth value of all-ones and a false value of all-zeros.
+</p>
+<a name="index-vcondumn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vcondu<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Similar to <code>vcond<var>m</var><var>n</var></code> but performs unsigned vector
+comparison.
+</p>
+<a name="index-vcondeqmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vcondeq<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Similar to <code>vcond<var>m</var><var>n</var></code> but performs equality or
+non-equality vector comparison only. If <code>vcond<var>m</var><var>n</var></code>
+or <code>vcondu<var>m</var><var>n</var></code> instruction pattern is supported,
+it will be preferred over <code>vcondeq<var>m</var><var>n</var></code>, so there is
+no need to define this instruction pattern if the others are supported.
+</p>
+<a name="index-vcond_005fmask_005fmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vcond_mask_<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Similar to <code>vcond<var>m</var><var>n</var></code> but operand 3 holds a pre-computed
+result of vector comparison.
+</p>
+<a name="index-maskloadmn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>maskload<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Perform a masked load of vector from memory operand 1 of mode <var>m</var>
+into register operand 0. Mask is provided in register operand 2 of
+mode <var>n</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-maskstoremn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>maskstore<var>m</var><var>n</var></samp>&rsquo;</dt>
+<dd><p>Perform a masked store of vector from register operand 1 of mode <var>m</var>
+into memory operand 0. Mask is provided in register operand 2 of
+mode <var>n</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-len_005fload_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>len_load_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Load (operand 2 - operand 3) elements from vector memory operand 1
+into vector register operand 0, setting the other elements of
+operand 0 to undefined values. Operands 0 and 1 have mode <var>m</var>,
+which must be a vector mode. Operand 2 has whichever integer mode the
+target prefers. Operand 3 conceptually has mode <code>QI</code>.
+</p>
+<p>Operand 2 can be a variable or a constant amount. Operand 3 specifies a
+constant bias: it is either a constant 0 or a constant -1. The predicate on
+operand 3 must only accept the bias values that the target actually supports.
+GCC handles a bias of 0 more efficiently than a bias of -1.
+</p>
+<p>If (operand 2 - operand 3) exceeds the number of elements in mode
+<var>m</var>, the behavior is undefined.
+</p>
+<p>If the target prefers the length to be measured in bytes rather than
+elements, it should only implement this pattern for vectors of <code>QI</code>
+elements.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-len_005fstore_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>len_store_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Store (operand 2 - operand 3) vector elements from vector register operand 1
+into memory operand 0, leaving the other elements of
+operand 0 unchanged. Operands 0 and 1 have mode <var>m</var>, which must be
+a vector mode. Operand 2 has whichever integer mode the target prefers.
+Operand 3 conceptually has mode <code>QI</code>.
+</p>
+<p>Operand 2 can be a variable or a constant amount. Operand 3 specifies a
+constant bias: it is either a constant 0 or a constant -1. The predicate on
+operand 3 must only accept the bias values that the target actually supports.
+GCC handles a bias of 0 more efficiently than a bias of -1.
+</p>
+<p>If (operand 2 - operand 3) exceeds the number of elements in mode
+<var>m</var>, the behavior is undefined.
+</p>
+<p>If the target prefers the length to be measured in bytes
+rather than elements, it should only implement this pattern for vectors
+of <code>QI</code> elements.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-vec_005fpermm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_perm<var>m</var></samp>&rsquo;</dt>
+<dd><p>Output a (variable) vector permutation. Operand 0 is the destination
+to receive elements from operand 1 and operand 2, which are of mode
+<var>m</var>. Operand 3 is the <em>selector</em>. It is an integral mode
+vector of the same width and number of elements as mode <var>m</var>.
+</p>
+<p>The input elements are numbered from 0 in operand 1 through
+<em>2*<var>N</var>-1</em> in operand 2. The elements of the selector must
+be computed modulo <em>2*<var>N</var></em>. Note that if
+<code>rtx_equal_p(operand1, operand2)</code>, this can be implemented
+with just operand 1 and selector elements modulo <var>N</var>.
+</p>
+<p>In order to make things easy for a number of targets, if there is no
+&lsquo;<samp>vec_perm</samp>&rsquo; pattern for mode <var>m</var>, but there is for mode <var>q</var>
+where <var>q</var> is a vector of <code>QImode</code> of the same width as <var>m</var>,
+the middle-end will lower the mode <var>m</var> <code>VEC_PERM_EXPR</code> to
+mode <var>q</var>.
+</p>
+<p>See also <code>TARGET_VECTORIZER_VEC_PERM_CONST</code>, which performs
+the analogous operation for constant selectors.
+</p>
+<a name="index-pushm1-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>push<var>m</var>1</samp>&rsquo;</dt>
+<dd><p>Output a push instruction. Operand 0 is value to push. Used only when
+<code>PUSH_ROUNDING</code> is defined. For historical reason, this pattern may be
+missing and in such case an <code>mov</code> expander is used instead, with a
+<code>MEM</code> expression forming the push operation. The <code>mov</code> expander
+method is deprecated.
+</p>
+<a name="index-addm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>add<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Add operand 2 and operand 1, storing the result in operand 0. All operands
+must have mode <var>m</var>. This can be used even on two-address machines, by
+means of constraints requiring operands 1 and 0 to be the same location.
+</p>
+<a name="index-ssaddm3-instruction-pattern"></a>
+<a name="index-usaddm3-instruction-pattern"></a>
+<a name="index-subm3-instruction-pattern"></a>
+<a name="index-sssubm3-instruction-pattern"></a>
+<a name="index-ussubm3-instruction-pattern"></a>
+<a name="index-mulm3-instruction-pattern"></a>
+<a name="index-ssmulm3-instruction-pattern"></a>
+<a name="index-usmulm3-instruction-pattern"></a>
+<a name="index-divm3-instruction-pattern"></a>
+<a name="index-ssdivm3-instruction-pattern"></a>
+<a name="index-udivm3-instruction-pattern"></a>
+<a name="index-usdivm3-instruction-pattern"></a>
+<a name="index-modm3-instruction-pattern"></a>
+<a name="index-umodm3-instruction-pattern"></a>
+<a name="index-uminm3-instruction-pattern"></a>
+<a name="index-umaxm3-instruction-pattern"></a>
+<a name="index-andm3-instruction-pattern"></a>
+<a name="index-iorm3-instruction-pattern"></a>
+<a name="index-xorm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ssadd<var>m</var>3</samp>&rsquo;, &lsquo;<samp>usadd<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sub<var>m</var>3</samp>&rsquo;, &lsquo;<samp>sssub<var>m</var>3</samp>&rsquo;, &lsquo;<samp>ussub<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>mul<var>m</var>3</samp>&rsquo;, &lsquo;<samp>ssmul<var>m</var>3</samp>&rsquo;, &lsquo;<samp>usmul<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>div<var>m</var>3</samp>&rsquo;, &lsquo;<samp>ssdiv<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>udiv<var>m</var>3</samp>&rsquo;, &lsquo;<samp>usdiv<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>mod<var>m</var>3</samp>&rsquo;, &lsquo;<samp>umod<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>umin<var>m</var>3</samp>&rsquo;, &lsquo;<samp>umax<var>m</var>3</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>and<var>m</var>3</samp>&rsquo;, &lsquo;<samp>ior<var>m</var>3</samp>&rsquo;, &lsquo;<samp>xor<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Similar, for other arithmetic operations.
+</p>
+<a name="index-addvm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>addv<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>add<var>m</var>3</code> but takes a <code>code_label</code> as operand 3 and
+emits code to jump to it if signed overflow occurs during the addition.
+This pattern is used to implement the built-in functions performing
+signed integer addition with overflow checking.
+</p>
+<a name="index-subvm4-instruction-pattern"></a>
+<a name="index-mulvm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>subv<var>m</var>4</samp>&rsquo;, &lsquo;<samp>mulv<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Similar, for other signed arithmetic operations.
+</p>
+<a name="index-uaddvm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>uaddv<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>addv<var>m</var>4</code> but for unsigned addition. That is to
+say, the operation is the same as signed addition but the jump
+is taken only on unsigned overflow.
+</p>
+<a name="index-usubvm4-instruction-pattern"></a>
+<a name="index-umulvm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>usubv<var>m</var>4</samp>&rsquo;, &lsquo;<samp>umulv<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Similar, for other unsigned arithmetic operations.
+</p>
+<a name="index-addptrm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>addptr<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Like <code>add<var>m</var>3</code> but is guaranteed to only be used for address
+calculations. The expanded code is not allowed to clobber the
+condition code. It only needs to be defined if <code>add<var>m</var>3</code>
+sets the condition code. If adds used for address calculations and
+normal adds are not compatible it is required to expand a distinct
+pattern (e.g. using an unspec). The pattern is used by LRA to emit
+address calculations. <code>add<var>m</var>3</code> is used if
+<code>addptr<var>m</var>3</code> is not defined.
+</p>
+<a name="index-fmam4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fma<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Multiply operand 2 and operand 1, then add operand 3, storing the
+result in operand 0 without doing an intermediate rounding step. All
+operands must have mode <var>m</var>. This pattern is used to implement
+the <code>fma</code>, <code>fmaf</code>, and <code>fmal</code> builtin functions from
+the ISO C99 standard.
+</p>
+<a name="index-fmsm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fms<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>fma<var>m</var>4</code>, except operand 3 subtracted from the
+product instead of added to the product. This is represented
+in the rtl as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(fma:<var>m</var> <var>op1</var> <var>op2</var> (neg:<var>m</var> <var>op3</var>))
+</pre></div>
+
+<a name="index-fnmam4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fnma<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>fma<var>m</var>4</code> except that the intermediate product
+is negated before being added to operand 3. This is represented
+in the rtl as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(fma:<var>m</var> (neg:<var>m</var> <var>op1</var>) <var>op2</var> <var>op3</var>)
+</pre></div>
+
+<a name="index-fnmsm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fnms<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>fms<var>m</var>4</code> except that the intermediate product
+is negated before subtracting operand 3. This is represented
+in the rtl as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(fma:<var>m</var> (neg:<var>m</var> <var>op1</var>) <var>op2</var> (neg:<var>m</var> <var>op3</var>))
+</pre></div>
+
+<a name="index-minm3-instruction-pattern"></a>
+<a name="index-maxm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>smin<var>m</var>3</samp>&rsquo;, &lsquo;<samp>smax<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Signed minimum and maximum operations. When used with floating point,
+if both operands are zeros, or if either operand is <code>NaN</code>, then
+it is unspecified which of the two operands is returned as the result.
+</p>
+<a name="index-fminm3-instruction-pattern"></a>
+<a name="index-fmaxm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fmin<var>m</var>3</samp>&rsquo;, &lsquo;<samp>fmax<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>IEEE-conformant minimum and maximum operations. If one operand is a quiet
+<code>NaN</code>, then the other operand is returned. If both operands are quiet
+<code>NaN</code>, then a quiet <code>NaN</code> is returned. In the case when gcc supports
+signaling <code>NaN</code> (-fsignaling-nans) an invalid floating point exception is
+raised and a quiet <code>NaN</code> is returned.
+</p>
+<p>All operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode. These patterns are not allowed to <code>FAIL</code>.
+</p>
+<a name="index-reduc_005fsmin_005fscal_005fm-instruction-pattern"></a>
+<a name="index-reduc_005fsmax_005fscal_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reduc_smin_scal_<var>m</var></samp>&rsquo;, &lsquo;<samp>reduc_smax_scal_<var>m</var></samp>&rsquo;</dt>
+<dd><p>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.
+</p>
+<a name="index-reduc_005fumin_005fscal_005fm-instruction-pattern"></a>
+<a name="index-reduc_005fumax_005fscal_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reduc_umin_scal_<var>m</var></samp>&rsquo;, &lsquo;<samp>reduc_umax_scal_<var>m</var></samp>&rsquo;</dt>
+<dd><p>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.
+</p>
+<a name="index-reduc_005ffmin_005fscal_005fm-instruction-pattern"></a>
+<a name="index-reduc_005ffmax_005fscal_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reduc_fmin_scal_<var>m</var></samp>&rsquo;, &lsquo;<samp>reduc_fmax_scal_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Find the floating-point minimum/maximum of the elements of a vector,
+using the same rules as <code>fmin<var>m</var>3</code> and <code>fmax<var>m</var>3</code>.
+Operand 1 is a vector of mode <var>m</var> and operand 0 is the scalar
+result, which has mode <code>GET_MODE_INNER (<var>m</var>)</code>.
+</p>
+<a name="index-reduc_005fplus_005fscal_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reduc_plus_scal_<var>m</var></samp>&rsquo;</dt>
+<dd><p>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.
+</p>
+<a name="index-reduc_005fand_005fscal_005fm-instruction-pattern"></a>
+<a name="index-reduc_005fior_005fscal_005fm-instruction-pattern"></a>
+<a name="index-reduc_005fxor_005fscal_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>reduc_and_scal_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>reduc_ior_scal_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>reduc_xor_scal_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Compute the bitwise <code>AND</code>/<code>IOR</code>/<code>XOR</code> reduction of the elements
+of a vector of mode <var>m</var>. Operand 1 is the vector input and operand 0
+is the scalar result. The mode of the scalar result is the same as one
+element of <var>m</var>.
+</p>
+<a name="index-extract_005flast_005fm-instruction-pattern"></a>
+</dd>
+<dt><code>extract_last_<var>m</var></code></dt>
+<dd><p>Find the last set bit in mask operand 1 and extract the associated element
+of vector operand 2. Store the result in scalar operand 0. Operand 2
+has vector mode <var>m</var> while operand 0 has the mode appropriate for one
+element of <var>m</var>. Operand 1 has the usual mask mode for vectors of mode
+<var>m</var>; see <code>TARGET_VECTORIZE_GET_MASK_MODE</code>.
+</p>
+<a name="index-fold_005fextract_005flast_005fm-instruction-pattern"></a>
+</dd>
+<dt><code>fold_extract_last_<var>m</var></code></dt>
+<dd><p>If any bits of mask operand 2 are set, find the last set bit, extract
+the associated element from vector operand 3, and store the result
+in operand 0. Store operand 1 in operand 0 otherwise. Operand 3
+has mode <var>m</var> and operands 0 and 1 have the mode appropriate for
+one element of <var>m</var>. Operand 2 has the usual mask mode for vectors
+of mode <var>m</var>; see <code>TARGET_VECTORIZE_GET_MASK_MODE</code>.
+</p>
+<a name="index-fold_005fleft_005fplus_005fm-instruction-pattern"></a>
+</dd>
+<dt><code>fold_left_plus_<var>m</var></code></dt>
+<dd><p>Take scalar operand 1 and successively add each element from vector
+operand 2. Store the result in scalar operand 0. The vector has
+mode <var>m</var> and the scalars have the mode appropriate for one
+element of <var>m</var>. The operation is strictly in-order: there is
+no reassociation.
+</p>
+<a name="index-mask_005ffold_005fleft_005fplus_005fm-instruction-pattern"></a>
+</dd>
+<dt><code>mask_fold_left_plus_<var>m</var></code></dt>
+<dd><p>Like &lsquo;<samp>fold_left_plus_<var>m</var></samp>&rsquo;, but takes an additional mask operand
+(operand 3) that specifies which elements of the source vector should be added.
+</p>
+<a name="index-sdot_005fprodm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sdot_prod<var>m</var></samp>&rsquo;</dt>
+<dd>
+<p>Compute the sum of the products of two signed elements.
+Operand 1 and operand 2 are of the same mode. Their
+product, which is of a wider mode, is computed and added to operand 3.
+Operand 3 is of a mode equal or wider than the mode of the product. The
+result is placed in operand 0, which is of the same mode as operand 3.
+</p>
+<p>Semantically the expressions perform the multiplication in the following signs
+</p>
+<div class="smallexample">
+<pre class="smallexample">sdot&lt;signed op0, signed op1, signed op2, signed op3&gt; ==
+ op0 = sign-ext (op1) * sign-ext (op2) + op3
+&hellip;
+</pre></div>
+
+<a name="index-udot_005fprodm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>udot_prod<var>m</var></samp>&rsquo;</dt>
+<dd>
+<p>Compute the sum of the products of two unsigned elements.
+Operand 1 and operand 2 are of the same mode. Their
+product, which is of a wider mode, is computed and added to operand 3.
+Operand 3 is of a mode equal or wider than the mode of the product. The
+result is placed in operand 0, which is of the same mode as operand 3.
+</p>
+<p>Semantically the expressions perform the multiplication in the following signs
+</p>
+<div class="smallexample">
+<pre class="smallexample">udot&lt;unsigned op0, unsigned op1, unsigned op2, unsigned op3&gt; ==
+ op0 = zero-ext (op1) * zero-ext (op2) + op3
+&hellip;
+</pre></div>
+
+<a name="index-usdot_005fprodm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>usdot_prod<var>m</var></samp>&rsquo;</dt>
+<dd><p>Compute the sum of the products of elements of different signs.
+Operand 1 must be unsigned and operand 2 signed. Their
+product, which is of a wider mode, is computed and added to operand 3.
+Operand 3 is of a mode equal or wider than the mode of the product. The
+result is placed in operand 0, which is of the same mode as operand 3.
+</p>
+<p>Semantically the expressions perform the multiplication in the following signs
+</p>
+<div class="smallexample">
+<pre class="smallexample">usdot&lt;signed op0, unsigned op1, signed op2, signed op3&gt; ==
+ op0 = ((signed-conv) zero-ext (op1)) * sign-ext (op2) + op3
+&hellip;
+</pre></div>
+
+<a name="index-ssadm-instruction-pattern"></a>
+<a name="index-usadm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ssad<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>usad<var>m</var></samp>&rsquo;</dt>
+<dd><p>Compute the sum of absolute differences of two signed/unsigned elements.
+Operand 1 and operand 2 are of the same mode. Their absolute difference, which
+is of a wider mode, is computed and added to operand 3. Operand 3 is of a mode
+equal or wider than the mode of the absolute difference. The result is placed
+in operand 0, which is of the same mode as operand 3.
+</p>
+<a name="index-widen_005fssumm3-instruction-pattern"></a>
+<a name="index-widen_005fusumm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>widen_ssum<var>m3</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>widen_usum<var>m3</var></samp>&rsquo;</dt>
+<dd><p>Operands 0 and 2 are of the same mode, which is wider than the mode of
+operand 1. Add operand 1 to operand 2 and place the widened result in
+operand 0. (This is used express accumulation of elements into an accumulator
+of a wider mode.)
+</p>
+<a name="index-smulhsm3-instruction-pattern"></a>
+<a name="index-umulhsm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>smulhs<var>m3</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>umulhs<var>m3</var></samp>&rsquo;</dt>
+<dd><p>Signed/unsigned multiply high with scale. This is equivalent to the C code:
+</p><div class="smallexample">
+<pre class="smallexample">narrow op0, op1, op2;
+&hellip;
+op0 = (narrow) (((wide) op1 * (wide) op2) &gt;&gt; (N / 2 - 1));
+</pre></div>
+<p>where the sign of &lsquo;<samp>narrow</samp>&rsquo; determines whether this is a signed
+or unsigned operation, and <var>N</var> is the size of &lsquo;<samp>wide</samp>&rsquo; in bits.
+</p>
+<a name="index-smulhrsm3-instruction-pattern"></a>
+<a name="index-umulhrsm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>smulhrs<var>m3</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>umulhrs<var>m3</var></samp>&rsquo;</dt>
+<dd><p>Signed/unsigned multiply high with round and scale. This is
+equivalent to the C code:
+</p><div class="smallexample">
+<pre class="smallexample">narrow op0, op1, op2;
+&hellip;
+op0 = (narrow) (((((wide) op1 * (wide) op2) &gt;&gt; (N / 2 - 2)) + 1) &gt;&gt; 1);
+</pre></div>
+<p>where the sign of &lsquo;<samp>narrow</samp>&rsquo; determines whether this is a signed
+or unsigned operation, and <var>N</var> is the size of &lsquo;<samp>wide</samp>&rsquo; in bits.
+</p>
+<a name="index-sdiv_005fpow2m3-instruction-pattern"></a>
+<a name="index-sdiv_005fpow2m3-instruction-pattern-1"></a>
+</dd>
+<dt>&lsquo;<samp>sdiv_pow2<var>m3</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sdiv_pow2<var>m3</var></samp>&rsquo;</dt>
+<dd><p>Signed division by power-of-2 immediate. Equivalent to:
+</p><div class="smallexample">
+<pre class="smallexample">signed op0, op1;
+&hellip;
+op0 = op1 / (1 &lt;&lt; imm);
+</pre></div>
+
+<a name="index-vec_005fshl_005finsert_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_shl_insert_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Shift the elements in vector input operand 1 left one element (i.e.
+away from element 0) and fill the vacated element 0 with the scalar
+in operand 2. Store the result in vector output operand 0. Operands
+0 and 1 have mode <var>m</var> and operand 2 has the mode appropriate for
+one element of <var>m</var>.
+</p>
+<a name="index-vec_005fshl_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_shl_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Whole vector left shift in bits, i.e. away from element 0.
+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.
+The output and input vectors should have the same modes.
+</p>
+<a name="index-vec_005fshr_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_shr_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Whole vector right shift in bits, i.e. towards element 0.
+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.
+The output and input vectors should have the same modes.
+</p>
+<a name="index-vec_005fpack_005ftrunc_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_pack_trunc_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Narrow (demote) and merge the elements of two vectors. Operands 1 and 2
+are vectors of the same mode having N integral or floating point elements
+of size S. Operand 0 is the resulting vector in which 2*N elements of
+size S/2 are concatenated after narrowing them down using truncation.
+</p>
+<a name="index-vec_005fpack_005fsbool_005ftrunc_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_pack_sbool_trunc_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Narrow and merge the elements of two vectors. Operands 1 and 2 are vectors
+of the same type having N boolean elements. Operand 0 is the resulting
+vector in which 2*N elements are concatenated. The last operand (operand 3)
+is the number of elements in the output vector 2*N as a <code>CONST_INT</code>.
+This instruction pattern is used when all the vector input and output
+operands have the same scalar mode <var>m</var> and thus using
+<code>vec_pack_trunc_<var>m</var></code> would be ambiguous.
+</p>
+<a name="index-vec_005fpack_005fssat_005fm-instruction-pattern"></a>
+<a name="index-vec_005fpack_005fusat_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_pack_ssat_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_pack_usat_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Narrow (demote) and merge the elements of two vectors. Operands 1 and 2
+are vectors of the same mode having N integral elements of size S.
+Operand 0 is the resulting vector in which the elements of the two input
+vectors are concatenated after narrowing them down using signed/unsigned
+saturating arithmetic.
+</p>
+<a name="index-vec_005fpack_005fsfix_005ftrunc_005fm-instruction-pattern"></a>
+<a name="index-vec_005fpack_005fufix_005ftrunc_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_pack_sfix_trunc_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_pack_ufix_trunc_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Narrow, convert to signed/unsigned integral type and merge the elements
+of two vectors. Operands 1 and 2 are vectors of the same mode having N
+floating point elements of size S. Operand 0 is the resulting vector
+in which 2*N elements of size S/2 are concatenated.
+</p>
+<a name="index-vec_005fpacks_005ffloat_005fm-instruction-pattern"></a>
+<a name="index-vec_005fpacku_005ffloat_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_packs_float_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_packu_float_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Narrow, convert to floating point type and merge the elements
+of two vectors. Operands 1 and 2 are vectors of the same mode having N
+signed/unsigned integral elements of size S. Operand 0 is the resulting vector
+in which 2*N elements of size S/2 are concatenated.
+</p>
+<a name="index-vec_005funpacks_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacks_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_unpacks_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_unpacks_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract and widen (promote) the high/low part of a vector of signed
+integral or floating point elements. The input vector (operand 1) has N
+elements of size S. Widen (promote) the high/low elements of the vector
+using signed or floating point extension and place the resulting N/2
+values of size 2*S in the output vector (operand 0).
+</p>
+<a name="index-vec_005funpacku_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacku_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_unpacku_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_unpacku_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract and widen (promote) the high/low part of a vector of unsigned
+integral elements. The input vector (operand 1) has N elements of size S.
+Widen (promote) the high/low elements of the vector using zero extension and
+place the resulting N/2 values of size 2*S in the output vector (operand 0).
+</p>
+<a name="index-vec_005funpacks_005fsbool_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacks_005fsbool_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_unpacks_sbool_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_unpacks_sbool_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract the high/low part of a vector of boolean elements that have scalar
+mode <var>m</var>. The input vector (operand 1) has N elements, the output
+vector (operand 0) has N/2 elements. The last operand (operand 2) is the
+number of elements of the input vector N as a <code>CONST_INT</code>. These
+patterns are used if both the input and output vectors have the same scalar
+mode <var>m</var> and thus using <code>vec_unpacks_hi_<var>m</var></code> or
+<code>vec_unpacks_lo_<var>m</var></code> would be ambiguous.
+</p>
+<a name="index-vec_005funpacks_005ffloat_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacks_005ffloat_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacku_005ffloat_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpacku_005ffloat_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_unpacks_float_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_unpacks_float_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_unpacku_float_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_unpacku_float_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract, convert to floating point type and widen the high/low part of a
+vector of signed/unsigned integral elements. The input vector (operand 1)
+has N elements of size S. Convert the high/low elements of the vector using
+floating point conversion and place the resulting N/2 values of size 2*S in
+the output vector (operand 0).
+</p>
+<a name="index-vec_005funpack_005fsfix_005ftrunc_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpack_005fsfix_005ftrunc_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpack_005fufix_005ftrunc_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005funpack_005fufix_005ftrunc_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_unpack_sfix_trunc_hi_<var>m</var></samp>&rsquo;,</dt>
+<dt>&lsquo;<samp>vec_unpack_sfix_trunc_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_unpack_ufix_trunc_hi_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_unpack_ufix_trunc_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract, convert to signed/unsigned integer type and widen the high/low part of a
+vector of floating point elements. The input vector (operand 1)
+has N elements of size S. Convert the high/low elements of the vector
+to integers and place the resulting N/2 values of size 2*S in
+the output vector (operand 0).
+</p>
+<a name="index-vec_005fwiden_005fumult_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fumult_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsmult_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsmult_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fumult_005feven_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fumult_005fodd_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsmult_005feven_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsmult_005fodd_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_widen_umult_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_umult_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_smult_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_smult_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_umult_even_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_umult_odd_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_smult_even_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_smult_odd_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Signed/Unsigned widening multiplication. The two inputs (operands 1 and 2)
+are vectors with N signed/unsigned elements of size S. Multiply the high/low
+or even/odd elements of the two vectors, and put the N/2 products of size 2*S
+in the output vector (operand 0). A target shouldn&rsquo;t implement even/odd pattern
+pair if it is less efficient than lo/hi one.
+</p>
+<a name="index-vec_005fwiden_005fushiftl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fushiftl_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsshiftl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsshiftl_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_widen_ushiftl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_ushiftl_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_sshiftl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_sshiftl_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Signed/Unsigned widening shift left. The first input (operand 1) is a vector
+with N signed/unsigned elements of size S. Operand 2 is a constant. Shift
+the high/low elements of operand 1, and put the N/2 results of size 2*S in the
+output vector (operand 0).
+</p>
+<a name="index-vec_005fwiden_005fsaddl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fsaddl_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fuaddl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fuaddl_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_widen_uaddl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_uaddl_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_saddl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_saddl_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Signed/Unsigned widening add long. Operands 1 and 2 are vectors with N
+signed/unsigned elements of size S. Add the high/low elements of 1 and 2
+together, widen the resulting elements and put the N/2 results of size 2*S in
+the output vector (operand 0).
+</p>
+<a name="index-vec_005fwiden_005fssubl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fssubl_005flo_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fusubl_005fhi_005fm-instruction-pattern"></a>
+<a name="index-vec_005fwiden_005fusubl_005flo_005fm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_widen_usubl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_usubl_lo_<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>vec_widen_ssubl_hi_<var>m</var></samp>&rsquo;, &lsquo;<samp>vec_widen_ssubl_lo_<var>m</var></samp>&rsquo;</dt>
+<dd><p>Signed/Unsigned widening subtract long. Operands 1 and 2 are vectors with N
+signed/unsigned elements of size S. Subtract the high/low elements of 2 from
+1 and widen the resulting elements. Put the N/2 results of size 2*S in the
+output vector (operand 0).
+</p>
+<a name="index-vec_005faddsubm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_addsub<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Alternating subtract, add with even lanes doing subtract and odd
+lanes doing addition. Operands 1 and 2 and the outout operand are vectors
+with mode <var>m</var>.
+</p>
+<a name="index-vec_005ffmaddsubm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_fmaddsub<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Alternating multiply subtract, add with even lanes doing subtract and odd
+lanes doing addition of the third operand to the multiplication result
+of the first two operands. Operands 1, 2 and 3 and the outout operand are vectors
+with mode <var>m</var>.
+</p>
+<a name="index-vec_005ffmsubaddm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vec_fmsubadd<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Alternating multiply add, subtract with even lanes doing addition and odd
+lanes doing subtraction of the third operand to the multiplication result
+of the first two operands. Operands 1, 2 and 3 and the outout operand are vectors
+with mode <var>m</var>.
+</p>
+<p>These instructions are not allowed to <code>FAIL</code>.
+</p>
+<a name="index-mulhisi3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mulhisi3</samp>&rsquo;</dt>
+<dd><p>Multiply operands 1 and 2, which have mode <code>HImode</code>, and store
+a <code>SImode</code> product in operand 0.
+</p>
+<a name="index-mulqihi3-instruction-pattern"></a>
+<a name="index-mulsidi3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mulqihi3</samp>&rsquo;, &lsquo;<samp>mulsidi3</samp>&rsquo;</dt>
+<dd><p>Similar widening-multiplication instructions of other widths.
+</p>
+<a name="index-umulqihi3-instruction-pattern"></a>
+<a name="index-umulhisi3-instruction-pattern"></a>
+<a name="index-umulsidi3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>umulqihi3</samp>&rsquo;, &lsquo;<samp>umulhisi3</samp>&rsquo;, &lsquo;<samp>umulsidi3</samp>&rsquo;</dt>
+<dd><p>Similar widening-multiplication instructions that do unsigned
+multiplication.
+</p>
+<a name="index-usmulqihi3-instruction-pattern"></a>
+<a name="index-usmulhisi3-instruction-pattern"></a>
+<a name="index-usmulsidi3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>usmulqihi3</samp>&rsquo;, &lsquo;<samp>usmulhisi3</samp>&rsquo;, &lsquo;<samp>usmulsidi3</samp>&rsquo;</dt>
+<dd><p>Similar widening-multiplication instructions that interpret the first
+operand as unsigned and the second operand as signed, then do a signed
+multiplication.
+</p>
+<a name="index-smulm3_005fhighpart-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>smul<var>m</var>3_highpart</samp>&rsquo;</dt>
+<dd><p>Perform a signed multiplication of operands 1 and 2, which have mode
+<var>m</var>, and store the most significant half of the product in operand 0.
+The least significant half of the product is discarded. This may be
+represented in RTL using a <code>smul_highpart</code> RTX expression.
+</p>
+<a name="index-umulm3_005fhighpart-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>umul<var>m</var>3_highpart</samp>&rsquo;</dt>
+<dd><p>Similar, but the multiplication is unsigned. This may be represented
+in RTL using an <code>umul_highpart</code> RTX expression.
+</p>
+<a name="index-maddmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>madd<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Multiply operands 1 and 2, sign-extend them to mode <var>n</var>, add
+operand 3, and store the result in operand 0. Operands 1 and 2
+have mode <var>m</var> and operands 0 and 3 have mode <var>n</var>.
+Both modes must be integer or fixed-point modes and <var>n</var> must be twice
+the size of <var>m</var>.
+</p>
+<p>In other words, <code>madd<var>m</var><var>n</var>4</code> is like
+<code>mul<var>m</var><var>n</var>3</code> except that it also adds operand 3.
+</p>
+<p>These instructions are not allowed to <code>FAIL</code>.
+</p>
+<a name="index-umaddmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>umadd<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>madd<var>m</var><var>n</var>4</code>, but zero-extend the multiplication
+operands instead of sign-extending them.
+</p>
+<a name="index-ssmaddmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ssmadd<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>madd<var>m</var><var>n</var>4</code>, but all involved operations must be
+signed-saturating.
+</p>
+<a name="index-usmaddmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>usmadd<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>umadd<var>m</var><var>n</var>4</code>, but all involved operations must be
+unsigned-saturating.
+</p>
+<a name="index-msubmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>msub<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Multiply operands 1 and 2, sign-extend them to mode <var>n</var>, subtract the
+result from operand 3, and store the result in operand 0. Operands 1 and 2
+have mode <var>m</var> and operands 0 and 3 have mode <var>n</var>.
+Both modes must be integer or fixed-point modes and <var>n</var> must be twice
+the size of <var>m</var>.
+</p>
+<p>In other words, <code>msub<var>m</var><var>n</var>4</code> is like
+<code>mul<var>m</var><var>n</var>3</code> except that it also subtracts the result
+from operand 3.
+</p>
+<p>These instructions are not allowed to <code>FAIL</code>.
+</p>
+<a name="index-umsubmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>umsub<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>msub<var>m</var><var>n</var>4</code>, but zero-extend the multiplication
+operands instead of sign-extending them.
+</p>
+<a name="index-ssmsubmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ssmsub<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>msub<var>m</var><var>n</var>4</code>, but all involved operations must be
+signed-saturating.
+</p>
+<a name="index-usmsubmn4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>usmsub<var>m</var><var>n</var>4</samp>&rsquo;</dt>
+<dd><p>Like <code>umsub<var>m</var><var>n</var>4</code>, but all involved operations must be
+unsigned-saturating.
+</p>
+<a name="index-divmodm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>divmod<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Signed division that produces both a quotient and a remainder.
+Operand 1 is divided by operand 2 to produce a quotient stored
+in operand 0 and a remainder stored in operand 3.
+</p>
+<p>For machines with an instruction that produces both a quotient and a
+remainder, provide a pattern for &lsquo;<samp>divmod<var>m</var>4</samp>&rsquo; but do not
+provide patterns for &lsquo;<samp>div<var>m</var>3</samp>&rsquo; and &lsquo;<samp>mod<var>m</var>3</samp>&rsquo;. This
+allows optimization in the relatively common case when both the quotient
+and remainder are computed.
+</p>
+<p>If an instruction that just produces a quotient or just a remainder
+exists and is more efficient than the instruction that produces both,
+write the output routine of &lsquo;<samp>divmod<var>m</var>4</samp>&rsquo; to call
+<code>find_reg_note</code> and look for a <code>REG_UNUSED</code> note on the
+quotient or remainder and generate the appropriate instruction.
+</p>
+<a name="index-udivmodm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>udivmod<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Similar, but does unsigned division.
+</p>
+<a name="shift-patterns"></a><a name="index-ashlm3-instruction-pattern"></a>
+<a name="index-ssashlm3-instruction-pattern"></a>
+<a name="index-usashlm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ashl<var>m</var>3</samp>&rsquo;, &lsquo;<samp>ssashl<var>m</var>3</samp>&rsquo;, &lsquo;<samp>usashl<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Arithmetic-shift operand 1 left by a number of bits specified by operand
+2, and store the result in operand 0. Here <var>m</var> is the mode of
+operand 0 and operand 1; operand 2&rsquo;s mode is specified by the
+instruction pattern, and the compiler will convert the operand to that
+mode before generating the instruction. The shift or rotate expander
+or instruction pattern should explicitly specify the mode of the operand 2,
+it should never be <code>VOIDmode</code>. The meaning of out-of-range shift
+counts can optionally be specified by <code>TARGET_SHIFT_TRUNCATION_MASK</code>.
+See <a href="Misc.html#TARGET_005fSHIFT_005fTRUNCATION_005fMASK">TARGET_SHIFT_TRUNCATION_MASK</a>. Operand 2 is always a scalar type.
+</p>
+<a name="index-ashrm3-instruction-pattern"></a>
+<a name="index-lshrm3-instruction-pattern"></a>
+<a name="index-rotlm3-instruction-pattern"></a>
+<a name="index-rotrm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ashr<var>m</var>3</samp>&rsquo;, &lsquo;<samp>lshr<var>m</var>3</samp>&rsquo;, &lsquo;<samp>rotl<var>m</var>3</samp>&rsquo;, &lsquo;<samp>rotr<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Other shift and rotate instructions, analogous to the
+<code>ashl<var>m</var>3</code> instructions. Operand 2 is always a scalar type.
+</p>
+<a name="index-vashlm3-instruction-pattern"></a>
+<a name="index-vashrm3-instruction-pattern"></a>
+<a name="index-vlshrm3-instruction-pattern"></a>
+<a name="index-vrotlm3-instruction-pattern"></a>
+<a name="index-vrotrm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>vashl<var>m</var>3</samp>&rsquo;, &lsquo;<samp>vashr<var>m</var>3</samp>&rsquo;, &lsquo;<samp>vlshr<var>m</var>3</samp>&rsquo;, &lsquo;<samp>vrotl<var>m</var>3</samp>&rsquo;, &lsquo;<samp>vrotr<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Vector shift and rotate instructions that take vectors as operand 2
+instead of a scalar type.
+</p>
+<a name="index-avgm3_005ffloor-instruction-pattern"></a>
+<a name="index-uavgm3_005ffloor-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>avg<var>m</var>3_floor</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>uavg<var>m</var>3_floor</samp>&rsquo;</dt>
+<dd><p>Signed and unsigned average instructions. These instructions add
+operands 1 and 2 without truncation, divide the result by 2,
+round towards -Inf, and store the result in operand 0. This is
+equivalent to the C code:
+</p><div class="smallexample">
+<pre class="smallexample">narrow op0, op1, op2;
+&hellip;
+op0 = (narrow) (((wide) op1 + (wide) op2) &gt;&gt; 1);
+</pre></div>
+<p>where the sign of &lsquo;<samp>narrow</samp>&rsquo; determines whether this is a signed
+or unsigned operation.
+</p>
+<a name="index-avgm3_005fceil-instruction-pattern"></a>
+<a name="index-uavgm3_005fceil-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>avg<var>m</var>3_ceil</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>uavg<var>m</var>3_ceil</samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>avg<var>m</var>3_floor</samp>&rsquo; and &lsquo;<samp>uavg<var>m</var>3_floor</samp>&rsquo;, but round
+towards +Inf. This is equivalent to the C code:
+</p><div class="smallexample">
+<pre class="smallexample">narrow op0, op1, op2;
+&hellip;
+op0 = (narrow) (((wide) op1 + (wide) op2 + 1) &gt;&gt; 1);
+</pre></div>
+
+<a name="index-bswapm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>bswap<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Reverse the order of bytes of operand 1 and store the result in operand 0.
+</p>
+<a name="index-negm2-instruction-pattern"></a>
+<a name="index-ssnegm2-instruction-pattern"></a>
+<a name="index-usnegm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>neg<var>m</var>2</samp>&rsquo;, &lsquo;<samp>ssneg<var>m</var>2</samp>&rsquo;, &lsquo;<samp>usneg<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Negate operand 1 and store the result in operand 0.
+</p>
+<a name="index-negvm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>negv<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Like <code>neg<var>m</var>2</code> but takes a <code>code_label</code> as operand 2 and
+emits code to jump to it if signed overflow occurs during the negation.
+</p>
+<a name="index-absm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>abs<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the absolute value of operand 1 into operand 0.
+</p>
+<a name="index-sqrtm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sqrt<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the square root of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-rsqrtm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>rsqrt<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the reciprocal of the square root of operand 1 into operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>On most architectures this pattern is only approximate, so either
+its C condition or the <code>TARGET_OPTAB_SUPPORTED_P</code> hook should
+check for the appropriate math flags. (Using the C condition is
+more direct, but using <code>TARGET_OPTAB_SUPPORTED_P</code> can be useful
+if a target-specific built-in also uses the &lsquo;<samp>rsqrt<var>m</var>2</samp>&rsquo;
+pattern.)
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-fmodm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fmod<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store the remainder of dividing operand 1 by operand 2 into
+operand 0, rounded towards zero to an integer. All operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-remainderm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>remainder<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store the remainder of dividing operand 1 by operand 2 into
+operand 0, rounded to the nearest integer. All operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-scalbm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>scalb<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Raise <code>FLT_RADIX</code> to the power of operand 2, multiply it by
+operand 1, and store the result in operand 0. All operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-ldexpm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ldexp<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Raise 2 to the power of operand 2, multiply it by operand 1, and store
+the result in operand 0. Operands 0 and 1 have mode <var>m</var>, which is
+a scalar or vector floating-point mode. Operand 2&rsquo;s mode has
+the same number of elements as <var>m</var> and each element is wide
+enough to store an <code>int</code>. The integers are signed.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cosm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cos<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the cosine of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-sinm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sin<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the sine of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-sincosm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sincos<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store the cosine of operand 2 into operand 0 and the sine of
+operand 2 into operand 1. All operands have mode <var>m</var>,
+which is a scalar or vector floating-point mode.
+</p>
+<p>Targets that can calculate the sine and cosine simultaneously can
+implement this pattern as opposed to implementing individual
+<code>sin<var>m</var>2</code> and <code>cos<var>m</var>2</code> patterns. The <code>sin</code>
+and <code>cos</code> built-in functions will then be expanded to the
+<code>sincos<var>m</var>3</code> pattern, with one of the output values
+left unused.
+</p>
+<a name="index-tanm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>tan<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the tangent of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-asinm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>asin<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the arc sine of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-acosm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>acos<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the arc cosine of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-atanm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atan<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the arc tangent of operand 1 into operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-fegetroundm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fegetround<var>m</var></samp>&rsquo;</dt>
+<dd><p>Store the current machine floating-point rounding mode into operand 0.
+Operand 0 has mode <var>m</var>, which is scalar. This pattern is used to
+implement the <code>fegetround</code> function from the ISO C99 standard.
+</p>
+<a name="index-feclearexceptm-instruction-pattern"></a>
+<a name="index-feraiseexceptm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>feclearexcept<var>m</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>feraiseexcept<var>m</var></samp>&rsquo;</dt>
+<dd><p>Clears or raises the supported machine floating-point exceptions
+represented by the bits in operand 1. Error status is stored as
+nonzero value in operand 0. Both operands have mode <var>m</var>, which is
+a scalar. These patterns are used to implement the
+<code>feclearexcept</code> and <code>feraiseexcept</code> functions from the ISO
+C99 standard.
+</p>
+<a name="index-expm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>exp<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Raise e (the base of natural logarithms) to the power of operand 1
+and store the result in operand 0. Both operands have mode <var>m</var>,
+which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-expm1m2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>expm1<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Raise e (the base of natural logarithms) to the power of operand 1,
+subtract 1, and store the result in operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>For inputs close to zero, the pattern is expected to be more
+accurate than a separate <code>exp<var>m</var>2</code> and <code>sub<var>m</var>3</code>
+would be.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-exp10m2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>exp10<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Raise 10 to the power of operand 1 and store the result in operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-exp2m2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>exp2<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Raise 2 to the power of operand 1 and store the result in operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-logm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>log<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the natural logarithm of operand 1 into operand 0. Both operands
+have mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-log1pm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>log1p<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Add 1 to operand 1, compute the natural logarithm, and store
+the result in operand 0. Both operands have mode <var>m</var>, which is
+a scalar or vector floating-point mode.
+</p>
+<p>For inputs close to zero, the pattern is expected to be more
+accurate than a separate <code>add<var>m</var>3</code> and <code>log<var>m</var>2</code>
+would be.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-log10m2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>log10<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the base-10 logarithm of operand 1 into operand 0. Both operands
+have mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-log2m2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>log2<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the base-2 logarithm of operand 1 into operand 0. Both operands
+have mode <var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-logbm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>logb<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the base-<code>FLT_RADIX</code> logarithm of operand 1 into operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-signbitm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>signbit<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the sign bit of floating-point operand 1 in operand 0.
+<var>m</var> is either a scalar or vector mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 must have mode <code>SImode</code>.
+When <var>m</var> is a vector, operand 1 has the mode <var>m</var>.
+operand 0&rsquo;s mode should be an vector integer mode which has
+the same number of elements and the same size as mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-significandm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>significand<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the significand of floating-point operand 1 in operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-powm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>pow<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store the value of operand 1 raised to the exponent operand 2
+into operand 0. All operands have mode <var>m</var>, which is a scalar
+or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-atan2m3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atan2<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store the arc tangent (inverse tangent) of operand 1 divided by
+operand 2 into operand 0, using the signs of both arguments to
+determine the quadrant of the result. All operands have mode
+<var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-floorm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>floor<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the largest integral value not greater than operand 1 in operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode. If <samp>-ffp-int-builtin-inexact</samp> is in
+effect, the &ldquo;inexact&rdquo; exception may be raised for noninteger
+operands; otherwise, it may not.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-btruncm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>btrunc<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Round operand 1 to an integer, towards zero, and store the result in
+operand 0. Both operands have mode <var>m</var>, which is a scalar or
+vector floating-point mode. If <samp>-ffp-int-builtin-inexact</samp> is
+in effect, the &ldquo;inexact&rdquo; exception may be raised for noninteger
+operands; otherwise, it may not.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-roundm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>round<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Round operand 1 to the nearest integer, rounding away from zero in the
+event of a tie, and store the result in operand 0. Both operands have
+mode <var>m</var>, which is a scalar or vector floating-point mode. If
+<samp>-ffp-int-builtin-inexact</samp> is in effect, the &ldquo;inexact&rdquo;
+exception may be raised for noninteger operands; otherwise, it may
+not.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-ceilm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ceil<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the smallest integral value not less than operand 1 in operand 0.
+Both operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode. If <samp>-ffp-int-builtin-inexact</samp> is in
+effect, the &ldquo;inexact&rdquo; exception may be raised for noninteger
+operands; otherwise, it may not.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-nearbyintm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>nearbyint<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Round operand 1 to an integer, using the current rounding mode, and
+store the result in operand 0. Do not raise an inexact condition when
+the result is different from the argument. Both operands have mode
+<var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-rintm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>rint<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Round operand 1 to an integer, using the current rounding mode, and
+store the result in operand 0. Raise an inexact condition when
+the result is different from the argument. Both operands have mode
+<var>m</var>, which is a scalar or vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-lrintmn2"></a>
+</dd>
+<dt>&lsquo;<samp>lrint<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as a signed number according to the current
+rounding mode and store in operand 0 (which has mode <var>n</var>).
+</p>
+<a name="index-lroundmn2"></a>
+</dd>
+<dt>&lsquo;<samp>lround<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as a signed number rounding to nearest and away
+from zero and store in operand 0 (which has mode <var>n</var>).
+</p>
+<a name="index-lfloormn2"></a>
+</dd>
+<dt>&lsquo;<samp>lfloor<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as a signed number rounding down and store in
+operand 0 (which has mode <var>n</var>).
+</p>
+<a name="index-lceilmn2"></a>
+</dd>
+<dt>&lsquo;<samp>lceil<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as a signed number rounding up and store in
+operand 0 (which has mode <var>n</var>).
+</p>
+<a name="index-copysignm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>copysign<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Store a value with the magnitude of operand 1 and the sign of operand
+2 into operand 0. All operands have mode <var>m</var>, which is a scalar or
+vector floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-xorsignm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>xorsign<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Equivalent to &lsquo;<samp>op0 = op1 * copysign (1.0, op2)</samp>&rsquo;: store a value with
+the magnitude of operand 1 and the sign of operand 2 into operand 0.
+All operands have mode <var>m</var>, which is a scalar or vector
+floating-point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-issignalingm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>issignaling<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Set operand 0 to 1 if operand 1 is a signaling NaN and to 0 otherwise.
+</p>
+<a name="index-cadd90m3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cadd90<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Perform vector add and subtract on even/odd number pairs. The operation being
+matched is semantically described as
+</p>
+<div class="smallexample">
+<pre class="smallexample"> for (int i = 0; i &lt; N; i += 2)
+ {
+ c[i] = a[i] - b[i+1];
+ c[i+1] = a[i+1] + b[i];
+ }
+</pre></div>
+
+<p>This operation is semantically equivalent to performing a vector addition of
+complex numbers in operand 1 with operand 2 rotated by 90 degrees around
+the argand plane and storing the result in operand 0.
+</p>
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cadd270m3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cadd270<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Perform vector add and subtract on even/odd number pairs. The operation being
+matched is semantically described as
+</p>
+<div class="smallexample">
+<pre class="smallexample"> for (int i = 0; i &lt; N; i += 2)
+ {
+ c[i] = a[i] + b[i+1];
+ c[i+1] = a[i+1] - b[i];
+ }
+</pre></div>
+
+<p>This operation is semantically equivalent to performing a vector addition of
+complex numbers in operand 1 with operand 2 rotated by 270 degrees around
+the argand plane and storing the result in operand 0.
+</p>
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmlam4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmla<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply and accumulate that is semantically the same as
+a multiply and accumulate of complex numbers.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ complex TYPE op3[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * op2[i] + op3[i];
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmla_005fconjm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmla_conj<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply by conjugate and accumulate that is semantically
+the same as a multiply and accumulate of complex numbers where the second
+multiply arguments is conjugated.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ complex TYPE op3[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * conj (op2[i]) + op3[i];
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmlsm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmls<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply and subtract that is semantically the same as
+a multiply and subtract of complex numbers.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ complex TYPE op3[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * op2[i] - op3[i];
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmls_005fconjm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmls_conj<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply by conjugate and subtract that is semantically
+the same as a multiply and subtract of complex numbers where the second
+multiply arguments is conjugated.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ complex TYPE op3[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * conj (op2[i]) - op3[i];
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmulm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmul<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply that is semantically the same as multiply of
+complex numbers.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * op2[i];
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-cmul_005fconjm4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmul_conj<var>m</var>4</samp>&rsquo;</dt>
+<dd><p>Perform a vector multiply by conjugate that is semantically the same as a
+multiply of complex numbers where the second multiply arguments is conjugated.
+</p>
+<div class="smallexample">
+<pre class="smallexample"> complex TYPE op0[N];
+ complex TYPE op1[N];
+ complex TYPE op2[N];
+ for (int i = 0; i &lt; N; i += 1)
+ {
+ op0[i] = op1[i] * conj (op2[i]);
+ }
+</pre></div>
+
+<p>In GCC lane ordering the real part of the number must be in the even lanes with
+the imaginary part in the odd lanes.
+</p>
+<p>The operation is only supported for vector modes <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-ffsm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ffs<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store into operand 0 one plus the index of the least significant 1-bit
+of operand 1. If operand 1 is zero, store zero.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-clrsbm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>clrsb<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>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.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-clzm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>clz<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>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</code> (see <a href="Misc.html#Misc">Misc</a>) macro defines if
+the result is undefined or has a useful value.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-ctzm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ctz<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>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</code> (see <a href="Misc.html#Misc">Misc</a>) macro defines if
+the result is undefined or has a useful value.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-popcountm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>popcount<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store into operand 0 the number of 1-bits in operand 1.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-paritym2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>parity<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store into operand 0 the parity of operand 1, i.e. the number of 1-bits
+in operand 1 modulo 2.
+</p>
+<p><var>m</var> is either a scalar or vector integer mode. When it is a scalar,
+operand 1 has mode <var>m</var> but operand 0 can have whatever scalar
+integer mode is suitable for the target. The compiler will insert
+conversion instructions as necessary (typically to convert the result
+to the same width as <code>int</code>). When <var>m</var> is a vector, both
+operands must have mode <var>m</var>.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+<a name="index-one_005fcmplm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>one_cmpl<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Store the bitwise-complement of operand 1 into operand 0.
+</p>
+<a name="index-cpymemm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cpymem<var>m</var></samp>&rsquo;</dt>
+<dd><p>Block copy instruction. The destination and source blocks of memory
+are the first two operands, and both are <code>mem:BLK</code>s with an
+address in mode <code>Pmode</code>.
+</p>
+<p>The number of bytes to copy is the third operand, in mode <var>m</var>.
+Usually, you specify <code>Pmode</code> for <var>m</var>. However, if you can
+generate better code knowing the range of valid lengths is smaller than
+those representable in a full Pmode pointer, you should provide
+a pattern with a
+mode corresponding to the range of values you can handle efficiently
+(e.g., <code>QImode</code> for values in the range 0&ndash;127; note we avoid numbers
+that appear negative) and also a pattern with <code>Pmode</code>.
+</p>
+<p>The fourth operand is the known shared alignment of the source and
+destination, in the form of a <code>const_int</code> rtx. Thus, if the
+compiler knows that both source and destination are word-aligned,
+it may provide the value 4 for this operand.
+</p>
+<p>Optional operands 5 and 6 specify expected alignment and size of block
+respectively. The expected alignment differs from alignment in operand 4
+in a way that the blocks are not required to be aligned according to it in
+all cases. This expected alignment is also in bytes, just like operand 4.
+Expected size, when unknown, is set to <code>(const_int -1)</code>.
+</p>
+<p>Descriptions of multiple <code>cpymem<var>m</var></code> patterns can only be
+beneficial if the patterns for smaller modes have fewer restrictions
+on their first, second and fourth operands. Note that the mode <var>m</var>
+in <code>cpymem<var>m</var></code> does not impose any restriction on the mode of
+individually copied data units in the block.
+</p>
+<p>The <code>cpymem<var>m</var></code> patterns need not give special consideration
+to the possibility that the source and destination strings might
+overlap. These patterns are used to do inline expansion of
+<code>__builtin_memcpy</code>.
+</p>
+<a name="index-movmemm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>movmem<var>m</var></samp>&rsquo;</dt>
+<dd><p>Block move instruction. The destination and source blocks of memory
+are the first two operands, and both are <code>mem:BLK</code>s with an
+address in mode <code>Pmode</code>.
+</p>
+<p>The number of bytes to copy is the third operand, in mode <var>m</var>.
+Usually, you specify <code>Pmode</code> for <var>m</var>. However, if you can
+generate better code knowing the range of valid lengths is smaller than
+those representable in a full Pmode pointer, you should provide
+a pattern with a
+mode corresponding to the range of values you can handle efficiently
+(e.g., <code>QImode</code> for values in the range 0&ndash;127; note we avoid numbers
+that appear negative) and also a pattern with <code>Pmode</code>.
+</p>
+<p>The fourth operand is the known shared alignment of the source and
+destination, in the form of a <code>const_int</code> rtx. Thus, if the
+compiler knows that both source and destination are word-aligned,
+it may provide the value 4 for this operand.
+</p>
+<p>Optional operands 5 and 6 specify expected alignment and size of block
+respectively. The expected alignment differs from alignment in operand 4
+in a way that the blocks are not required to be aligned according to it in
+all cases. This expected alignment is also in bytes, just like operand 4.
+Expected size, when unknown, is set to <code>(const_int -1)</code>.
+</p>
+<p>Descriptions of multiple <code>movmem<var>m</var></code> patterns can only be
+beneficial if the patterns for smaller modes have fewer restrictions
+on their first, second and fourth operands. Note that the mode <var>m</var>
+in <code>movmem<var>m</var></code> does not impose any restriction on the mode of
+individually copied data units in the block.
+</p>
+<p>The <code>movmem<var>m</var></code> patterns must correctly handle the case where
+the source and destination strings overlap. These patterns are used to
+do inline expansion of <code>__builtin_memmove</code>.
+</p>
+<a name="index-movstr-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>movstr</samp>&rsquo;</dt>
+<dd><p>String copy instruction, with <code>stpcpy</code> semantics. Operand 0 is
+an output operand in mode <code>Pmode</code>. The addresses of the
+destination and source strings are operands 1 and 2, and both are
+<code>mem:BLK</code>s with addresses in mode <code>Pmode</code>. The execution of
+the expansion of this pattern should store in operand 0 the address in
+which the <code>NUL</code> terminator was stored in the destination string.
+</p>
+<p>This pattern has also several optional operands that are same as in
+<code>setmem</code>.
+</p>
+<a name="index-setmemm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>setmem<var>m</var></samp>&rsquo;</dt>
+<dd><p>Block set instruction. The destination string is the first operand,
+given as a <code>mem:BLK</code> whose address is in mode <code>Pmode</code>. The
+number of bytes to set is the second operand, in mode <var>m</var>. The value to
+initialize the memory with is the third operand. Targets that only support the
+clearing of memory should reject any value that is not the constant 0. See
+&lsquo;<samp>cpymem<var>m</var></samp>&rsquo; for a discussion of the choice of mode.
+</p>
+<p>The fourth operand is the known alignment of the destination, in the form
+of a <code>const_int</code> rtx. Thus, if the compiler knows that the
+destination is word-aligned, it may provide the value 4 for this
+operand.
+</p>
+<p>Optional operands 5 and 6 specify expected alignment and size of block
+respectively. The expected alignment differs from alignment in operand 4
+in a way that the blocks are not required to be aligned according to it in
+all cases. This expected alignment is also in bytes, just like operand 4.
+Expected size, when unknown, is set to <code>(const_int -1)</code>.
+Operand 7 is the minimal size of the block and operand 8 is the
+maximal size of the block (NULL if it cannot be represented as CONST_INT).
+Operand 9 is the probable maximal size (i.e. we cannot rely on it for
+correctness, but it can be used for choosing proper code sequence for a
+given size).
+</p>
+<p>The use for multiple <code>setmem<var>m</var></code> is as for <code>cpymem<var>m</var></code>.
+</p>
+<a name="index-cmpstrnm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmpstrn<var>m</var></samp>&rsquo;</dt>
+<dd><p>String compare instruction, with five operands. Operand 0 is the output;
+it has mode <var>m</var>. The remaining four operands are like the operands
+of &lsquo;<samp>cpymem<var>m</var></samp>&rsquo;. The two memory blocks specified are compared
+byte by byte in lexicographic order starting at the beginning of each
+string. The instruction is not allowed to prefetch more than one byte
+at a time since either string may end in the first byte and reading past
+that may access an invalid page or segment and cause a fault. The
+comparison terminates early if the fetched bytes are different or if
+they are equal to zero. The effect of the instruction is to store a
+value in operand 0 whose sign indicates the result of the comparison.
+</p>
+<a name="index-cmpstrm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmpstr<var>m</var></samp>&rsquo;</dt>
+<dd><p>String compare instruction, without known maximum length. Operand 0 is the
+output; it has mode <var>m</var>. The second and third operand are the blocks of
+memory to be compared; both are <code>mem:BLK</code> with an address in mode
+<code>Pmode</code>.
+</p>
+<p>The fourth operand is the known shared alignment of the source and
+destination, in the form of a <code>const_int</code> rtx. Thus, if the
+compiler knows that both source and destination are word-aligned,
+it may provide the value 4 for this operand.
+</p>
+<p>The two memory blocks specified are compared byte by byte in lexicographic
+order starting at the beginning of each string. The instruction is not allowed
+to prefetch more than one byte at a time since either string may end in the
+first byte and reading past that may access an invalid page or segment and
+cause a fault. The comparison will terminate when the fetched bytes
+are different or if they are equal to zero. The effect of the
+instruction is to store a value in operand 0 whose sign indicates the
+result of the comparison.
+</p>
+<a name="index-cmpmemm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cmpmem<var>m</var></samp>&rsquo;</dt>
+<dd><p>Block compare instruction, with five operands like the operands
+of &lsquo;<samp>cmpstr<var>m</var></samp>&rsquo;. The two memory blocks specified are compared
+byte by byte in lexicographic order starting at the beginning of each
+block. Unlike &lsquo;<samp>cmpstr<var>m</var></samp>&rsquo; the instruction can prefetch
+any bytes in the two memory blocks. Also unlike &lsquo;<samp>cmpstr<var>m</var></samp>&rsquo;
+the comparison will not stop if both bytes are zero. The effect of
+the instruction is to store a value in operand 0 whose sign indicates
+the result of the comparison.
+</p>
+<a name="index-strlenm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>strlen<var>m</var></samp>&rsquo;</dt>
+<dd><p>Compute the length of a string, with three operands.
+Operand 0 is the result (of mode <var>m</var>), operand 1 is
+a <code>mem</code> referring to the first character of the string,
+operand 2 is the character to search for (normally zero),
+and operand 3 is a constant describing the known alignment
+of the beginning of the string.
+</p>
+<a name="index-rawmemchrm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>rawmemchr<var>m</var></samp>&rsquo;</dt>
+<dd><p>Scan memory referred to by operand 1 for the first occurrence of operand 2.
+Operand 1 is a <code>mem</code> and operand 2 a <code>const_int</code> of mode <var>m</var>.
+Operand 0 is the result, i.e., a pointer to the first occurrence of operand 2
+in the memory block given by operand 1.
+</p>
+<a name="index-floatmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>float<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert signed integer operand 1 (valid for fixed point mode <var>m</var>) to
+floating point mode <var>n</var> and store in operand 0 (which has mode
+<var>n</var>).
+</p>
+<a name="index-floatunsmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>floatuns<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert unsigned integer operand 1 (valid for fixed point mode <var>m</var>)
+to floating point mode <var>n</var> and store in operand 0 (which has mode
+<var>n</var>).
+</p>
+<a name="index-fixmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fix<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as a signed number and store in operand 0 (which
+has mode <var>n</var>). This instruction&rsquo;s result is defined only when
+the value of operand 1 is an integer.
+</p>
+<p>If the machine description defines this pattern, it also needs to
+define the <code>ftrunc</code> pattern.
+</p>
+<a name="index-fixunsmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fixuns<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to fixed
+point mode <var>n</var> as an unsigned number and store in operand 0 (which
+has mode <var>n</var>). This instruction&rsquo;s result is defined only when the
+value of operand 1 is an integer.
+</p>
+<a name="index-ftruncm2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ftrunc<var>m</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 (valid for floating point mode <var>m</var>) to an
+integer value, still represented in floating point mode <var>m</var>, and
+store it in operand 0 (valid for floating point mode <var>m</var>).
+</p>
+<a name="index-fix_005ftruncmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fix_trunc<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>fix<var>m</var><var>n</var>2</samp>&rsquo; but works for any floating point value
+of mode <var>m</var> by converting the value to an integer.
+</p>
+<a name="index-fixuns_005ftruncmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fixuns_trunc<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>fixuns<var>m</var><var>n</var>2</samp>&rsquo; but works for any floating point
+value of mode <var>m</var> by converting the value to an integer.
+</p>
+<a name="index-truncmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>trunc<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Truncate operand 1 (valid for mode <var>m</var>) to mode <var>n</var> and
+store in operand 0 (which has mode <var>n</var>). Both modes must be fixed
+point or both floating point.
+</p>
+<a name="index-extendmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extend<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Sign-extend operand 1 (valid for mode <var>m</var>) to mode <var>n</var> and
+store in operand 0 (which has mode <var>n</var>). Both modes must be fixed
+point or both floating point.
+</p>
+<a name="index-zero_005fextendmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>zero_extend<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Zero-extend operand 1 (valid for mode <var>m</var>) to mode <var>n</var> and
+store in operand 0 (which has mode <var>n</var>). Both modes must be fixed
+point.
+</p>
+<a name="index-fractmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fract<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 of mode <var>m</var> to mode <var>n</var> and store in
+operand 0 (which has mode <var>n</var>). Mode <var>m</var> and mode <var>n</var>
+could be fixed-point to fixed-point, signed integer to fixed-point,
+fixed-point to signed integer, floating-point to fixed-point,
+or fixed-point to floating-point.
+When overflows or underflows happen, the results are undefined.
+</p>
+<a name="index-satfractmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>satfract<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 of mode <var>m</var> to mode <var>n</var> and store in
+operand 0 (which has mode <var>n</var>). Mode <var>m</var> and mode <var>n</var>
+could be fixed-point to fixed-point, signed integer to fixed-point,
+or floating-point to fixed-point.
+When overflows or underflows happen, the instruction saturates the
+results to the maximum or the minimum.
+</p>
+<a name="index-fractunsmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>fractuns<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert operand 1 of mode <var>m</var> to mode <var>n</var> and store in
+operand 0 (which has mode <var>n</var>). Mode <var>m</var> and mode <var>n</var>
+could be unsigned integer to fixed-point, or
+fixed-point to unsigned integer.
+When overflows or underflows happen, the results are undefined.
+</p>
+<a name="index-satfractunsmn2-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>satfractuns<var>m</var><var>n</var>2</samp>&rsquo;</dt>
+<dd><p>Convert unsigned integer operand 1 of mode <var>m</var> to fixed-point mode
+<var>n</var> and store in operand 0 (which has mode <var>n</var>).
+When overflows or underflows happen, the instruction saturates the
+results to the maximum or the minimum.
+</p>
+<a name="index-extvm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extv<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract a bit-field from register operand 1, sign-extend it, and store
+it in operand 0. Operand 2 specifies the width of the field in bits
+and operand 3 the starting bit, which counts from the most significant
+bit if &lsquo;<samp>BITS_BIG_ENDIAN</samp>&rsquo; is true and from the least significant bit
+otherwise.
+</p>
+<p>Operands 0 and 1 both have mode <var>m</var>. Operands 2 and 3 have a
+target-specific mode.
+</p>
+<a name="index-extvmisalignm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extvmisalign<var>m</var></samp>&rsquo;</dt>
+<dd><p>Extract a bit-field from memory operand 1, sign extend it, and store
+it in operand 0. Operand 2 specifies the width in bits and operand 3
+the starting bit. The starting bit is always somewhere in the first byte of
+operand 1; it counts from the most significant bit if &lsquo;<samp>BITS_BIG_ENDIAN</samp>&rsquo;
+is true and from the least significant bit otherwise.
+</p>
+<p>Operand 0 has mode <var>m</var> while operand 1 has <code>BLK</code> mode.
+Operands 2 and 3 have a target-specific mode.
+</p>
+<p>The instruction must not read beyond the last byte of the bit-field.
+</p>
+<a name="index-extzvm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extzv<var>m</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>extv<var>m</var></samp>&rsquo; except that the bit-field value is zero-extended.
+</p>
+<a name="index-extzvmisalignm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extzvmisalign<var>m</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>extvmisalign<var>m</var></samp>&rsquo; except that the bit-field value is
+zero-extended.
+</p>
+<a name="index-insvm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>insv<var>m</var></samp>&rsquo;</dt>
+<dd><p>Insert operand 3 into a bit-field of register operand 0. Operand 1
+specifies the width of the field in bits and operand 2 the starting bit,
+which counts from the most significant bit if &lsquo;<samp>BITS_BIG_ENDIAN</samp>&rsquo;
+is true and from the least significant bit otherwise.
+</p>
+<p>Operands 0 and 3 both have mode <var>m</var>. Operands 1 and 2 have a
+target-specific mode.
+</p>
+<a name="index-insvmisalignm-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>insvmisalign<var>m</var></samp>&rsquo;</dt>
+<dd><p>Insert operand 3 into a bit-field of memory operand 0. Operand 1
+specifies the width of the field in bits and operand 2 the starting bit.
+The starting bit is always somewhere in the first byte of operand 0;
+it counts from the most significant bit if &lsquo;<samp>BITS_BIG_ENDIAN</samp>&rsquo;
+is true and from the least significant bit otherwise.
+</p>
+<p>Operand 3 has mode <var>m</var> while operand 0 has <code>BLK</code> mode.
+Operands 1 and 2 have a target-specific mode.
+</p>
+<p>The instruction must not read or write beyond the last byte of the bit-field.
+</p>
+<a name="index-extv-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extv</samp>&rsquo;</dt>
+<dd><p>Extract a bit-field from operand 1 (a register or memory operand), where
+operand 2 specifies the width in bits and operand 3 the starting bit,
+and store it in operand 0. Operand 0 must have mode <code>word_mode</code>.
+Operand 1 may have mode <code>byte_mode</code> or <code>word_mode</code>; often
+<code>word_mode</code> is allowed only for registers. Operands 2 and 3 must
+be valid for <code>word_mode</code>.
+</p>
+<p>The RTL generation pass generates this instruction only with constants
+for operands 2 and 3 and the constant is never zero for operand 2.
+</p>
+<p>The bit-field value is sign-extended to a full word integer
+before it is stored in operand 0.
+</p>
+<p>This pattern is deprecated; please use &lsquo;<samp>extv<var>m</var></samp>&rsquo; and
+<code>extvmisalign<var>m</var></code> instead.
+</p>
+<a name="index-extzv-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>extzv</samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>extv</samp>&rsquo; except that the bit-field value is zero-extended.
+</p>
+<p>This pattern is deprecated; please use &lsquo;<samp>extzv<var>m</var></samp>&rsquo; and
+<code>extzvmisalign<var>m</var></code> instead.
+</p>
+<a name="index-insv-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>insv</samp>&rsquo;</dt>
+<dd><p>Store operand 3 (which must be valid for <code>word_mode</code>) into a
+bit-field in operand 0, where operand 1 specifies the width in bits and
+operand 2 the starting bit. Operand 0 may have mode <code>byte_mode</code> or
+<code>word_mode</code>; often <code>word_mode</code> is allowed only for registers.
+Operands 1 and 2 must be valid for <code>word_mode</code>.
+</p>
+<p>The RTL generation pass generates this instruction only with constants
+for operands 1 and 2 and the constant is never zero for operand 1.
+</p>
+<p>This pattern is deprecated; please use &lsquo;<samp>insv<var>m</var></samp>&rsquo; and
+<code>insvmisalign<var>m</var></code> instead.
+</p>
+<a name="index-movmodecc-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mov<var>mode</var>cc</samp>&rsquo;</dt>
+<dd><p>Conditionally move operand 2 or operand 3 into operand 0 according to the
+comparison in operand 1. If the comparison is true, operand 2 is moved
+into operand 0, otherwise operand 3 is moved.
+</p>
+<p>The mode of the operands being compared need not be the same as the operands
+being moved. Some machines, sparc64 for example, have instructions that
+conditionally move an integer value based on the floating point condition
+codes and vice versa.
+</p>
+<p>If the machine does not have conditional move instructions, do not
+define these patterns.
+</p>
+<a name="index-addmodecc-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>add<var>mode</var>cc</samp>&rsquo;</dt>
+<dd><p>Similar to &lsquo;<samp>mov<var>mode</var>cc</samp>&rsquo; but for conditional addition. Conditionally
+move operand 2 or (operands 2 + operand 3) into operand 0 according to the
+comparison in operand 1. If the comparison is false, operand 2 is moved into
+operand 0, otherwise (operand 2 + operand 3) is moved.
+</p>
+<a name="index-cond_005faddmode-instruction-pattern"></a>
+<a name="index-cond_005fsubmode-instruction-pattern"></a>
+<a name="index-cond_005fmulmode-instruction-pattern"></a>
+<a name="index-cond_005fdivmode-instruction-pattern"></a>
+<a name="index-cond_005fudivmode-instruction-pattern"></a>
+<a name="index-cond_005fmodmode-instruction-pattern"></a>
+<a name="index-cond_005fumodmode-instruction-pattern"></a>
+<a name="index-cond_005fandmode-instruction-pattern"></a>
+<a name="index-cond_005fiormode-instruction-pattern"></a>
+<a name="index-cond_005fxormode-instruction-pattern"></a>
+<a name="index-cond_005fsminmode-instruction-pattern"></a>
+<a name="index-cond_005fsmaxmode-instruction-pattern"></a>
+<a name="index-cond_005fuminmode-instruction-pattern"></a>
+<a name="index-cond_005fumaxmode-instruction-pattern"></a>
+<a name="index-cond_005ffminmode-instruction-pattern"></a>
+<a name="index-cond_005ffmaxmode-instruction-pattern"></a>
+<a name="index-cond_005fashlmode-instruction-pattern"></a>
+<a name="index-cond_005fashrmode-instruction-pattern"></a>
+<a name="index-cond_005flshrmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cond_add<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_mul<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_div<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_udiv<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_mod<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_umod<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_ior<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_xor<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_smin<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_smax<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_umin<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_umax<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_fmin<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_fmax<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_ashl<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_ashr<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_lshr<var>mode</var></samp>&rsquo;</dt>
+<dd><p>When operand 1 is true, perform an operation on operands 2 and 3 and
+store the result in operand 0, otherwise store operand 4 in operand 0.
+The operation works elementwise if the operands are vectors.
+</p>
+<p>The scalar case is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">op0 = op1 ? op2 <var>op</var> op3 : op4;
+</pre></div>
+
+<p>while the vector case is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">for (i = 0; i &lt; GET_MODE_NUNITS (<var>m</var>); i++)
+ op0[i] = op1[i] ? op2[i] <var>op</var> op3[i] : op4[i];
+</pre></div>
+
+<p>where, for example, <var>op</var> is <code>+</code> for &lsquo;<samp>cond_add<var>mode</var></samp>&rsquo;.
+</p>
+<p>When defined for floating-point modes, the contents of &lsquo;<samp>op3[i]</samp>&rsquo;
+are not interpreted if &lsquo;<samp>op1[i]</samp>&rsquo; is false, just like they would not
+be in a normal C &lsquo;<samp>?:</samp>&rsquo; condition.
+</p>
+<p>Operands 0, 2, 3 and 4 all have mode <var>m</var>. Operand 1 is a scalar
+integer if <var>m</var> is scalar, otherwise it has the mode returned by
+<code>TARGET_VECTORIZE_GET_MASK_MODE</code>.
+</p>
+<p>&lsquo;<samp>cond_<var>op</var><var>mode</var></samp>&rsquo; generally corresponds to a conditional
+form of &lsquo;<samp><var>op</var><var>mode</var>3</samp>&rsquo;. As an exception, the vector forms
+of shifts correspond to patterns like <code>vashl<var>mode</var>3</code> rather
+than patterns like <code>ashl<var>mode</var>3</code>.
+</p>
+<a name="index-cond_005ffmamode-instruction-pattern"></a>
+<a name="index-cond_005ffmsmode-instruction-pattern"></a>
+<a name="index-cond_005ffnmamode-instruction-pattern"></a>
+<a name="index-cond_005ffnmsmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cond_fma<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_fms<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_fnma<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>cond_fnms<var>mode</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>cond_add<var>m</var></samp>&rsquo;, except that the conditional operation
+takes 3 operands rather than two. For example, the vector form of
+&lsquo;<samp>cond_fma<var>mode</var></samp>&rsquo; is equivalent to:
+</p>
+<div class="smallexample">
+<pre class="smallexample">for (i = 0; i &lt; GET_MODE_NUNITS (<var>m</var>); i++)
+ op0[i] = op1[i] ? fma (op2[i], op3[i], op4[i]) : op5[i];
+</pre></div>
+
+<a name="index-negmodecc-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>neg<var>mode</var>cc</samp>&rsquo;</dt>
+<dd><p>Similar to &lsquo;<samp>mov<var>mode</var>cc</samp>&rsquo; but for conditional negation. Conditionally
+move the negation of operand 2 or the unchanged operand 3 into operand 0
+according to the comparison in operand 1. If the comparison is true, the negation
+of operand 2 is moved into operand 0, otherwise operand 3 is moved.
+</p>
+<a name="index-notmodecc-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>not<var>mode</var>cc</samp>&rsquo;</dt>
+<dd><p>Similar to &lsquo;<samp>neg<var>mode</var>cc</samp>&rsquo; but for conditional complement.
+Conditionally move the bitwise complement of operand 2 or the unchanged
+operand 3 into operand 0 according to the comparison in operand 1.
+If the comparison is true, the complement of operand 2 is moved into
+operand 0, otherwise operand 3 is moved.
+</p>
+<a name="index-cstoremode4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo;</dt>
+<dd><p>Store zero or nonzero in operand 0 according to whether a comparison
+is true. Operand 1 is a comparison operator. Operand 2 and operand 3
+are the first and second operand of the comparison, respectively.
+You specify the mode that operand 0 must have when you write the
+<code>match_operand</code> expression. The compiler automatically sees which
+mode you have used and supplies an operand of that mode.
+</p>
+<p>The value stored for a true condition must have 1 as its low bit, or
+else must be negative. Otherwise the instruction is not suitable and
+you should omit it from the machine description. You describe to the
+compiler exactly which value is stored by defining the macro
+<code>STORE_FLAG_VALUE</code> (see <a href="Misc.html#Misc">Misc</a>). If a description cannot be
+found that can be used for all the possible comparison operators, you
+should pick one and use a <code>define_expand</code> to map all results
+onto the one you chose.
+</p>
+<p>These operations may <code>FAIL</code>, but should do so only in relatively
+uncommon cases; if they would <code>FAIL</code> for common cases involving
+integer comparisons, it is best to restrict the predicates to not
+allow these operands. Likewise if a given comparison operator will
+always fail, independent of the operands (for floating-point modes, the
+<code>ordered_comparison_operator</code> predicate is often useful in this case).
+</p>
+<p>If this pattern is omitted, the compiler will generate a conditional
+branch&mdash;for example, it may copy a constant one to the target and branching
+around an assignment of zero to the target&mdash;or a libcall. If the predicate
+for operand 1 only rejects some operators, it will also try reordering the
+operands and/or inverting the result value (e.g. by an exclusive OR).
+These possibilities could be cheaper or equivalent to the instructions
+used for the &lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo; pattern followed by those required
+to convert a positive result from <code>STORE_FLAG_VALUE</code> to 1; in this
+case, you can and should make operand 1&rsquo;s predicate reject some operators
+in the &lsquo;<samp>cstore<var>mode</var>4</samp>&rsquo; pattern, or remove the pattern altogether
+from the machine description.
+</p>
+<a name="index-tbranch_005fopmode3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>tbranch_<var>op</var><var>mode</var>3</samp>&rsquo;</dt>
+<dd><p>Conditional branch instruction combined with a bit test-and-compare
+instruction. Operand 0 is the operand of the comparison. Operand 1 is the bit
+position of Operand 1 to test. Operand 3 is the <code>code_label</code> to jump to.
+<var>op</var> is one of <var>eq</var> or <var>ne</var>.
+</p>
+<a name="index-cbranchmode4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>cbranch<var>mode</var>4</samp>&rsquo;</dt>
+<dd><p>Conditional branch instruction combined with a compare instruction.
+Operand 0 is a comparison operator. Operand 1 and operand 2 are the
+first and second operands of the comparison, respectively. Operand 3
+is the <code>code_label</code> to jump to.
+</p>
+<a name="index-jump-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>jump</samp>&rsquo;</dt>
+<dd><p>A jump inside a function; an unconditional branch. Operand 0 is the
+<code>code_label</code> to jump to. This pattern name is mandatory on all
+machines.
+</p>
+<a name="index-call-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>call</samp>&rsquo;</dt>
+<dd><p>Subroutine call instruction returning no value. Operand 0 is the
+function to call; operand 1 is the number of bytes of arguments pushed
+as a <code>const_int</code>. Operand 2 is the result of calling the target
+hook <code>TARGET_FUNCTION_ARG</code> with the second argument <code>arg</code>
+yielding true for <code>arg.end_marker_p ()</code>, in a call after all
+parameters have been passed to that hook. By default this is the first
+register beyond those used for arguments in the call, or <code>NULL</code> if
+all the argument-registers are used in the call.
+</p>
+<p>On most machines, operand 2 is not actually stored into the RTL
+pattern. It is supplied for the sake of some RISC machines which need
+to put this information into the assembler code; they can put it in
+the RTL instead of operand 1.
+</p>
+<p>Operand 0 should be a <code>mem</code> RTX whose address is the address of the
+function. Note, however, that this address can be a <code>symbol_ref</code>
+expression even if it would not be a legitimate memory address on the
+target machine. If it is also not a valid argument for a call
+instruction, the pattern for this operation should be a
+<code>define_expand</code> (see <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>) that places the
+address into a register and uses that register in the call instruction.
+</p>
+<a name="index-call_005fvalue-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>call_value</samp>&rsquo;</dt>
+<dd><p>Subroutine call instruction returning a value. Operand 0 is the hard
+register in which the value is returned. There are three more
+operands, the same as the three operands of the &lsquo;<samp>call</samp>&rsquo;
+instruction (but with numbers increased by one).
+</p>
+<p>Subroutines that return <code>BLKmode</code> objects use the &lsquo;<samp>call</samp>&rsquo;
+insn.
+</p>
+<a name="index-call_005fpop-instruction-pattern"></a>
+<a name="index-call_005fvalue_005fpop-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>call_pop</samp>&rsquo;, &lsquo;<samp>call_value_pop</samp>&rsquo;</dt>
+<dd><p>Similar to &lsquo;<samp>call</samp>&rsquo; and &lsquo;<samp>call_value</samp>&rsquo;, except used if defined and
+if <code>RETURN_POPS_ARGS</code> is nonzero. They should emit a <code>parallel</code>
+that contains both the function call and a <code>set</code> to indicate the
+adjustment made to the frame pointer.
+</p>
+<p>For machines where <code>RETURN_POPS_ARGS</code> can be nonzero, the use of these
+patterns increases the number of functions for which the frame pointer
+can be eliminated, if desired.
+</p>
+<a name="index-untyped_005fcall-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>untyped_call</samp>&rsquo;</dt>
+<dd><p>Subroutine call instruction returning a value of any type. Operand 0 is
+the function to call; operand 1 is a memory location where the result of
+calling the function is to be stored; operand 2 is a <code>parallel</code>
+expression where each element is a <code>set</code> expression that indicates
+the saving of a function return value into the result block.
+</p>
+<p>This instruction pattern should be defined to support
+<code>__builtin_apply</code> on machines where special instructions are needed
+to call a subroutine with arbitrary arguments or to save the value
+returned. This instruction pattern is required on machines that have
+multiple registers that can hold a return value
+(i.e. <code>FUNCTION_VALUE_REGNO_P</code> is true for more than one register).
+</p>
+<a name="index-return-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>return</samp>&rsquo;</dt>
+<dd><p>Subroutine return instruction. This instruction pattern name should be
+defined only if a single instruction can do all the work of returning
+from a function.
+</p>
+<p>Like the &lsquo;<samp>mov<var>m</var></samp>&rsquo; patterns, this pattern is also used after the
+RTL generation phase. In this case it is to support machines where
+multiple instructions are usually needed to return from a function, but
+some class of functions only requires one instruction to implement a
+return. Normally, the applicable functions are those which do not need
+to save any registers or allocate stack space.
+</p>
+<p>It is valid for this pattern to expand to an instruction using
+<code>simple_return</code> if no epilogue is required.
+</p>
+<a name="index-simple_005freturn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>simple_return</samp>&rsquo;</dt>
+<dd><p>Subroutine return instruction. This instruction pattern name should be
+defined only if a single instruction can do all the work of returning
+from a function on a path where no epilogue is required. This pattern
+is very similar to the <code>return</code> instruction pattern, but it is emitted
+only by the shrink-wrapping optimization on paths where the function
+prologue has not been executed, and a function return should occur without
+any of the effects of the epilogue. Additional uses may be introduced on
+paths where both the prologue and the epilogue have executed.
+</p>
+<a name="index-reload_005fcompleted"></a>
+<a name="index-leaf_005ffunction_005fp"></a>
+<p>For such machines, the condition specified in this pattern should only
+be true when <code>reload_completed</code> is nonzero and the function&rsquo;s
+epilogue would only be a single instruction. For machines with register
+windows, the routine <code>leaf_function_p</code> may be used to determine if
+a register window push is required.
+</p>
+<p>Machines that have conditional return instructions should define patterns
+such as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;&quot;
+ [(set (pc)
+ (if_then_else (match_operator
+ 0 &quot;comparison_operator&quot;
+ [(reg:CC CC_REG) (const_int 0)])
+ (return)
+ (pc)))]
+ &quot;<var>condition</var>&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<p>where <var>condition</var> would normally be the same condition specified on the
+named &lsquo;<samp>return</samp>&rsquo; pattern.
+</p>
+<a name="index-untyped_005freturn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>untyped_return</samp>&rsquo;</dt>
+<dd><p>Untyped subroutine return instruction. This instruction pattern should
+be defined to support <code>__builtin_return</code> on machines where special
+instructions are needed to return a value of any type.
+</p>
+<p>Operand 0 is a memory location where the result of calling a function
+with <code>__builtin_apply</code> is stored; operand 1 is a <code>parallel</code>
+expression where each element is a <code>set</code> expression that indicates
+the restoring of a function return value from the result block.
+</p>
+<a name="index-nop-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>nop</samp>&rsquo;</dt>
+<dd><p>No-op instruction. This instruction pattern name should always be defined
+to output a no-op in assembler code. <code>(const_int 0)</code> will do as an
+RTL pattern.
+</p>
+<a name="index-indirect_005fjump-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>indirect_jump</samp>&rsquo;</dt>
+<dd><p>An instruction to jump to an address which is operand zero.
+This pattern name is mandatory on all machines.
+</p>
+<a name="index-casesi-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>casesi</samp>&rsquo;</dt>
+<dd><p>Instruction to jump through a dispatch table, including bounds checking.
+This instruction takes five operands:
+</p>
+<ol>
+<li> The index to dispatch on, which has mode <code>SImode</code>.
+
+</li><li> The lower bound for indices in the table, an integer constant.
+
+</li><li> The total range of indices in the table&mdash;the largest index
+minus the smallest one (both inclusive).
+
+</li><li> A label that precedes the table itself.
+
+</li><li> A label to jump to if the index has a value outside the bounds.
+</li></ol>
+
+<p>The table is an <code>addr_vec</code> or <code>addr_diff_vec</code> inside of a
+<code>jump_table_data</code>. The number of elements in the table is one plus the
+difference between the upper bound and the lower bound.
+</p>
+<a name="index-tablejump-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>tablejump</samp>&rsquo;</dt>
+<dd><p>Instruction to jump to a variable address. This is a low-level
+capability which can be used to implement a dispatch table when there
+is no &lsquo;<samp>casesi</samp>&rsquo; pattern.
+</p>
+<p>This pattern requires two operands: the address or offset, and a label
+which should immediately precede the jump table. If the macro
+<code>CASE_VECTOR_PC_RELATIVE</code> evaluates to a nonzero value then the first
+operand is an offset which counts from the address of the table; otherwise,
+it is an absolute address to jump to. In either case, the first operand has
+mode <code>Pmode</code>.
+</p>
+<p>The &lsquo;<samp>tablejump</samp>&rsquo; insn is always the last insn before the jump
+table it uses. Its assembler code normally has no need to use the
+second operand, but you should incorporate it in the RTL pattern so
+that the jump optimizer will not delete the table as unreachable code.
+</p>
+
+<a name="index-doloop_005fend-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>doloop_end</samp>&rsquo;</dt>
+<dd><p>Conditional branch instruction that decrements a register and
+jumps if the register is nonzero. Operand 0 is the register to
+decrement and test; operand 1 is the label to jump to if the
+register is nonzero.
+See <a href="Looping-Patterns.html#Looping-Patterns">Looping Patterns</a>.
+</p>
+<p>This optional instruction pattern should be defined for machines with
+low-overhead looping instructions as the loop optimizer will try to
+modify suitable loops to utilize it. The target hook
+<code>TARGET_CAN_USE_DOLOOP_P</code> controls the conditions under which
+low-overhead loops can be used.
+</p>
+<a name="index-doloop_005fbegin-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>doloop_begin</samp>&rsquo;</dt>
+<dd><p>Companion instruction to <code>doloop_end</code> required for machines that
+need to perform some initialization, such as loading a special counter
+register. Operand 1 is the associated <code>doloop_end</code> pattern and
+operand 0 is the register that it decrements.
+</p>
+<p>If initialization insns do not always need to be emitted, use a
+<code>define_expand</code> (see <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>) and make it fail.
+</p>
+<a name="index-canonicalize_005ffuncptr_005ffor_005fcompare-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>canonicalize_funcptr_for_compare</samp>&rsquo;</dt>
+<dd><p>Canonicalize the function pointer in operand 1 and store the result
+into operand 0.
+</p>
+<p>Operand 0 is always a <code>reg</code> and has mode <code>Pmode</code>; operand 1
+may be a <code>reg</code>, <code>mem</code>, <code>symbol_ref</code>, <code>const_int</code>, etc
+and also has mode <code>Pmode</code>.
+</p>
+<p>Canonicalization of a function pointer usually involves computing
+the address of the function which would be called if the function
+pointer were used in an indirect call.
+</p>
+<p>Only define this pattern if function pointers on the target machine
+can have different values but still call the same function when
+used in an indirect call.
+</p>
+<a name="index-save_005fstack_005fblock-instruction-pattern"></a>
+<a name="index-save_005fstack_005ffunction-instruction-pattern"></a>
+<a name="index-save_005fstack_005fnonlocal-instruction-pattern"></a>
+<a name="index-restore_005fstack_005fblock-instruction-pattern"></a>
+<a name="index-restore_005fstack_005ffunction-instruction-pattern"></a>
+<a name="index-restore_005fstack_005fnonlocal-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>save_stack_block</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>save_stack_function</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>save_stack_nonlocal</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>restore_stack_block</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>restore_stack_function</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>restore_stack_nonlocal</samp>&rsquo;</dt>
+<dd><p>Most machines save and restore the stack pointer by copying it to or
+from an object of mode <code>Pmode</code>. Do not define these patterns on
+such machines.
+</p>
+<p>Some machines require special handling for stack pointer saves and
+restores. On those machines, define the patterns corresponding to the
+non-standard cases by using a <code>define_expand</code> (see <a href="Expander-Definitions.html#Expander-Definitions">Expander Definitions</a>) that produces the required insns. The three types of
+saves and restores are:
+</p>
+<ol>
+<li> &lsquo;<samp>save_stack_block</samp>&rsquo; saves the stack pointer at the start of a block
+that allocates a variable-sized object, and &lsquo;<samp>restore_stack_block</samp>&rsquo;
+restores the stack pointer when the block is exited.
+
+</li><li> &lsquo;<samp>save_stack_function</samp>&rsquo; and &lsquo;<samp>restore_stack_function</samp>&rsquo; do a
+similar job for the outermost block of a function and are used when the
+function allocates variable-sized objects or calls <code>alloca</code>. Only
+the epilogue uses the restored stack pointer, allowing a simpler save or
+restore sequence on some machines.
+
+</li><li> &lsquo;<samp>save_stack_nonlocal</samp>&rsquo; is used in functions that contain labels
+branched to by nested functions. It saves the stack pointer in such a
+way that the inner function can use &lsquo;<samp>restore_stack_nonlocal</samp>&rsquo; to
+restore the stack pointer. The compiler generates code to restore the
+frame and argument pointer registers, but some machines require saving
+and restoring additional data such as register window information or
+stack backchains. Place insns in these patterns to save and restore any
+such required data.
+</li></ol>
+
+<p>When saving the stack pointer, operand 0 is the save area and operand 1
+is the stack pointer. The mode used to allocate the save area defaults
+to <code>Pmode</code> but you can override that choice by defining the
+<code>STACK_SAVEAREA_MODE</code> macro (see <a href="Storage-Layout.html#Storage-Layout">Storage Layout</a>). You must
+specify an integral mode, or <code>VOIDmode</code> if no save area is needed
+for a particular type of save (either because no save is needed or
+because a machine-specific save area can be used). Operand 0 is the
+stack pointer and operand 1 is the save area for restore operations. If
+&lsquo;<samp>save_stack_block</samp>&rsquo; is defined, operand 0 must not be
+<code>VOIDmode</code> since these saves can be arbitrarily nested.
+</p>
+<p>A save area is a <code>mem</code> that is at a constant offset from
+<code>virtual_stack_vars_rtx</code> when the stack pointer is saved for use by
+nonlocal gotos and a <code>reg</code> in the other two cases.
+</p>
+<a name="index-allocate_005fstack-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>allocate_stack</samp>&rsquo;</dt>
+<dd><p>Subtract (or add if <code>STACK_GROWS_DOWNWARD</code> is undefined) operand 1 from
+the stack pointer to create space for dynamically allocated data.
+</p>
+<p>Store the resultant pointer to this space into operand 0. If you
+are allocating space from the main stack, do this by emitting a
+move insn to copy <code>virtual_stack_dynamic_rtx</code> to operand 0.
+If you are allocating the space elsewhere, generate code to copy the
+location of the space to operand 0. In the latter case, you must
+ensure this space gets freed when the corresponding space on the main
+stack is free.
+</p>
+<p>Do not define this pattern if all that must be done is the subtraction.
+Some machines require other operations such as stack probes or
+maintaining the back chain. Define this pattern to emit those
+operations in addition to updating the stack pointer.
+</p>
+<a name="index-check_005fstack-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>check_stack</samp>&rsquo;</dt>
+<dd><p>If stack checking (see <a href="Stack-Checking.html#Stack-Checking">Stack Checking</a>) cannot be done on your system by
+probing the stack, define this pattern to perform the needed check and signal
+an error if the stack has overflowed. The single operand is the address in
+the stack farthest from the current stack pointer that you need to validate.
+Normally, on platforms where this pattern is needed, you would obtain the
+stack limit from a global or thread-specific variable or register.
+</p>
+<a name="index-probe_005fstack_005faddress-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>probe_stack_address</samp>&rsquo;</dt>
+<dd><p>If stack checking (see <a href="Stack-Checking.html#Stack-Checking">Stack Checking</a>) can be done on your system by
+probing the stack but without the need to actually access it, define this
+pattern and signal an error if the stack has overflowed. The single operand
+is the memory address in the stack that needs to be probed.
+</p>
+<a name="index-probe_005fstack-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>probe_stack</samp>&rsquo;</dt>
+<dd><p>If stack checking (see <a href="Stack-Checking.html#Stack-Checking">Stack Checking</a>) can be done on your system by
+probing the stack but doing it with a &ldquo;store zero&rdquo; instruction is not valid
+or optimal, define this pattern to do the probing differently and signal an
+error if the stack has overflowed. The single operand is the memory reference
+in the stack that needs to be probed.
+</p>
+<a name="index-nonlocal_005fgoto-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>nonlocal_goto</samp>&rsquo;</dt>
+<dd><p>Emit code to generate a non-local goto, e.g., a jump from one function
+to a label in an outer function. This pattern has four arguments,
+each representing a value to be used in the jump. The first
+argument is to be loaded into the frame pointer, the second is
+the address to branch to (code to dispatch to the actual label),
+the third is the address of a location where the stack is saved,
+and the last is the address of the label, to be placed in the
+location for the incoming static chain.
+</p>
+<p>On most machines you need not define this pattern, since GCC will
+already generate the correct code, which is to load the frame pointer
+and static chain, restore the stack (using the
+&lsquo;<samp>restore_stack_nonlocal</samp>&rsquo; pattern, if defined), and jump indirectly
+to the dispatcher. You need only define this pattern if this code will
+not work on your machine.
+</p>
+<a name="index-nonlocal_005fgoto_005freceiver-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>nonlocal_goto_receiver</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, contains code needed at the target of a
+nonlocal goto after the code already generated by GCC. You will not
+normally need to define this pattern. A typical reason why you might
+need this pattern is if some value, such as a pointer to a global table,
+must be restored when the frame pointer is restored. Note that a nonlocal
+goto only occurs within a unit-of-translation, so a global table pointer
+that is shared by all functions of a given module need not be restored.
+There are no arguments.
+</p>
+<a name="index-exception_005freceiver-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>exception_receiver</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, contains code needed at the site of an
+exception handler that isn&rsquo;t needed at the site of a nonlocal goto. You
+will not normally need to define this pattern. A typical reason why you
+might need this pattern is if some value, such as a pointer to a global
+table, must be restored after control flow is branched to the handler of
+an exception. There are no arguments.
+</p>
+<a name="index-builtin_005fsetjmp_005fsetup-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>builtin_setjmp_setup</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, contains additional code needed to initialize
+the <code>jmp_buf</code>. You will not normally need to define this pattern.
+A typical reason why you might need this pattern is if some value, such
+as a pointer to a global table, must be restored. Though it is
+preferred that the pointer value be recalculated if possible (given the
+address of a label for instance). The single argument is a pointer to
+the <code>jmp_buf</code>. Note that the buffer is five words long and that
+the first three are normally used by the generic mechanism.
+</p>
+<a name="index-builtin_005fsetjmp_005freceiver-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>builtin_setjmp_receiver</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, contains code needed at the site of a
+built-in setjmp that isn&rsquo;t needed at the site of a nonlocal goto. You
+will not normally need to define this pattern. A typical reason why you
+might need this pattern is if some value, such as a pointer to a global
+table, must be restored. It takes one argument, which is the label
+to which builtin_longjmp transferred control; this pattern may be emitted
+at a small offset from that label.
+</p>
+<a name="index-builtin_005flongjmp-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>builtin_longjmp</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, performs the entire action of the longjmp.
+You will not normally need to define this pattern unless you also define
+<code>builtin_setjmp_setup</code>. The single argument is a pointer to the
+<code>jmp_buf</code>.
+</p>
+<a name="index-eh_005freturn-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>eh_return</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, affects the way <code>__builtin_eh_return</code>,
+and thence the call frame exception handling library routines, are
+built. It is intended to handle non-trivial actions needed along
+the abnormal return path.
+</p>
+<p>The address of the exception handler to which the function should return
+is passed as operand to this pattern. It will normally need to copied by
+the pattern to some special register or memory location.
+If the pattern needs to determine the location of the target call
+frame in order to do so, it may use <code>EH_RETURN_STACKADJ_RTX</code>,
+if defined; it will have already been assigned.
+</p>
+<p>If this pattern is not defined, the default action will be to simply
+copy the return address to <code>EH_RETURN_HANDLER_RTX</code>. Either
+that macro or this pattern needs to be defined if call frame exception
+handling is to be used.
+</p>
+<a name="index-prologue-instruction-pattern"></a>
+<a name="prologue-instruction-pattern"></a></dd>
+<dt>&lsquo;<samp>prologue</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits RTL for entry to a function. The function
+entry is responsible for setting up the stack frame, initializing the frame
+pointer register, saving callee saved registers, etc.
+</p>
+<p>Using a prologue pattern is generally preferred over defining
+<code>TARGET_ASM_FUNCTION_PROLOGUE</code> to emit assembly code for the prologue.
+</p>
+<p>The <code>prologue</code> pattern is particularly useful for targets which perform
+instruction scheduling.
+</p>
+<a name="index-window_005fsave-instruction-pattern"></a>
+<a name="window_005fsave-instruction-pattern"></a></dd>
+<dt>&lsquo;<samp>window_save</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits RTL for a register window save. It should
+be defined if the target machine has register windows but the window events
+are decoupled from calls to subroutines. The canonical example is the SPARC
+architecture.
+</p>
+<a name="index-epilogue-instruction-pattern"></a>
+<a name="epilogue-instruction-pattern"></a></dd>
+<dt>&lsquo;<samp>epilogue</samp>&rsquo;</dt>
+<dd><p>This pattern emits RTL for exit from a function. The function
+exit is responsible for deallocating the stack frame, restoring callee saved
+registers and emitting the return instruction.
+</p>
+<p>Using an epilogue pattern is generally preferred over defining
+<code>TARGET_ASM_FUNCTION_EPILOGUE</code> to emit assembly code for the epilogue.
+</p>
+<p>The <code>epilogue</code> pattern is particularly useful for targets which perform
+instruction scheduling or which have delay slots for their return instruction.
+</p>
+<a name="index-sibcall_005fepilogue-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sibcall_epilogue</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits RTL for exit from a function without the final
+branch back to the calling function. This pattern will be emitted before any
+sibling call (aka tail call) sites.
+</p>
+<p>The <code>sibcall_epilogue</code> pattern must not clobber any arguments used for
+parameter passing or any stack slots for arguments passed to the current
+function.
+</p>
+<a name="index-trap-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>trap</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, signals an error, typically by causing some
+kind of signal to be raised.
+</p>
+<a name="index-ctrapMM4-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>ctrap<var>MM</var>4</samp>&rsquo;</dt>
+<dd><p>Conditional trap instruction. Operand 0 is a piece of RTL which
+performs a comparison, and operands 1 and 2 are the arms of the
+comparison. Operand 3 is the trap code, an integer.
+</p>
+<p>A typical <code>ctrap</code> pattern looks like
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;ctrapsi4&quot;
+ [(trap_if (match_operator 0 &quot;trap_operator&quot;
+ [(match_operand 1 &quot;register_operand&quot;)
+ (match_operand 2 &quot;immediate_operand&quot;)])
+ (match_operand 3 &quot;const_int_operand&quot; &quot;i&quot;))]
+ &quot;&quot;
+ &quot;&hellip;&quot;)
+</pre></div>
+
+<a name="index-prefetch-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>prefetch</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits code for a non-faulting data prefetch
+instruction. Operand 0 is the address of the memory to prefetch. Operand 1
+is a constant 1 if the prefetch is preparing for a write to the memory
+address, or a constant 0 otherwise. Operand 2 is the expected degree of
+temporal locality of the data and is a value between 0 and 3, inclusive; 0
+means that the data has no temporal locality, so it need not be left in the
+cache after the access; 3 means that the data has a high degree of temporal
+locality and should be left in all levels of cache possible; 1 and 2 mean,
+respectively, a low or moderate degree of temporal locality.
+</p>
+<p>Targets that do not support write prefetches or locality hints can ignore
+the values of operands 1 and 2.
+</p>
+<a name="index-blockage-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>blockage</samp>&rsquo;</dt>
+<dd><p>This pattern defines a pseudo insn that prevents the instruction
+scheduler and other passes from moving instructions and using register
+equivalences across the boundary defined by the blockage insn.
+This needs to be an UNSPEC_VOLATILE pattern or a volatile ASM.
+</p>
+<a name="index-memory_005fblockage-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>memory_blockage</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, represents a compiler memory barrier, and will be
+placed at points across which RTL passes may not propagate memory accesses.
+This instruction needs to read and write volatile BLKmode memory. It does
+not need to generate any machine instruction. If this pattern is not defined,
+the compiler falls back to emitting an instruction corresponding
+to <code>asm volatile (&quot;&quot; ::: &quot;memory&quot;)</code>.
+</p>
+<a name="index-memory_005fbarrier-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>memory_barrier</samp>&rsquo;</dt>
+<dd><p>If the target memory model is not fully synchronous, then this pattern
+should be defined to an instruction that orders both loads and stores
+before the instruction with respect to loads and stores after the instruction.
+This pattern has no operands.
+</p>
+<a name="index-speculation_005fbarrier-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>speculation_barrier</samp>&rsquo;</dt>
+<dd><p>If the target can support speculative execution, then this pattern should
+be defined to an instruction that will block subsequent execution until
+any prior speculation conditions has been resolved. The pattern must also
+ensure that the compiler cannot move memory operations past the barrier,
+so it needs to be an UNSPEC_VOLATILE pattern. The pattern has no
+operands.
+</p>
+<p>If this pattern is not defined then the default expansion of
+<code>__builtin_speculation_safe_value</code> will emit a warning. You can
+suppress this warning by defining this pattern with a final condition
+of <code>0</code> (zero), which tells the compiler that a speculation
+barrier is not needed for this target.
+</p>
+<a name="index-sync_005fcompare_005fand_005fswapmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_compare_and_swap<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits code for an atomic compare-and-swap
+operation. Operand 1 is the memory on which the atomic operation is
+performed. Operand 2 is the &ldquo;old&rdquo; value to be compared against the
+current contents of the memory location. Operand 3 is the &ldquo;new&rdquo; value
+to store in the memory if the compare succeeds. Operand 0 is the result
+of the operation; it should contain the contents of the memory
+before the operation. If the compare succeeds, this should obviously be
+a copy of operand 2.
+</p>
+<p>This pattern must show that both operand 0 and operand 1 are modified.
+</p>
+<p>This pattern must issue any memory barrier instructions such that all
+memory operations before the atomic operation occur before the atomic
+operation and all memory operations after the atomic operation occur
+after the atomic operation.
+</p>
+<p>For targets where the success or failure of the compare-and-swap
+operation is available via the status flags, it is possible to
+avoid a separate compare operation and issue the subsequent
+branch or store-flag operation immediately after the compare-and-swap.
+To this end, GCC will look for a <code>MODE_CC</code> set in the
+output of <code>sync_compare_and_swap<var>mode</var></code>; if the machine
+description includes such a set, the target should also define special
+<code>cbranchcc4</code> and/or <code>cstorecc4</code> instructions. GCC will then
+be able to take the destination of the <code>MODE_CC</code> set and pass it
+to the <code>cbranchcc4</code> or <code>cstorecc4</code> pattern as the first
+operand of the comparison (the second will be <code>(const_int 0)</code>).
+</p>
+<p>For targets where the operating system may provide support for this
+operation via library calls, the <code>sync_compare_and_swap_optab</code>
+may be initialized to a function with the same interface as the
+<code>__sync_val_compare_and_swap_<var>n</var></code> built-in. If the entire
+set of <var>__sync</var> builtins are supported via library calls, the
+target can initialize all of the optabs at once with
+<code>init_sync_libfuncs</code>.
+For the purposes of C++11 <code>std::atomic::is_lock_free</code>, it is
+assumed that these library calls do <em>not</em> use any kind of
+interruptable locking.
+</p>
+<a name="index-sync_005faddmode-instruction-pattern"></a>
+<a name="index-sync_005fsubmode-instruction-pattern"></a>
+<a name="index-sync_005fiormode-instruction-pattern"></a>
+<a name="index-sync_005fandmode-instruction-pattern"></a>
+<a name="index-sync_005fxormode-instruction-pattern"></a>
+<a name="index-sync_005fnandmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_add<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_ior<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_xor<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_nand<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory.
+Operand 0 is the memory on which the atomic operation is performed.
+Operand 1 is the second operand to the binary operator.
+</p>
+<p>This pattern must issue any memory barrier instructions such that all
+memory operations before the atomic operation occur before the atomic
+operation and all memory operations after the atomic operation occur
+after the atomic operation.
+</p>
+<p>If these patterns are not defined, the operation will be constructed
+from a compare-and-swap operation, if defined.
+</p>
+<a name="index-sync_005fold_005faddmode-instruction-pattern"></a>
+<a name="index-sync_005fold_005fsubmode-instruction-pattern"></a>
+<a name="index-sync_005fold_005fiormode-instruction-pattern"></a>
+<a name="index-sync_005fold_005fandmode-instruction-pattern"></a>
+<a name="index-sync_005fold_005fxormode-instruction-pattern"></a>
+<a name="index-sync_005fold_005fnandmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_old_add<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_old_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_old_ior<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_old_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_old_xor<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_old_nand<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory,
+and return the value that the memory contained before the operation.
+Operand 0 is the result value, operand 1 is the memory on which the
+atomic operation is performed, and operand 2 is the second operand
+to the binary operator.
+</p>
+<p>This pattern must issue any memory barrier instructions such that all
+memory operations before the atomic operation occur before the atomic
+operation and all memory operations after the atomic operation occur
+after the atomic operation.
+</p>
+<p>If these patterns are not defined, the operation will be constructed
+from a compare-and-swap operation, if defined.
+</p>
+<a name="index-sync_005fnew_005faddmode-instruction-pattern"></a>
+<a name="index-sync_005fnew_005fsubmode-instruction-pattern"></a>
+<a name="index-sync_005fnew_005fiormode-instruction-pattern"></a>
+<a name="index-sync_005fnew_005fandmode-instruction-pattern"></a>
+<a name="index-sync_005fnew_005fxormode-instruction-pattern"></a>
+<a name="index-sync_005fnew_005fnandmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_new_add<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_new_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_new_ior<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_new_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>sync_new_xor<var>mode</var></samp>&rsquo;, &lsquo;<samp>sync_new_nand<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns are like their <code>sync_old_<var>op</var></code> counterparts,
+except that they return the value that exists in the memory location
+after the operation, rather than before the operation.
+</p>
+<a name="index-sync_005flock_005ftest_005fand_005fsetmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_lock_test_and_set<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern takes two forms, based on the capabilities of the target.
+In either case, operand 0 is the result of the operand, operand 1 is
+the memory on which the atomic operation is performed, and operand 2
+is the value to set in the lock.
+</p>
+<p>In the ideal case, this operation is an atomic exchange operation, in
+which the previous value in memory operand is copied into the result
+operand, and the value operand is stored in the memory operand.
+</p>
+<p>For less capable targets, any value operand that is not the constant 1
+should be rejected with <code>FAIL</code>. In this case the target may use
+an atomic test-and-set bit operation. The result operand should contain
+1 if the bit was previously set and 0 if the bit was previously clear.
+The true contents of the memory operand are implementation defined.
+</p>
+<p>This pattern must issue any memory barrier instructions such that the
+pattern as a whole acts as an acquire barrier, that is all memory
+operations after the pattern do not occur until the lock is acquired.
+</p>
+<p>If this pattern is not defined, the operation will be constructed from
+a compare-and-swap operation, if defined.
+</p>
+<a name="index-sync_005flock_005freleasemode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>sync_lock_release<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, releases a lock set by
+<code>sync_lock_test_and_set<var>mode</var></code>. Operand 0 is the memory
+that contains the lock; operand 1 is the value to store in the lock.
+</p>
+<p>If the target doesn&rsquo;t implement full semantics for
+<code>sync_lock_test_and_set<var>mode</var></code>, any value operand which is not
+the constant 0 should be rejected with <code>FAIL</code>, and the true contents
+of the memory operand are implementation defined.
+</p>
+<p>This pattern must issue any memory barrier instructions such that the
+pattern as a whole acts as a release barrier, that is the lock is
+released only after all previous memory operations have completed.
+</p>
+<p>If this pattern is not defined, then a <code>memory_barrier</code> pattern
+will be emitted, followed by a store of the value to the memory operand.
+</p>
+<a name="index-atomic_005fcompare_005fand_005fswapmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_compare_and_swap<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, emits code for an atomic compare-and-swap
+operation with memory model semantics. Operand 2 is the memory on which
+the atomic operation is performed. Operand 0 is an output operand which
+is set to true or false based on whether the operation succeeded. Operand
+1 is an output operand which is set to the contents of the memory before
+the operation was attempted. Operand 3 is the value that is expected to
+be in memory. Operand 4 is the value to put in memory if the expected
+value is found there. Operand 5 is set to 1 if this compare and swap is to
+be treated as a weak operation. Operand 6 is the memory model to be used
+if the operation is a success. Operand 7 is the memory model to be used
+if the operation fails.
+</p>
+<p>If memory referred to in operand 2 contains the value in operand 3, then
+operand 4 is stored in memory pointed to by operand 2 and fencing based on
+the memory model in operand 6 is issued.
+</p>
+<p>If memory referred to in operand 2 does not contain the value in operand 3,
+then fencing based on the memory model in operand 7 is issued.
+</p>
+<p>If a target does not support weak compare-and-swap operations, or the port
+elects not to implement weak operations, the argument in operand 5 can be
+ignored. Note a strong implementation must be provided.
+</p>
+<p>If this pattern is not provided, the <code>__atomic_compare_exchange</code>
+built-in functions will utilize the legacy <code>sync_compare_and_swap</code>
+pattern with an <code>__ATOMIC_SEQ_CST</code> memory model.
+</p>
+<a name="index-atomic_005floadmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_load<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern implements an atomic load operation with memory model
+semantics. Operand 1 is the memory address being loaded from. Operand 0
+is the result of the load. Operand 2 is the memory model to be used for
+the load operation.
+</p>
+<p>If not present, the <code>__atomic_load</code> built-in function will either
+resort to a normal load with memory barriers, or a compare-and-swap
+operation if a normal load would not be atomic.
+</p>
+<a name="index-atomic_005fstoremode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_store<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern implements an atomic store operation with memory model
+semantics. Operand 0 is the memory address being stored to. Operand 1
+is the value to be written. Operand 2 is the memory model to be used for
+the operation.
+</p>
+<p>If not present, the <code>__atomic_store</code> built-in function will attempt to
+perform a normal store and surround it with any required memory fences. If
+the store would not be atomic, then an <code>__atomic_exchange</code> is
+attempted with the result being ignored.
+</p>
+<a name="index-atomic_005fexchangemode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_exchange<var>mode</var></samp>&rsquo;</dt>
+<dd><p>This pattern implements an atomic exchange operation with memory model
+semantics. Operand 1 is the memory location the operation is performed on.
+Operand 0 is an output operand which is set to the original value contained
+in the memory pointed to by operand 1. Operand 2 is the value to be
+stored. Operand 3 is the memory model to be used.
+</p>
+<p>If this pattern is not present, the built-in function
+<code>__atomic_exchange</code> will attempt to preform the operation with a
+compare and swap loop.
+</p>
+<a name="index-atomic_005faddmode-instruction-pattern"></a>
+<a name="index-atomic_005fsubmode-instruction-pattern"></a>
+<a name="index-atomic_005formode-instruction-pattern"></a>
+<a name="index-atomic_005fandmode-instruction-pattern"></a>
+<a name="index-atomic_005fxormode-instruction-pattern"></a>
+<a name="index-atomic_005fnandmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_add<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_or<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_xor<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_nand<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory with memory
+model semantics. Operand 0 is the memory on which the atomic operation is
+performed. Operand 1 is the second operand to the binary operator.
+Operand 2 is the memory model to be used by the operation.
+</p>
+<p>If these patterns are not defined, attempts will be made to use legacy
+<code>sync</code> patterns, or equivalent patterns which return a result. If
+none of these are available a compare-and-swap loop will be used.
+</p>
+<a name="index-atomic_005ffetch_005faddmode-instruction-pattern"></a>
+<a name="index-atomic_005ffetch_005fsubmode-instruction-pattern"></a>
+<a name="index-atomic_005ffetch_005formode-instruction-pattern"></a>
+<a name="index-atomic_005ffetch_005fandmode-instruction-pattern"></a>
+<a name="index-atomic_005ffetch_005fxormode-instruction-pattern"></a>
+<a name="index-atomic_005ffetch_005fnandmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_fetch_add<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_fetch_sub<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_fetch_or<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_fetch_and<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_fetch_xor<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_fetch_nand<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory with memory
+model semantics, and return the original value. Operand 0 is an output
+operand which contains the value of the memory location before the
+operation was performed. Operand 1 is the memory on which the atomic
+operation is performed. Operand 2 is the second operand to the binary
+operator. Operand 3 is the memory model to be used by the operation.
+</p>
+<p>If these patterns are not defined, attempts will be made to use legacy
+<code>sync</code> patterns. If none of these are available a compare-and-swap
+loop will be used.
+</p>
+<a name="index-atomic_005fadd_005ffetchmode-instruction-pattern"></a>
+<a name="index-atomic_005fsub_005ffetchmode-instruction-pattern"></a>
+<a name="index-atomic_005for_005ffetchmode-instruction-pattern"></a>
+<a name="index-atomic_005fand_005ffetchmode-instruction-pattern"></a>
+<a name="index-atomic_005fxor_005ffetchmode-instruction-pattern"></a>
+<a name="index-atomic_005fnand_005ffetchmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_add_fetch<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_sub_fetch<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_or_fetch<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_and_fetch<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_xor_fetch<var>mode</var></samp>&rsquo;, &lsquo;<samp>atomic_nand_fetch<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory with memory
+model semantics and return the result after the operation is performed.
+Operand 0 is an output operand which contains the value after the
+operation. Operand 1 is the memory on which the atomic operation is
+performed. Operand 2 is the second operand to the binary operator.
+Operand 3 is the memory model to be used by the operation.
+</p>
+<p>If these patterns are not defined, attempts will be made to use legacy
+<code>sync</code> patterns, or equivalent patterns which return the result before
+the operation followed by the arithmetic operation required to produce the
+result. If none of these are available a compare-and-swap loop will be
+used.
+</p>
+<a name="index-atomic_005ftest_005fand_005fset-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_test_and_set</samp>&rsquo;</dt>
+<dd><p>This pattern emits code for <code>__builtin_atomic_test_and_set</code>.
+Operand 0 is an output operand which is set to true if the previous
+previous contents of the byte was &quot;set&quot;, and false otherwise. Operand 1
+is the <code>QImode</code> memory to be modified. Operand 2 is the memory
+model to be used.
+</p>
+<p>The specific value that defines &quot;set&quot; is implementation defined, and
+is normally based on what is performed by the native atomic test and set
+instruction.
+</p>
+<a name="index-atomic_005fbit_005ftest_005fand_005fsetmode-instruction-pattern"></a>
+<a name="index-atomic_005fbit_005ftest_005fand_005fcomplementmode-instruction-pattern"></a>
+<a name="index-atomic_005fbit_005ftest_005fand_005fresetmode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_bit_test_and_set<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_bit_test_and_complement<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_bit_test_and_reset<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic bitwise operation on memory with memory
+model semantics, and return the original value of the specified bit.
+Operand 0 is an output operand which contains the value of the specified bit
+from the memory location before the operation was performed. Operand 1 is the
+memory on which the atomic operation is performed. Operand 2 is the bit within
+the operand, starting with least significant bit. Operand 3 is the memory model
+to be used by the operation. Operand 4 is a flag - it is <code>const1_rtx</code>
+if operand 0 should contain the original value of the specified bit in the
+least significant bit of the operand, and <code>const0_rtx</code> if the bit should
+be in its original position in the operand.
+<code>atomic_bit_test_and_set<var>mode</var></code> atomically sets the specified bit after
+remembering its original value, <code>atomic_bit_test_and_complement<var>mode</var></code>
+inverts the specified bit and <code>atomic_bit_test_and_reset<var>mode</var></code> clears
+the specified bit.
+</p>
+<p>If these patterns are not defined, attempts will be made to use
+<code>atomic_fetch_or<var>mode</var></code>, <code>atomic_fetch_xor<var>mode</var></code> or
+<code>atomic_fetch_and<var>mode</var></code> instruction patterns, or their <code>sync</code>
+counterparts. If none of these are available a compare-and-swap
+loop will be used.
+</p>
+<a name="index-atomic_005fadd_005ffetch_005fcmp_005f0mode-instruction-pattern"></a>
+<a name="index-atomic_005fsub_005ffetch_005fcmp_005f0mode-instruction-pattern"></a>
+<a name="index-atomic_005fand_005ffetch_005fcmp_005f0mode-instruction-pattern"></a>
+<a name="index-atomic_005for_005ffetch_005fcmp_005f0mode-instruction-pattern"></a>
+<a name="index-atomic_005fxor_005ffetch_005fcmp_005f0mode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>atomic_add_fetch_cmp_0<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_sub_fetch_cmp_0<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_and_fetch_cmp_0<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_or_fetch_cmp_0<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>atomic_xor_fetch_cmp_0<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code for an atomic operation on memory with memory
+model semantics if the fetch result is used only in a comparison against
+zero.
+Operand 0 is an output operand which contains a boolean result of comparison
+of the value after the operation against zero. Operand 1 is the memory on
+which the atomic operation is performed. Operand 2 is the second operand
+to the binary operator. Operand 3 is the memory model to be used by the
+operation. Operand 4 is an integer holding the comparison code, one of
+<code>EQ</code>, <code>NE</code>, <code>LT</code>, <code>GT</code>, <code>LE</code> or <code>GE</code>.
+</p>
+<p>If these patterns are not defined, attempts will be made to use separate
+atomic operation and fetch pattern followed by comparison of the result
+against zero.
+</p>
+<a name="index-mem_005fthread_005ffence-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>mem_thread_fence</samp>&rsquo;</dt>
+<dd><p>This pattern emits code required to implement a thread fence with
+memory model semantics. Operand 0 is the memory model to be used.
+</p>
+<p>For the <code>__ATOMIC_RELAXED</code> model no instructions need to be issued
+and this expansion is not invoked.
+</p>
+<p>The compiler always emits a compiler memory barrier regardless of what
+expanding this pattern produced.
+</p>
+<p>If this pattern is not defined, the compiler falls back to expanding the
+<code>memory_barrier</code> pattern, then to emitting <code>__sync_synchronize</code>
+library call, and finally to just placing a compiler memory barrier.
+</p>
+<a name="index-get_005fthread_005fpointermode-instruction-pattern"></a>
+<a name="index-set_005fthread_005fpointermode-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>get_thread_pointer<var>mode</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp>set_thread_pointer<var>mode</var></samp>&rsquo;</dt>
+<dd><p>These patterns emit code that reads/sets the TLS thread pointer. Currently,
+these are only needed if the target needs to support the
+<code>__builtin_thread_pointer</code> and <code>__builtin_set_thread_pointer</code>
+builtins.
+</p>
+<p>The get/set patterns have a single output/input operand respectively,
+with <var>mode</var> intended to be <code>Pmode</code>.
+</p>
+<a name="index-stack_005fprotect_005fcombined_005fset-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>stack_protect_combined_set</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, moves a <code>ptr_mode</code> value from an address
+whose declaration RTX is given in operand 1 to the memory in operand 0
+without leaving the value in a register afterward. If several
+instructions are needed by the target to perform the operation (eg. to
+load the address from a GOT entry then load the <code>ptr_mode</code> value
+and finally store it), it is the backend&rsquo;s responsibility to ensure no
+intermediate result gets spilled. This is to avoid leaking the value
+some place that an attacker might use to rewrite the stack guard slot
+after having clobbered it.
+</p>
+<p>If this pattern is not defined, then the address declaration is
+expanded first in the standard way and a <code>stack_protect_set</code>
+pattern is then generated to move the value from that address to the
+address in operand 0.
+</p>
+<a name="index-stack_005fprotect_005fset-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>stack_protect_set</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, moves a <code>ptr_mode</code> value from the valid
+memory location in operand 1 to the memory in operand 0 without leaving
+the value in a register afterward. This is to avoid leaking the value
+some place that an attacker might use to rewrite the stack guard slot
+after having clobbered it.
+</p>
+<p>Note: on targets where the addressing modes do not allow to load
+directly from stack guard address, the address is expanded in a standard
+way first which could cause some spills.
+</p>
+<p>If this pattern is not defined, then a plain move pattern is generated.
+</p>
+<a name="index-stack_005fprotect_005fcombined_005ftest-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>stack_protect_combined_test</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, compares a <code>ptr_mode</code> value from an
+address whose declaration RTX is given in operand 1 with the memory in
+operand 0 without leaving the value in a register afterward and
+branches to operand 2 if the values were equal. If several
+instructions are needed by the target to perform the operation (eg. to
+load the address from a GOT entry then load the <code>ptr_mode</code> value
+and finally store it), it is the backend&rsquo;s responsibility to ensure no
+intermediate result gets spilled. This is to avoid leaking the value
+some place that an attacker might use to rewrite the stack guard slot
+after having clobbered it.
+</p>
+<p>If this pattern is not defined, then the address declaration is
+expanded first in the standard way and a <code>stack_protect_test</code>
+pattern is then generated to compare the value from that address to the
+value at the memory in operand 0.
+</p>
+<a name="index-stack_005fprotect_005ftest-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>stack_protect_test</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, compares a <code>ptr_mode</code> value from the
+valid memory location in operand 1 with the memory in operand 0 without
+leaving the value in a register afterward and branches to operand 2 if
+the values were equal.
+</p>
+<p>If this pattern is not defined, then a plain compare pattern and
+conditional branch pattern is used.
+</p>
+<a name="index-clear_005fcache-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>clear_cache</samp>&rsquo;</dt>
+<dd><p>This pattern, if defined, flushes the instruction cache for a region of
+memory. The region is bounded to by the Pmode pointers in operand 0
+inclusive and operand 1 exclusive.
+</p>
+<p>If this pattern is not defined, a call to the library function
+<code>__clear_cache</code> is used.
+</p>
+<a name="index-spaceshipm3-instruction-pattern"></a>
+</dd>
+<dt>&lsquo;<samp>spaceship<var>m</var>3</samp>&rsquo;</dt>
+<dd><p>Initialize output operand 0 with mode of integer type to -1, 0, 1 or 2
+if operand 1 with mode <var>m</var> compares less than operand 2, equal to
+operand 2, greater than operand 2 or is unordered with operand 2.
+<var>m</var> should be a scalar floating point mode.
+</p>
+<p>This pattern is not allowed to <code>FAIL</code>.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pattern-Ordering.html#Pattern-Ordering" accesskey="n" rel="next">Pattern Ordering</a>, Previous: <a href="Constraints.html#Constraints" accesskey="p" rel="previous">Constraints</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Statement-Sequences.html b/share/doc/gccint/Statement-Sequences.html
new file mode 100644
index 0000000..ee61f21
--- /dev/null
+++ b/share/doc/gccint/Statement-Sequences.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Statement Sequences</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Statement Sequences">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Statement Sequences">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Statements.html#Statements" rel="up" title="Statements">
+<link href="Empty-Statements.html#Empty-Statements" rel="next" title="Empty Statements">
+<link href="Blocks.html#Blocks" rel="previous" title="Blocks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Statement-Sequences"></a>
+<div class="header">
+<p>
+Next: <a href="Empty-Statements.html#Empty-Statements" accesskey="n" rel="next">Empty Statements</a>, Previous: <a href="Blocks.html#Blocks" accesskey="p" rel="previous">Blocks</a>, Up: <a href="Statements.html#Statements" accesskey="u" rel="up">Statements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Statement-Sequences-1"></a>
+<h4 class="subsection">11.7.3 Statement Sequences</h4>
+<a name="index-Statement-Sequences"></a>
+
+<p>Multiple statements at the same nesting level are collected into
+a <code>STATEMENT_LIST</code>. Statement lists are modified and
+traversed using the interface in &lsquo;<samp>tree-iterator.h</samp>&rsquo;.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Statement-and-operand-traversals.html b/share/doc/gccint/Statement-and-operand-traversals.html
new file mode 100644
index 0000000..3fad537
--- /dev/null
+++ b/share/doc/gccint/Statement-and-operand-traversals.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Statement and operand traversals</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Statement and operand traversals">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Statement and operand traversals">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Tree-SSA.html#Tree-SSA" rel="next" title="Tree SSA">
+<link href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" rel="previous" title="Adding a new GIMPLE statement code">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Statement-and-operand-traversals"></a>
+<div class="header">
+<p>
+Previous: <a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" accesskey="p" rel="previous">Adding a new GIMPLE statement code</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Statement-and-operand-traversals-1"></a>
+<h3 class="section">12.12 Statement and operand traversals</h3>
+<a name="index-Statement-and-operand-traversals"></a>
+
+<p>There are two functions available for walking statements and
+sequences: <code>walk_gimple_stmt</code> and <code>walk_gimple_seq</code>,
+accordingly, and a third function for walking the operands in a
+statement: <code>walk_gimple_op</code>.
+</p>
+<dl>
+<dt><a name="index-walk_005fgimple_005fstmt"></a>GIMPLE function: <em>tree</em> <strong>walk_gimple_stmt</strong> <em>(gimple_stmt_iterator *gsi, walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)</em></dt>
+<dd><p>This function is used to walk the current statement in <code>GSI</code>,
+optionally using traversal state stored in <code>WI</code>. If <code>WI</code> is <code>NULL</code>, no
+state is kept during the traversal.
+</p>
+<p>The callback <code>CALLBACK_STMT</code> is called. If <code>CALLBACK_STMT</code> returns
+true, it means that the callback function has handled all the
+operands of the statement and it is not necessary to walk its
+operands.
+</p>
+<p>If <code>CALLBACK_STMT</code> is <code>NULL</code> or it returns false, <code>CALLBACK_OP</code> is
+called on each operand of the statement via <code>walk_gimple_op</code>. If
+<code>walk_gimple_op</code> returns non-<code>NULL</code> for any operand, the remaining
+operands are not scanned.
+</p>
+<p>The return value is that returned by the last call to
+<code>walk_gimple_op</code>, or <code>NULL_TREE</code> if no <code>CALLBACK_OP</code> is specified.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-walk_005fgimple_005fop"></a>GIMPLE function: <em>tree</em> <strong>walk_gimple_op</strong> <em>(gimple stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)</em></dt>
+<dd><p>Use this function to walk the operands of statement <code>STMT</code>. Every
+operand is walked via <code>walk_tree</code> with optional state information
+in <code>WI</code>.
+</p>
+<p><code>CALLBACK_OP</code> is called on each operand of <code>STMT</code> via <code>walk_tree</code>.
+Additional parameters to <code>walk_tree</code> must be stored in <code>WI</code>. For
+each operand <code>OP</code>, <code>walk_tree</code> is called as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">walk_tree (&amp;<code>OP</code>, <code>CALLBACK_OP</code>, <code>WI</code>, <code>PSET</code>)
+</pre></div>
+
+<p>If <code>CALLBACK_OP</code> returns non-<code>NULL</code> for an operand, the remaining
+operands are not scanned. The return value is that returned by
+the last call to <code>walk_tree</code>, or <code>NULL_TREE</code> if no <code>CALLBACK_OP</code> is
+specified.
+</p></dd></dl>
+
+
+<dl>
+<dt><a name="index-walk_005fgimple_005fseq"></a>GIMPLE function: <em>tree</em> <strong>walk_gimple_seq</strong> <em>(gimple_seq seq, walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)</em></dt>
+<dd><p>This function walks all the statements in the sequence <code>SEQ</code>
+calling <code>walk_gimple_stmt</code> on each one. <code>WI</code> is as in
+<code>walk_gimple_stmt</code>. If <code>walk_gimple_stmt</code> returns non-<code>NULL</code>, the walk
+is stopped and the value returned. Otherwise, all the statements
+are walked and <code>NULL_TREE</code> returned.
+</p></dd></dl>
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code" accesskey="p" rel="previous">Adding a new GIMPLE statement code</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Statements-for-C-and-C_002b_002b.html b/share/doc/gccint/Statements-for-C-and-C_002b_002b.html
new file mode 100644
index 0000000..ee1f6c0
--- /dev/null
+++ b/share/doc/gccint/Statements-for-C-and-C_002b_002b.html
@@ -0,0 +1,358 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Statements for C and C++</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Statements for C and C++">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Statements for C and C++">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="C_002b_002b-Expressions.html#C_002b_002b-Expressions" rel="next" title="C++ Expressions">
+<link href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" rel="previous" title="Functions for C++">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Statements-for-C-and-C_002b_002b"></a>
+<div class="header">
+<p>
+Next: <a href="C_002b_002b-Expressions.html#C_002b_002b-Expressions" accesskey="n" rel="next">C++ Expressions</a>, Previous: <a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" accesskey="p" rel="previous">Functions for C++</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Statements-for-C-and-C_002b_002b-1"></a>
+<h4 class="subsection">11.10.5 Statements for C and C++</h4>
+<a name="index-statements-1"></a>
+<a name="index-BREAK_005fSTMT"></a>
+<a name="index-CLEANUP_005fSTMT"></a>
+<a name="index-CLEANUP_005fDECL"></a>
+<a name="index-CLEANUP_005fEXPR"></a>
+<a name="index-CONTINUE_005fSTMT"></a>
+<a name="index-DECL_005fSTMT"></a>
+<a name="index-DECL_005fSTMT_005fDECL"></a>
+<a name="index-DO_005fSTMT"></a>
+<a name="index-DO_005fBODY"></a>
+<a name="index-DO_005fCOND"></a>
+<a name="index-EMPTY_005fCLASS_005fEXPR"></a>
+<a name="index-EXPR_005fSTMT"></a>
+<a name="index-EXPR_005fSTMT_005fEXPR"></a>
+<a name="index-FOR_005fSTMT"></a>
+<a name="index-FOR_005fINIT_005fSTMT"></a>
+<a name="index-FOR_005fCOND"></a>
+<a name="index-FOR_005fEXPR"></a>
+<a name="index-FOR_005fBODY"></a>
+<a name="index-HANDLER"></a>
+<a name="index-IF_005fSTMT"></a>
+<a name="index-IF_005fCOND"></a>
+<a name="index-THEN_005fCLAUSE"></a>
+<a name="index-ELSE_005fCLAUSE"></a>
+<a name="index-RETURN_005fSTMT"></a>
+<a name="index-RETURN_005fEXPR"></a>
+<a name="index-SUBOBJECT"></a>
+<a name="index-SUBOBJECT_005fCLEANUP"></a>
+<a name="index-SWITCH_005fSTMT"></a>
+<a name="index-SWITCH_005fCOND"></a>
+<a name="index-SWITCH_005fBODY"></a>
+<a name="index-TRY_005fBLOCK"></a>
+<a name="index-TRY_005fSTMTS"></a>
+<a name="index-TRY_005fHANDLERS"></a>
+<a name="index-HANDLER_005fPARMS"></a>
+<a name="index-HANDLER_005fBODY"></a>
+<a name="index-USING_005fSTMT"></a>
+<a name="index-WHILE_005fSTMT"></a>
+<a name="index-WHILE_005fBODY"></a>
+<a name="index-WHILE_005fCOND"></a>
+
+<p>A function that has a definition in the current translation unit has
+a non-<code>NULL</code> <code>DECL_INITIAL</code>. However, back ends should not make
+use of the particular value given by <code>DECL_INITIAL</code>.
+</p>
+<p>The <code>DECL_SAVED_TREE</code> gives the complete body of the
+function.
+</p>
+<p>There are tree nodes corresponding to all of the source-level
+statement constructs, used within the C and C++ frontends. These are
+enumerated here, together with a list of the various macros that can
+be used to obtain information about them. There are a few macros that
+can be used with all statements:
+</p>
+<dl compact="compact">
+<dt><code>STMT_IS_FULL_EXPR_P</code>
+<a name="index-STMT_005fIS_005fFULL_005fEXPR_005fP"></a>
+</dt>
+<dd><p>In C++, statements normally constitute &ldquo;full expressions&rdquo;; temporaries
+created during a statement are destroyed when the statement is complete.
+However, G++ sometimes represents expressions by statements; these
+statements will not have <code>STMT_IS_FULL_EXPR_P</code> set. Temporaries
+created during such statements should be destroyed when the innermost
+enclosing statement with <code>STMT_IS_FULL_EXPR_P</code> set is exited.
+</p>
+</dd>
+</dl>
+
+<p>Here is the list of the various statement nodes, and the macros used to
+access them. This documentation describes the use of these nodes in
+non-template functions (including instantiations of template functions).
+In template functions, the same nodes are used, but sometimes in
+slightly different ways.
+</p>
+<p>Many of the statements have substatements. For example, a <code>while</code>
+loop has a body, which is itself a statement. If the substatement
+is <code>NULL_TREE</code>, it is considered equivalent to a statement
+consisting of a single <code>;</code>, i.e., an expression statement in which
+the expression has been omitted. A substatement may in fact be a list
+of statements, connected via their <code>TREE_CHAIN</code>s. So, you should
+always process the statement tree by looping over substatements, like
+this:
+</p><div class="smallexample">
+<pre class="smallexample">void process_stmt (stmt)
+ tree stmt;
+{
+ while (stmt)
+ {
+ switch (TREE_CODE (stmt))
+ {
+ case IF_STMT:
+ process_stmt (THEN_CLAUSE (stmt));
+ /* <span class="roman">More processing here.</span> */
+ break;
+
+ &hellip;
+ }
+
+ stmt = TREE_CHAIN (stmt);
+ }
+}
+</pre></div>
+<p>In other words, while the <code>then</code> clause of an <code>if</code> statement
+in C++ can be only one statement (although that one statement may be a
+compound statement), the intermediate representation sometimes uses
+several statements chained together.
+</p>
+<dl compact="compact">
+<dt><code>BREAK_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>break</code> statement. There are no additional
+fields.
+</p>
+</dd>
+<dt><code>CLEANUP_STMT</code></dt>
+<dd>
+<p>Used to represent an action that should take place upon exit from the
+enclosing scope. Typically, these actions are calls to destructors for
+local objects, but back ends cannot rely on this fact. If these nodes
+are in fact representing such destructors, <code>CLEANUP_DECL</code> will be
+the <code>VAR_DECL</code> destroyed. Otherwise, <code>CLEANUP_DECL</code> will be
+<code>NULL_TREE</code>. In any case, the <code>CLEANUP_EXPR</code> is the
+expression to execute. The cleanups executed on exit from a scope
+should be run in the reverse order of the order in which the associated
+<code>CLEANUP_STMT</code>s were encountered.
+</p>
+</dd>
+<dt><code>CONTINUE_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>continue</code> statement. There are no additional
+fields.
+</p>
+</dd>
+<dt><code>CTOR_STMT</code></dt>
+<dd>
+<p>Used to mark the beginning (if <code>CTOR_BEGIN_P</code> holds) or end (if
+<code>CTOR_END_P</code> holds of the main body of a constructor. See also
+<code>SUBOBJECT</code> for more information on how to use these nodes.
+</p>
+</dd>
+<dt><code>DO_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>do</code> loop. The body of the loop is given by
+<code>DO_BODY</code> while the termination condition for the loop is given by
+<code>DO_COND</code>. The condition for a <code>do</code>-statement is always an
+expression.
+</p>
+</dd>
+<dt><code>EMPTY_CLASS_EXPR</code></dt>
+<dd>
+<p>Used to represent a temporary object of a class with no data whose
+address is never taken. (All such objects are interchangeable.) The
+<code>TREE_TYPE</code> represents the type of the object.
+</p>
+</dd>
+<dt><code>EXPR_STMT</code></dt>
+<dd>
+<p>Used to represent an expression statement. Use <code>EXPR_STMT_EXPR</code> to
+obtain the expression.
+</p>
+</dd>
+<dt><code>FOR_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>for</code> statement. The <code>FOR_INIT_STMT</code> is
+the initialization statement for the loop. The <code>FOR_COND</code> is the
+termination condition. The <code>FOR_EXPR</code> is the expression executed
+right before the <code>FOR_COND</code> on each loop iteration; often, this
+expression increments a counter. The body of the loop is given by
+<code>FOR_BODY</code>. <code>FOR_SCOPE</code> holds the scope of the <code>for</code>
+statement (used in the C++ front end only). Note that
+<code>FOR_INIT_STMT</code> and <code>FOR_BODY</code> return statements, while
+<code>FOR_COND</code> and <code>FOR_EXPR</code> return expressions.
+</p>
+</dd>
+<dt><code>HANDLER</code></dt>
+<dd>
+<p>Used to represent a C++ <code>catch</code> block. The <code>HANDLER_TYPE</code>
+is the type of exception that will be caught by this handler; it is
+equal (by pointer equality) to <code>NULL</code> if this handler is for all
+types. <code>HANDLER_PARMS</code> is the <code>DECL_STMT</code> for the catch
+parameter, and <code>HANDLER_BODY</code> is the code for the block itself.
+</p>
+</dd>
+<dt><code>IF_STMT</code></dt>
+<dd>
+<p>Used to represent an <code>if</code> statement. The <code>IF_COND</code> is the
+expression.
+</p>
+<p>If the condition is a <code>TREE_LIST</code>, then the <code>TREE_PURPOSE</code> is
+a statement (usually a <code>DECL_STMT</code>). Each time the condition is
+evaluated, the statement should be executed. Then, the
+<code>TREE_VALUE</code> should be used as the conditional expression itself.
+This representation is used to handle C++ code like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (int i = 7) &hellip;
+</pre></div>
+
+<p>where there is a new local variable (or variables) declared within the
+condition.
+</p>
+<p>The <code>THEN_CLAUSE</code> represents the statement given by the <code>then</code>
+condition, while the <code>ELSE_CLAUSE</code> represents the statement given
+by the <code>else</code> condition.
+</p>
+<p>C++ distinguishes between this and <code>COND_EXPR</code> for handling templates.
+</p>
+</dd>
+<dt><code>SUBOBJECT</code></dt>
+<dd>
+<p>In a constructor, these nodes are used to mark the point at which a
+subobject of <code>this</code> is fully constructed. If, after this point, an
+exception is thrown before a <code>CTOR_STMT</code> with <code>CTOR_END_P</code> set
+is encountered, the <code>SUBOBJECT_CLEANUP</code> must be executed. The
+cleanups must be executed in the reverse order in which they appear.
+</p>
+</dd>
+<dt><code>SWITCH_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>switch</code> statement. The <code>SWITCH_STMT_COND</code>
+is the expression on which the switch is occurring. See the documentation
+for an <code>IF_STMT</code> for more information on the representation used
+for the condition. The <code>SWITCH_STMT_BODY</code> is the body of the switch
+statement. The <code>SWITCH_STMT_TYPE</code> is the original type of switch
+expression as given in the source, before any compiler conversions.
+The <code>SWITCH_STMT_SCOPE</code> is the statement scope (used in the
+C++ front end only).
+</p>
+<p>There are also two boolean flags used with <code>SWITCH_STMT</code>.
+<code>SWITCH_STMT_ALL_CASES_P</code> is true if the switch includes a default label
+or the case label ranges cover all possible values of the condition
+expression. <code>SWITCH_STMT_NO_BREAK_P</code> is true if there are no
+<code>break</code> statements in the switch.
+</p>
+</dd>
+<dt><code>TRY_BLOCK</code></dt>
+<dd><p>Used to represent a <code>try</code> block. The body of the try block is
+given by <code>TRY_STMTS</code>. Each of the catch blocks is a <code>HANDLER</code>
+node. The first handler is given by <code>TRY_HANDLERS</code>. Subsequent
+handlers are obtained by following the <code>TREE_CHAIN</code> link from one
+handler to the next. The body of the handler is given by
+<code>HANDLER_BODY</code>.
+</p>
+<p>If <code>CLEANUP_P</code> holds of the <code>TRY_BLOCK</code>, then the
+<code>TRY_HANDLERS</code> will not be a <code>HANDLER</code> node. Instead, it will
+be an expression that should be executed if an exception is thrown in
+the try block. It must rethrow the exception after executing that code.
+And, if an exception is thrown while the expression is executing,
+<code>terminate</code> must be called.
+</p>
+</dd>
+<dt><code>USING_STMT</code></dt>
+<dd><p>Used to represent a <code>using</code> directive. The namespace is given by
+<code>USING_STMT_NAMESPACE</code>, which will be a NAMESPACE_DECL. This node
+is needed inside template functions, to implement using directives
+during instantiation.
+</p>
+</dd>
+<dt><code>WHILE_STMT</code></dt>
+<dd>
+<p>Used to represent a <code>while</code> loop. The <code>WHILE_COND</code> is the
+termination condition for the loop. See the documentation for an
+<code>IF_STMT</code> for more information on the representation used for the
+condition.
+</p>
+<p>The <code>WHILE_BODY</code> is the body of the loop.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="C_002b_002b-Expressions.html#C_002b_002b-Expressions" accesskey="n" rel="next">C++ Expressions</a>, Previous: <a href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b" accesskey="p" rel="previous">Functions for C++</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Statements.html b/share/doc/gccint/Statements.html
new file mode 100644
index 0000000..fb6ac6f
--- /dev/null
+++ b/share/doc/gccint/Statements.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Statements</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Statements">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Statements">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Basic-Statements.html#Basic-Statements" rel="next" title="Basic Statements">
+<link href="Vectors.html#Vectors" rel="previous" title="Vectors">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Statements"></a>
+<div class="header">
+<p>
+Next: <a href="Functions.html#Functions" accesskey="n" rel="next">Functions</a>, Previous: <a href="Expression-trees.html#Expression-trees" accesskey="p" rel="previous">Expression trees</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Statements-1"></a>
+<h3 class="section">11.7 Statements</h3>
+<a name="index-Statements"></a>
+
+<p>Most statements in GIMPLE are assignment statements, represented by
+<code>GIMPLE_ASSIGN</code>. No other C expressions can appear at statement level;
+a reference to a volatile object is converted into a
+<code>GIMPLE_ASSIGN</code>.
+</p>
+<p>There are also several varieties of complex statements.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Basic-Statements.html#Basic-Statements" accesskey="1">Basic Statements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Blocks.html#Blocks" accesskey="2">Blocks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Statement-Sequences.html#Statement-Sequences" accesskey="3">Statement Sequences</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Empty-Statements.html#Empty-Statements" accesskey="4">Empty Statements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Jumps.html#Jumps" accesskey="5">Jumps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Cleanups.html#Cleanups" accesskey="6">Cleanups</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="OpenMP.html#OpenMP" accesskey="7">OpenMP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="OpenACC.html#OpenACC" accesskey="8">OpenACC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Static-Analyzer.html b/share/doc/gccint/Static-Analyzer.html
new file mode 100644
index 0000000..13fad21
--- /dev/null
+++ b/share/doc/gccint/Static-Analyzer.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Static Analyzer</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Static Analyzer">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Static Analyzer">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Analyzer-Internals.html#Analyzer-Internals" rel="next" title="Analyzer Internals">
+<link href="The-Language.html#The-Language" rel="previous" title="The Language">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Static-Analyzer"></a>
+<div class="header">
+<p>
+Next: <a href="User-Experience-Guidelines.html#User-Experience-Guidelines" accesskey="n" rel="next">User Experience Guidelines</a>, Previous: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="p" rel="previous">Match and Simplify</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Static-Analyzer-1"></a>
+<h2 class="chapter">27 Static Analyzer</h2>
+<a name="index-analyzer"></a>
+<a name="index-static-analysis"></a>
+<a name="index-static-analyzer"></a>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Analyzer-Internals.html#Analyzer-Internals" accesskey="1">Analyzer Internals</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Analyzer Internals
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Debugging-the-Analyzer.html#Debugging-the-Analyzer" accesskey="2">Debugging the Analyzer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Useful debugging tips
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Storage-Layout.html b/share/doc/gccint/Storage-Layout.html
new file mode 100644
index 0000000..d94446b
--- /dev/null
+++ b/share/doc/gccint/Storage-Layout.html
@@ -0,0 +1,795 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Storage Layout</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Storage Layout">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Storage Layout">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Type-Layout.html#Type-Layout" rel="next" title="Type Layout">
+<link href="Per_002dFunction-Data.html#Per_002dFunction-Data" rel="previous" title="Per-Function Data">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Storage-Layout"></a>
+<div class="header">
+<p>
+Next: <a href="Type-Layout.html#Type-Layout" accesskey="n" rel="next">Type Layout</a>, Previous: <a href="Per_002dFunction-Data.html#Per_002dFunction-Data" accesskey="p" rel="previous">Per-Function Data</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Storage-Layout-1"></a>
+<h3 class="section">18.5 Storage Layout</h3>
+<a name="index-storage-layout"></a>
+
+<p>Note that the definitions of the macros in this table which are sizes or
+alignments measured in bits do not need to be constant. They can be C
+expressions that refer to static variables, such as the <code>target_flags</code>.
+See <a href="Run_002dtime-Target.html#Run_002dtime-Target">Run-time Target</a>.
+</p>
+<dl>
+<dt><a name="index-BITS_005fBIG_005fENDIAN"></a>Macro: <strong>BITS_BIG_ENDIAN</strong></dt>
+<dd><p>Define this macro to have the value 1 if the most significant bit in a
+byte has the lowest number; otherwise define it to have the value zero.
+This means that bit-field instructions count from the most significant
+bit. If the machine has no bit-field instructions, then this must still
+be defined, but it doesn&rsquo;t matter which value it is defined to. This
+macro need not be a constant.
+</p>
+<p>This macro does not affect the way structure fields are packed into
+bytes or words; that is controlled by <code>BYTES_BIG_ENDIAN</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BYTES_005fBIG_005fENDIAN"></a>Macro: <strong>BYTES_BIG_ENDIAN</strong></dt>
+<dd><p>Define this macro to have the value 1 if the most significant byte in a
+word has the lowest number. This macro need not be a constant.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WORDS_005fBIG_005fENDIAN"></a>Macro: <strong>WORDS_BIG_ENDIAN</strong></dt>
+<dd><p>Define this macro to have the value 1 if, in a multiword object, the
+most significant word has the lowest number. This applies to both
+memory locations and registers; see <code>REG_WORDS_BIG_ENDIAN</code> if the
+order of words in memory is not the same as the order in registers. This
+macro need not be a constant.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REG_005fWORDS_005fBIG_005fENDIAN"></a>Macro: <strong>REG_WORDS_BIG_ENDIAN</strong></dt>
+<dd><p>On some machines, the order of words in a multiword object differs between
+registers in memory. In such a situation, define this macro to describe
+the order of words in a register. The macro <code>WORDS_BIG_ENDIAN</code> controls
+the order of words in memory.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FLOAT_005fWORDS_005fBIG_005fENDIAN"></a>Macro: <strong>FLOAT_WORDS_BIG_ENDIAN</strong></dt>
+<dd><p>Define this macro to have the value 1 if <code>DFmode</code>, <code>XFmode</code> or
+<code>TFmode</code> floating point numbers are stored in memory with the word
+containing the sign bit at the lowest address; otherwise define it to
+have the value 0. This macro need not be a constant.
+</p>
+<p>You need not define this macro if the ordering is the same as for
+multi-word integers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BITS_005fPER_005fWORD"></a>Macro: <strong>BITS_PER_WORD</strong></dt>
+<dd><p>Number of bits in a word. If you do not define this macro, the default
+is <code>BITS_PER_UNIT * UNITS_PER_WORD</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fBITS_005fPER_005fWORD"></a>Macro: <strong>MAX_BITS_PER_WORD</strong></dt>
+<dd><p>Maximum number of bits in a word. If this is undefined, the default is
+<code>BITS_PER_WORD</code>. Otherwise, it is the constant value that is the
+largest value that <code>BITS_PER_WORD</code> can have at run-time.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-UNITS_005fPER_005fWORD"></a>Macro: <strong>UNITS_PER_WORD</strong></dt>
+<dd><p>Number of storage units in a word; normally the size of a general-purpose
+register, a power of two from 1 or 8.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MIN_005fUNITS_005fPER_005fWORD"></a>Macro: <strong>MIN_UNITS_PER_WORD</strong></dt>
+<dd><p>Minimum number of units in a word. If this is undefined, the default is
+<code>UNITS_PER_WORD</code>. Otherwise, it is the constant value that is the
+smallest value that <code>UNITS_PER_WORD</code> can have at run-time.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-POINTER_005fSIZE"></a>Macro: <strong>POINTER_SIZE</strong></dt>
+<dd><p>Width of a pointer, in bits. You must specify a value no wider than the
+width of <code>Pmode</code>. If it is not equal to the width of <code>Pmode</code>,
+you must define <code>POINTERS_EXTEND_UNSIGNED</code>. If you do not specify
+a value the default is <code>BITS_PER_WORD</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-POINTERS_005fEXTEND_005fUNSIGNED"></a>Macro: <strong>POINTERS_EXTEND_UNSIGNED</strong></dt>
+<dd><p>A C expression that determines how pointers should be extended from
+<code>ptr_mode</code> to either <code>Pmode</code> or <code>word_mode</code>. It is
+greater than zero if pointers should be zero-extended, zero if they
+should be sign-extended, and negative if some other sort of conversion
+is needed. In the last case, the extension is done by the target&rsquo;s
+<code>ptr_extend</code> instruction.
+</p>
+<p>You need not define this macro if the <code>ptr_mode</code>, <code>Pmode</code>
+and <code>word_mode</code> are all the same width.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PROMOTE_005fMODE"></a>Macro: <strong>PROMOTE_MODE</strong> <em>(<var>m</var>, <var>unsignedp</var>, <var>type</var>)</em></dt>
+<dd><p>A macro to update <var>m</var> and <var>unsignedp</var> when an object whose type
+is <var>type</var> and which has the specified mode and signedness is to be
+stored in a register. This macro is only called when <var>type</var> is a
+scalar type.
+</p>
+<p>On most RISC machines, which only have operations that operate on a full
+register, define this macro to set <var>m</var> to <code>word_mode</code> if
+<var>m</var> is an integer mode narrower than <code>BITS_PER_WORD</code>. In most
+cases, only integer modes should be widened because wider-precision
+floating-point operations are usually more expensive than their narrower
+counterparts.
+</p>
+<p>For most machines, the macro definition does not change <var>unsignedp</var>.
+However, some machines, have instructions that preferentially handle
+either signed or unsigned quantities of certain modes. For example, on
+the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
+sign-extend the result to 64 bits. On such machines, set
+<var>unsignedp</var> according to which kind of extension is more efficient.
+</p>
+<p>Do not define this macro if it would never modify <var>m</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fC_005fEXCESS_005fPRECISION"></a>Target Hook: <em>enum flt_eval_method</em> <strong>TARGET_C_EXCESS_PRECISION</strong> <em>(enum excess_precision_type <var>type</var>)</em></dt>
+<dd><p>Return a value, with the same meaning as the C99 macro
+<code>FLT_EVAL_METHOD</code> that describes which excess precision should be
+applied. <var>type</var> is either <code>EXCESS_PRECISION_TYPE_IMPLICIT</code>,
+<code>EXCESS_PRECISION_TYPE_FAST</code>,
+<code>EXCESS_PRECISION_TYPE_STANDARD</code>, or
+<code>EXCESS_PRECISION_TYPE_FLOAT16</code>. For
+<code>EXCESS_PRECISION_TYPE_IMPLICIT</code>, the target should return which
+precision and range operations will be implictly evaluated in regardless
+of the excess precision explicitly added. For
+<code>EXCESS_PRECISION_TYPE_STANDARD</code>,
+<code>EXCESS_PRECISION_TYPE_FLOAT16</code>, and
+<code>EXCESS_PRECISION_TYPE_FAST</code>, the target should return the
+explicit excess precision that should be added depending on the
+value set for <samp>-fexcess-precision=<span class="roman">[</span>standard<span class="roman">|</span>fast<span class="roman">|</span>16<span class="roman">]</span></samp>.
+Note that unpredictable explicit excess precision does not make sense,
+so a target should never return <code>FLT_EVAL_METHOD_UNPREDICTABLE</code>
+when <var>type</var> is <code>EXCESS_PRECISION_TYPE_STANDARD</code>,
+<code>EXCESS_PRECISION_TYPE_FLOAT16</code> or
+<code>EXCESS_PRECISION_TYPE_FAST</code>.
+</p></dd></dl>
+<p>Return a value, with the same meaning as the C99 macro
+<code>FLT_EVAL_METHOD</code> that describes which excess precision should be
+applied.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fPROMOTE_005fFUNCTION_005fMODE"></a>Target Hook: <em>machine_mode</em> <strong>TARGET_PROMOTE_FUNCTION_MODE</strong> <em>(const_tree <var>type</var>, machine_mode <var>mode</var>, int *<var>punsignedp</var>, const_tree <var>funtype</var>, int <var>for_return</var>)</em></dt>
+<dd><p>Like <code>PROMOTE_MODE</code>, but it is applied to outgoing function arguments or
+function return values. The target hook should return the new mode
+and possibly change <code>*<var>punsignedp</var></code> if the promotion should
+change signedness. This function is called only for scalar <em>or
+pointer</em> types.
+</p>
+<p><var>for_return</var> allows to distinguish the promotion of arguments and
+return values. If it is <code>1</code>, a return value is being promoted and
+<code>TARGET_FUNCTION_VALUE</code> must perform the same promotions done here.
+If it is <code>2</code>, the returned mode should be that of the register in
+which an incoming parameter is copied, or the outgoing result is computed;
+then the hook should return the same mode as <code>promote_mode</code>, though
+the signedness may be different.
+</p>
+<p><var>type</var> can be NULL when promoting function arguments of libcalls.
+</p>
+<p>The default is to not promote arguments and return values. You can
+also define the hook to <code>default_promote_function_mode_always_promote</code>
+if you would like to apply the same rules given by <code>PROMOTE_MODE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PARM_005fBOUNDARY"></a>Macro: <strong>PARM_BOUNDARY</strong></dt>
+<dd><p>Normal alignment required for function parameters on the stack, in
+bits. All stack parameters receive at least this much alignment
+regardless of data type. On most machines, this is the same as the
+size of an integer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fBOUNDARY"></a>Macro: <strong>STACK_BOUNDARY</strong></dt>
+<dd><p>Define this macro to the minimum alignment enforced by hardware for the
+stack pointer on this machine. The definition is a C expression for the
+desired alignment (measured in bits). This value is used as a default
+if <code>PREFERRED_STACK_BOUNDARY</code> is not defined. On most machines,
+this should be the same as <code>PARM_BOUNDARY</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PREFERRED_005fSTACK_005fBOUNDARY"></a>Macro: <strong>PREFERRED_STACK_BOUNDARY</strong></dt>
+<dd><p>Define this macro if you wish to preserve a certain alignment for the
+stack pointer, greater than what the hardware enforces. The definition
+is a C expression for the desired alignment (measured in bits). This
+macro must evaluate to a value equal to or larger than
+<code>STACK_BOUNDARY</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INCOMING_005fSTACK_005fBOUNDARY"></a>Macro: <strong>INCOMING_STACK_BOUNDARY</strong></dt>
+<dd><p>Define this macro if the incoming stack boundary may be different
+from <code>PREFERRED_STACK_BOUNDARY</code>. This macro must evaluate
+to a value equal to or larger than <code>STACK_BOUNDARY</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FUNCTION_005fBOUNDARY"></a>Macro: <strong>FUNCTION_BOUNDARY</strong></dt>
+<dd><p>Alignment required for a function entry point, in bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BIGGEST_005fALIGNMENT"></a>Macro: <strong>BIGGEST_ALIGNMENT</strong></dt>
+<dd><p>Biggest alignment that any data type can require on this machine, in
+bits. Note that this is not the biggest alignment that is supported,
+just the biggest alignment that, when violated, may cause a fault.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fABSOLUTE_005fBIGGEST_005fALIGNMENT"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_ABSOLUTE_BIGGEST_ALIGNMENT</strong></dt>
+<dd><p>If defined, this target hook specifies the absolute biggest alignment
+that a type or variable can have on this machine, otherwise,
+<code>BIGGEST_ALIGNMENT</code> is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MALLOC_005fABI_005fALIGNMENT"></a>Macro: <strong>MALLOC_ABI_ALIGNMENT</strong></dt>
+<dd><p>Alignment, in bits, a C conformant malloc implementation has to
+provide. If not defined, the default value is <code>BITS_PER_WORD</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ATTRIBUTE_005fALIGNED_005fVALUE"></a>Macro: <strong>ATTRIBUTE_ALIGNED_VALUE</strong></dt>
+<dd><p>Alignment used by the <code>__attribute__ ((aligned))</code> construct. If
+not defined, the default value is <code>BIGGEST_ALIGNMENT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MINIMUM_005fATOMIC_005fALIGNMENT"></a>Macro: <strong>MINIMUM_ATOMIC_ALIGNMENT</strong></dt>
+<dd><p>If defined, the smallest alignment, in bits, that can be given to an
+object that can be referenced in one operation, without disturbing any
+nearby object. Normally, this is <code>BITS_PER_UNIT</code>, but may be larger
+on machines that don&rsquo;t have byte or half-word store operations.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BIGGEST_005fFIELD_005fALIGNMENT"></a>Macro: <strong>BIGGEST_FIELD_ALIGNMENT</strong></dt>
+<dd><p>Biggest alignment that any structure or union field can require on this
+machine, in bits. If defined, this overrides <code>BIGGEST_ALIGNMENT</code> for
+structure and union fields only, unless the field alignment has been set
+by the <code>__attribute__ ((aligned (<var>n</var>)))</code> construct.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ADJUST_005fFIELD_005fALIGN"></a>Macro: <strong>ADJUST_FIELD_ALIGN</strong> <em>(<var>field</var>, <var>type</var>, <var>computed</var>)</em></dt>
+<dd><p>An expression for the alignment of a structure field <var>field</var> of
+type <var>type</var> if the alignment computed in the usual way (including
+applying of <code>BIGGEST_ALIGNMENT</code> and <code>BIGGEST_FIELD_ALIGNMENT</code> to the
+alignment) is <var>computed</var>. It overrides alignment only if the
+field alignment has not been set by the
+<code>__attribute__ ((aligned (<var>n</var>)))</code> construct. Note that <var>field</var>
+may be <code>NULL_TREE</code> in case we just query for the minimum alignment
+of a field of type <var>type</var> in structure context.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fSTACK_005fALIGNMENT"></a>Macro: <strong>MAX_STACK_ALIGNMENT</strong></dt>
+<dd><p>Biggest stack alignment guaranteed by the backend. Use this macro
+to specify the maximum alignment of a variable on stack.
+</p>
+<p>If not defined, the default value is <code>STACK_BOUNDARY</code>.
+</p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fOFILE_005fALIGNMENT"></a>Macro: <strong>MAX_OFILE_ALIGNMENT</strong></dt>
+<dd><p>Biggest alignment supported by the object file format of this machine.
+Use this macro to limit the alignment which can be specified using the
+<code>__attribute__ ((aligned (<var>n</var>)))</code> construct for functions and
+objects with static storage duration. The alignment of automatic
+objects may exceed the object file format maximum up to the maximum
+supported by GCC. If not defined, the default value is
+<code>BIGGEST_ALIGNMENT</code>.
+</p>
+<p>On systems that use ELF, the default (in <samp>config/elfos.h</samp>) is
+the largest supported 32-bit ELF section alignment representable on
+a 32-bit host e.g. &lsquo;<samp>(((uint64_t) 1 &lt;&lt; 28) * 8)</samp>&rsquo;.
+On 32-bit ELF the largest supported section alignment in bits is
+&lsquo;<samp>(0x80000000 * 8)</samp>&rsquo;, but this is not representable on 32-bit hosts.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLOWER_005fLOCAL_005fDECL_005fALIGNMENT"></a>Target Hook: <em>void</em> <strong>TARGET_LOWER_LOCAL_DECL_ALIGNMENT</strong> <em>(tree <var>decl</var>)</em></dt>
+<dd><p>Define this hook to lower alignment of local, parm or result
+decl &lsquo;<samp>(<var>decl</var>)</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTATIC_005fRTX_005fALIGNMENT"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_STATIC_RTX_ALIGNMENT</strong> <em>(machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook returns the preferred alignment in bits for a
+statically-allocated rtx, such as a constant pool entry. <var>mode</var>
+is the mode of the rtx. The default implementation returns
+&lsquo;<samp>GET_MODE_ALIGNMENT (<var>mode</var>)</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DATA_005fALIGNMENT"></a>Macro: <strong>DATA_ALIGNMENT</strong> <em>(<var>type</var>, <var>basic-align</var>)</em></dt>
+<dd><p>If defined, a C expression to compute the alignment for a variable in
+the static store. <var>type</var> is the data type, and <var>basic-align</var> is
+the alignment that the object would ordinarily have. The value of this
+macro is used instead of that alignment to align the object.
+</p>
+<p>If this macro is not defined, then <var>basic-align</var> is used.
+</p>
+<a name="index-strcpy"></a>
+<p>One use of this macro is to increase alignment of medium-size data to
+make it all fit in fewer cache lines. Another is to cause character
+arrays to be word-aligned so that <code>strcpy</code> calls that copy
+constants to character arrays can be done inline.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DATA_005fABI_005fALIGNMENT"></a>Macro: <strong>DATA_ABI_ALIGNMENT</strong> <em>(<var>type</var>, <var>basic-align</var>)</em></dt>
+<dd><p>Similar to <code>DATA_ALIGNMENT</code>, but for the cases where the ABI mandates
+some alignment increase, instead of optimization only purposes. E.g.&nbsp;AMD x86-64 psABI says that variables with array type larger than 15 bytes
+must be aligned to 16 byte boundaries.
+</p>
+<p>If this macro is not defined, then <var>basic-align</var> is used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCONSTANT_005fALIGNMENT"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_CONSTANT_ALIGNMENT</strong> <em>(const_tree <var>constant</var>, HOST_WIDE_INT <var>basic_align</var>)</em></dt>
+<dd><p>This hook returns the alignment in bits of a constant that is being
+placed in memory. <var>constant</var> is the constant and <var>basic_align</var>
+is the alignment that the object would ordinarily have.
+</p>
+<p>The default definition just returns <var>basic_align</var>.
+</p>
+<p>The typical use of this hook is to increase alignment for string
+constants to be word aligned so that <code>strcpy</code> calls that copy
+constants can be done inline. The function
+<code>constant_alignment_word_strings</code> provides such a definition.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOCAL_005fALIGNMENT"></a>Macro: <strong>LOCAL_ALIGNMENT</strong> <em>(<var>type</var>, <var>basic-align</var>)</em></dt>
+<dd><p>If defined, a C expression to compute the alignment for a variable in
+the local store. <var>type</var> is the data type, and <var>basic-align</var> is
+the alignment that the object would ordinarily have. The value of this
+macro is used instead of that alignment to align the object.
+</p>
+<p>If this macro is not defined, then <var>basic-align</var> is used.
+</p>
+<p>One use of this macro is to increase alignment of medium-size data to
+make it all fit in fewer cache lines.
+</p>
+<p>If the value of this macro has a type, it should be an unsigned type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVECTOR_005fALIGNMENT"></a>Target Hook: <em>HOST_WIDE_INT</em> <strong>TARGET_VECTOR_ALIGNMENT</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>This hook can be used to define the alignment for a vector of type
+<var>type</var>, in order to comply with a platform ABI. The default is to
+require natural alignment for vector types. The alignment returned by
+this hook must be a power-of-two multiple of the default alignment of
+the vector element type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fSLOT_005fALIGNMENT"></a>Macro: <strong>STACK_SLOT_ALIGNMENT</strong> <em>(<var>type</var>, <var>mode</var>, <var>basic-align</var>)</em></dt>
+<dd><p>If defined, a C expression to compute the alignment for stack slot.
+<var>type</var> is the data type, <var>mode</var> is the widest mode available,
+and <var>basic-align</var> is the alignment that the slot would ordinarily
+have. The value of this macro is used instead of that alignment to
+align the slot.
+</p>
+<p>If this macro is not defined, then <var>basic-align</var> is used when
+<var>type</var> is <code>NULL</code>. Otherwise, <code>LOCAL_ALIGNMENT</code> will
+be used.
+</p>
+<p>This macro is to set alignment of stack slot to the maximum alignment
+of all possible modes which the slot may have.
+</p>
+<p>If the value of this macro has a type, it should be an unsigned type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LOCAL_005fDECL_005fALIGNMENT"></a>Macro: <strong>LOCAL_DECL_ALIGNMENT</strong> <em>(<var>decl</var>)</em></dt>
+<dd><p>If defined, a C expression to compute the alignment for a local
+variable <var>decl</var>.
+</p>
+<p>If this macro is not defined, then
+<code>LOCAL_ALIGNMENT (TREE_TYPE (<var>decl</var>), DECL_ALIGN (<var>decl</var>))</code>
+is used.
+</p>
+<p>One use of this macro is to increase alignment of medium-size data to
+make it all fit in fewer cache lines.
+</p>
+<p>If the value of this macro has a type, it should be an unsigned type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MINIMUM_005fALIGNMENT"></a>Macro: <strong>MINIMUM_ALIGNMENT</strong> <em>(<var>exp</var>, <var>mode</var>, <var>align</var>)</em></dt>
+<dd><p>If defined, a C expression to compute the minimum required alignment
+for dynamic stack realignment purposes for <var>exp</var> (a type or decl),
+<var>mode</var>, assuming normal alignment <var>align</var>.
+</p>
+<p>If this macro is not defined, then <var>align</var> will be used.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-EMPTY_005fFIELD_005fBOUNDARY"></a>Macro: <strong>EMPTY_FIELD_BOUNDARY</strong></dt>
+<dd><p>Alignment in bits to be given to a structure bit-field that follows an
+empty field such as <code>int : 0;</code>.
+</p>
+<p>If <code>PCC_BITFIELD_TYPE_MATTERS</code> is true, it overrides this macro.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STRUCTURE_005fSIZE_005fBOUNDARY"></a>Macro: <strong>STRUCTURE_SIZE_BOUNDARY</strong></dt>
+<dd><p>Number of bits which any structure or union&rsquo;s size must be a multiple of.
+Each structure or union&rsquo;s size is rounded up to a multiple of this.
+</p>
+<p>If you do not define this macro, the default is the same as
+<code>BITS_PER_UNIT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STRICT_005fALIGNMENT"></a>Macro: <strong>STRICT_ALIGNMENT</strong></dt>
+<dd><p>Define this macro to be the value 1 if instructions will fail to work
+if given data not on the nominal alignment. If instructions will merely
+go slower in that case, define this macro as 0.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PCC_005fBITFIELD_005fTYPE_005fMATTERS"></a>Macro: <strong>PCC_BITFIELD_TYPE_MATTERS</strong></dt>
+<dd><p>Define this if you wish to imitate the way many other C compilers handle
+alignment of bit-fields and the structures that contain them.
+</p>
+<p>The behavior is that the type written for a named bit-field (<code>int</code>,
+<code>short</code>, or other integer type) imposes an alignment for the entire
+structure, as if the structure really did contain an ordinary field of
+that type. In addition, the bit-field is placed within the structure so
+that it would fit within such a field, not crossing a boundary for it.
+</p>
+<p>Thus, on most machines, a named bit-field whose type is written as
+<code>int</code> would not cross a four-byte boundary, and would force
+four-byte alignment for the whole structure. (The alignment used may
+not be four bytes; it is controlled by the other alignment parameters.)
+</p>
+<p>An unnamed bit-field will not affect the alignment of the containing
+structure.
+</p>
+<p>If the macro is defined, its definition should be a C expression;
+a nonzero value for the expression enables this behavior.
+</p>
+<p>Note that if this macro is not defined, or its value is zero, some
+bit-fields may cross more than one alignment boundary. The compiler can
+support such references if there are &lsquo;<samp>insv</samp>&rsquo;, &lsquo;<samp>extv</samp>&rsquo;, and
+&lsquo;<samp>extzv</samp>&rsquo; insns that can directly reference memory.
+</p>
+<p>The other known way of making bit-fields work is to define
+<code>STRUCTURE_SIZE_BOUNDARY</code> as large as <code>BIGGEST_ALIGNMENT</code>.
+Then every structure can be accessed with fullwords.
+</p>
+<p>Unless the machine has bit-field instructions or you define
+<code>STRUCTURE_SIZE_BOUNDARY</code> that way, you must define
+<code>PCC_BITFIELD_TYPE_MATTERS</code> to have a nonzero value.
+</p>
+<p>If your aim is to make GCC use the same conventions for laying out
+bit-fields as are used by another compiler, here is how to investigate
+what the other compiler does. Compile and run this program:
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct foo1
+{
+ char x;
+ char :0;
+ char y;
+};
+
+struct foo2
+{
+ char x;
+ int :0;
+ char y;
+};
+
+main ()
+{
+ printf (&quot;Size of foo1 is %d\n&quot;,
+ sizeof (struct foo1));
+ printf (&quot;Size of foo2 is %d\n&quot;,
+ sizeof (struct foo2));
+ exit (0);
+}
+</pre></div>
+
+<p>If this prints 2 and 5, then the compiler&rsquo;s behavior is what you would
+get from <code>PCC_BITFIELD_TYPE_MATTERS</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BITFIELD_005fNBYTES_005fLIMITED"></a>Macro: <strong>BITFIELD_NBYTES_LIMITED</strong></dt>
+<dd><p>Like <code>PCC_BITFIELD_TYPE_MATTERS</code> except that its effect is limited
+to aligning a bit-field within the structure.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fALIGN_005fANON_005fBITFIELD"></a>Target Hook: <em>bool</em> <strong>TARGET_ALIGN_ANON_BITFIELD</strong> <em>(void)</em></dt>
+<dd><p>When <code>PCC_BITFIELD_TYPE_MATTERS</code> is true this hook will determine
+whether unnamed bitfields affect the alignment of the containing
+structure. The hook should return true if the structure should inherit
+the alignment requirements of an unnamed bitfield&rsquo;s type.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNARROW_005fVOLATILE_005fBITFIELD"></a>Target Hook: <em>bool</em> <strong>TARGET_NARROW_VOLATILE_BITFIELD</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return <code>true</code> if accesses to volatile bitfields
+should use the narrowest mode possible. It should return <code>false</code> if
+these accesses should use the bitfield container type.
+</p>
+<p>The default is <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMEMBER_005fTYPE_005fFORCES_005fBLK"></a>Target Hook: <em>bool</em> <strong>TARGET_MEMBER_TYPE_FORCES_BLK</strong> <em>(const_tree <var>field</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>Return true if a structure, union or array containing <var>field</var> should
+be accessed using <code>BLKMODE</code>.
+</p>
+<p>If <var>field</var> is the only field in the structure, <var>mode</var> is its
+mode, otherwise <var>mode</var> is VOIDmode. <var>mode</var> is provided in the
+case where structures of one field would require the structure&rsquo;s mode to
+retain the field&rsquo;s mode.
+</p>
+<p>Normally, this is not needed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ROUND_005fTYPE_005fALIGN"></a>Macro: <strong>ROUND_TYPE_ALIGN</strong> <em>(<var>type</var>, <var>computed</var>, <var>specified</var>)</em></dt>
+<dd><p>Define this macro as an expression for the alignment of a type (given
+by <var>type</var> as a tree node) if the alignment computed in the usual
+way is <var>computed</var> and the alignment explicitly specified was
+<var>specified</var>.
+</p>
+<p>The default is to use <var>specified</var> if it is larger; otherwise, use
+the smaller of <var>computed</var> and <code>BIGGEST_ALIGNMENT</code>
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MAX_005fFIXED_005fMODE_005fSIZE"></a>Macro: <strong>MAX_FIXED_MODE_SIZE</strong></dt>
+<dd><p>An integer expression for the size in bits of the largest integer
+machine mode that should actually be used. All integer machine modes of
+this size or smaller can be used for structures and unions with the
+appropriate sizes. If this macro is undefined, <code>GET_MODE_BITSIZE
+(DImode)</code> is assumed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fSAVEAREA_005fMODE"></a>Macro: <strong>STACK_SAVEAREA_MODE</strong> <em>(<var>save_level</var>)</em></dt>
+<dd><p>If defined, an expression of type <code>machine_mode</code> that
+specifies the mode of the save area operand of a
+<code>save_stack_<var>level</var></code> named pattern (see <a href="Standard-Names.html#Standard-Names">Standard Names</a>).
+<var>save_level</var> is one of <code>SAVE_BLOCK</code>, <code>SAVE_FUNCTION</code>, or
+<code>SAVE_NONLOCAL</code> and selects which of the three named patterns is
+having its mode specified.
+</p>
+<p>You need not define this macro if it always returns <code>Pmode</code>. You
+would most commonly define this macro if the
+<code>save_stack_<var>level</var></code> patterns need to support both a 32- and a
+64-bit mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-STACK_005fSIZE_005fMODE"></a>Macro: <strong>STACK_SIZE_MODE</strong></dt>
+<dd><p>If defined, an expression of type <code>machine_mode</code> that
+specifies the mode of the size increment operand of an
+<code>allocate_stack</code> named pattern (see <a href="Standard-Names.html#Standard-Names">Standard Names</a>).
+</p>
+<p>You need not define this macro if it always returns <code>word_mode</code>.
+You would most commonly define this macro if the <code>allocate_stack</code>
+pattern needs to support both a 32- and a 64-bit mode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBGCC_005fCMP_005fRETURN_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_LIBGCC_CMP_RETURN_MODE</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return the mode to be used for the return value
+of compare instructions expanded to libgcc calls. If not defined
+<code>word_mode</code> is returned which is the right choice for a majority of
+targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fLIBGCC_005fSHIFT_005fCOUNT_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_LIBGCC_SHIFT_COUNT_MODE</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return the mode to be used for the shift count operand
+of shift instructions expanded to libgcc calls. If not defined
+<code>word_mode</code> is returned which is the right choice for a majority of
+targets.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUNWIND_005fWORD_005fMODE"></a>Target Hook: <em>scalar_int_mode</em> <strong>TARGET_UNWIND_WORD_MODE</strong> <em>(void)</em></dt>
+<dd><p>Return machine mode to be used for <code>_Unwind_Word</code> type.
+The default is to use <code>word_mode</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMS_005fBITFIELD_005fLAYOUT_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_MS_BITFIELD_LAYOUT_P</strong> <em>(const_tree <var>record_type</var>)</em></dt>
+<dd><p>This target hook returns <code>true</code> if bit-fields in the given
+<var>record_type</var> are to be laid out following the rules of Microsoft
+Visual C/C++, namely: (i) a bit-field won&rsquo;t share the same storage
+unit with the previous bit-field if their underlying types have
+different sizes, and the bit-field will be aligned to the highest
+alignment of the underlying types of itself and of the previous
+bit-field; (ii) a zero-sized bit-field will affect the alignment of
+the whole enclosing structure, even if it is unnamed; except that
+(iii) a zero-sized bit-field will be disregarded unless it follows
+another bit-field of nonzero size. If this hook returns <code>true</code>,
+other macros that control bit-field layout are ignored.
+</p>
+<p>When a bit-field is inserted into a packed record, the whole size
+of the underlying type is used by one or more same-size adjacent
+bit-fields (that is, if its long:3, 32 bits is used in the record,
+and any additional adjacent long bit-fields are packed into the same
+chunk of 32 bits. However, if the size changes, a new field of that
+size is allocated). In an unpacked record, this is the same as using
+alignment, but not equivalent when packing.
+</p>
+<p>If both MS bit-fields and &lsquo;<samp>__attribute__((packed))</samp>&rsquo; are used,
+the latter will take precedence. If &lsquo;<samp>__attribute__((packed))</samp>&rsquo; is
+used on a single field when MS bit-fields are in use, it will take
+precedence for that field, but the alignment of the rest of the structure
+may affect its placement.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDECIMAL_005fFLOAT_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_DECIMAL_FLOAT_SUPPORTED_P</strong> <em>(void)</em></dt>
+<dd><p>Returns true if the target supports decimal floating point.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFIXED_005fPOINT_005fSUPPORTED_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_FIXED_POINT_SUPPORTED_P</strong> <em>(void)</em></dt>
+<dd><p>Returns true if the target supports fixed-point arithmetic.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXPAND_005fTO_005fRTL_005fHOOK"></a>Target Hook: <em>void</em> <strong>TARGET_EXPAND_TO_RTL_HOOK</strong> <em>(void)</em></dt>
+<dd><p>This hook is called just before expansion into rtl, allowing the target
+to perform additional initializations or analysis before the expansion.
+For example, the rs6000 port uses it to allocate a scratch stack slot
+for use in copying SDmode values between memory and floating point
+registers whenever the function being expanded has any SDmode
+usage.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINSTANTIATE_005fDECLS"></a>Target Hook: <em>void</em> <strong>TARGET_INSTANTIATE_DECLS</strong> <em>(void)</em></dt>
+<dd><p>This hook allows the backend to perform additional instantiations on rtl
+that are not actually in any insns yet, but will be later.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMANGLE_005fTYPE"></a>Target Hook: <em>const char *</em> <strong>TARGET_MANGLE_TYPE</strong> <em>(const_tree <var>type</var>)</em></dt>
+<dd><p>If your target defines any fundamental types, or any types your target
+uses should be mangled differently from the default, define this hook
+to return the appropriate encoding for these types as part of a C++
+mangled name. The <var>type</var> argument is the tree structure representing
+the type to be mangled. The hook may be applied to trees which are
+not target-specific fundamental types; it should return <code>NULL</code>
+for all such types, as well as arguments it does not recognize. If the
+return value is not <code>NULL</code>, it must point to a statically-allocated
+string constant.
+</p>
+<p>Target-specific fundamental types might be new fundamental types or
+qualified versions of ordinary fundamental types. Encode new
+fundamental types as &lsquo;<samp>u&nbsp;<var>n</var>&nbsp;<var>name</var><!-- /@w --></samp>&rsquo;, where <var>name</var>
+is the name used for the type in source code, and <var>n</var> is the
+length of <var>name</var> in decimal. Encode qualified versions of
+ordinary types as &lsquo;<samp>U&nbsp;<var>n</var>&nbsp;<var>name</var>&nbsp;<var>code</var><!-- /@w --></samp>&rsquo;, where
+<var>name</var> is the name used for the type qualifier in source code,
+<var>n</var> is the length of <var>name</var> as above, and <var>code</var> is the
+code used to represent the unqualified version of this type. (See
+<code>write_builtin_type</code> in <samp>cp/mangle.cc</samp> for the list of
+codes.) In both cases the spaces are for clarity; do not include any
+spaces in your string.
+</p>
+<p>This hook is applied to types prior to typedef resolution. If the mangled
+name for a particular type depends only on that type&rsquo;s main variant, you
+can perform typedef resolution yourself using <code>TYPE_MAIN_VARIANT</code>
+before mangling.
+</p>
+<p>The default version of this hook always returns <code>NULL</code>, which is
+appropriate for a target that does not define any new fundamental
+types.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMIT_005fSUPPORT_005fTINFOS"></a>Target Hook: <em>void</em> <strong>TARGET_EMIT_SUPPORT_TINFOS</strong> <em>(emit_support_tinfos_callback <var>callback</var>)</em></dt>
+<dd><p>If your target defines any fundamental types which depend on ISA flags,
+they might need C++ tinfo symbols in libsupc++/libstdc++ regardless of
+ISA flags the library is compiled with.
+This hook allows creating tinfo symbols even for those cases, by temporarily
+creating each corresponding fundamental type trees, calling the
+<var>callback</var> function on it and setting the type back to <code>nullptr</code>.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Type-Layout.html#Type-Layout" accesskey="n" rel="next">Type Layout</a>, Previous: <a href="Per_002dFunction-Data.html#Per_002dFunction-Data" accesskey="p" rel="previous">Per-Function Data</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Storage-References.html b/share/doc/gccint/Storage-References.html
new file mode 100644
index 0000000..25c3dc5
--- /dev/null
+++ b/share/doc/gccint/Storage-References.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Storage References</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Storage References">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Storage References">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Expression-trees.html#Expression-trees" rel="up" title="Expression trees">
+<link href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" rel="next" title="Unary and Binary Expressions">
+<link href="Constant-expressions.html#Constant-expressions" rel="previous" title="Constant expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Storage-References"></a>
+<div class="header">
+<p>
+Next: <a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" accesskey="n" rel="next">Unary and Binary Expressions</a>, Previous: <a href="Constant-expressions.html#Constant-expressions" accesskey="p" rel="previous">Constant expressions</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="References-to-storage"></a>
+<h4 class="subsection">11.6.2 References to storage</h4>
+<a name="index-ADDR_005fEXPR"></a>
+<a name="index-INDIRECT_005fREF"></a>
+<a name="index-MEM_005fREF"></a>
+<a name="index-ARRAY_005fREF"></a>
+<a name="index-ARRAY_005fRANGE_005fREF"></a>
+<a name="index-TARGET_005fMEM_005fREF"></a>
+<a name="index-COMPONENT_005fREF"></a>
+
+<dl compact="compact">
+<dt><code>ARRAY_REF</code></dt>
+<dd><p>These nodes represent array accesses. The first operand is the array;
+the second is the index. To calculate the address of the memory
+accessed, you must scale the index by the size of the type of the array
+elements. The type of these expressions must be the type of a component of
+the array. The third and fourth operands are used after gimplification
+to represent the lower bound and component size but should not be used
+directly; call <code>array_ref_low_bound</code> and <code>array_ref_element_size</code>
+instead.
+</p>
+</dd>
+<dt><code>ARRAY_RANGE_REF</code></dt>
+<dd><p>These nodes represent access to a range (or &ldquo;slice&rdquo;) of an array. The
+operands are the same as that for <code>ARRAY_REF</code> and have the same
+meanings. The type of these expressions must be an array whose component
+type is the same as that of the first operand. The range of that array
+type determines the amount of data these expressions access.
+</p>
+</dd>
+<dt><code>COMPONENT_REF</code></dt>
+<dd><p>These nodes represent non-static data member accesses. The first
+operand is the object (rather than a pointer to it); the second operand
+is the <code>FIELD_DECL</code> for the data member. The third operand represents
+the byte offset of the field, but should not be used directly; call
+<code>component_ref_field_offset</code> instead.
+</p>
+</dd>
+<dt><code>ADDR_EXPR</code></dt>
+<dd><p>These nodes are used to represent the address of an object. (These
+expressions will always have pointer or reference type.) The operand may
+be another expression, or it may be a declaration.
+</p>
+<p>As an extension, GCC allows users to take the address of a label. In
+this case, the operand of the <code>ADDR_EXPR</code> will be a
+<code>LABEL_DECL</code>. The type of such an expression is <code>void*</code>.
+</p>
+<p>If the object addressed is not an lvalue, a temporary is created, and
+the address of the temporary is used.
+</p>
+</dd>
+<dt><code>INDIRECT_REF</code></dt>
+<dd><p>These nodes are used to represent the object pointed to by a pointer.
+The operand is the pointer being dereferenced; it will always have
+pointer or reference type.
+</p>
+</dd>
+<dt><code>MEM_REF</code></dt>
+<dd><p>These nodes are used to represent the object pointed to by a pointer
+offset by a constant.
+The first operand is the pointer being dereferenced; it will always have
+pointer or reference type. The second operand is a pointer constant
+serving as constant offset applied to the pointer being dereferenced
+with its type specifying the type to be used for type-based alias analysis.
+The type of the node specifies the alignment of the access.
+</p>
+</dd>
+<dt><code>TARGET_MEM_REF</code></dt>
+<dd><p>These nodes represent memory accesses whose address directly map to
+an addressing mode of the target architecture. The first argument
+is <code>TMR_BASE</code> and is a pointer to the object being accessed.
+The second argument is <code>TMR_OFFSET</code> which is a pointer constant
+with dual purpose serving both as constant offset and holder of
+the type used for type-based alias analysis. The first two operands
+have exactly the same semantics as <code>MEM_REF</code>. The third
+and fourth operand are <code>TMR_INDEX</code> and <code>TMR_STEP</code> where
+the former is an integer and the latter an integer constant. The
+fifth and last operand is <code>TMR_INDEX2</code> which is an alternate
+non-constant offset. Any of the third to last operands may be
+<code>NULL</code> if the corresponding component does not appear in
+the address, but <code>TMR_INDEX</code> and <code>TMR_STEP</code> shall be
+always supplied in pair. The Address of the <code>TARGET_MEM_REF</code>
+is determined in the following way.
+</p>
+<div class="smallexample">
+<pre class="smallexample">TMR_BASE + TMR_OFFSET + TMR_INDEX * TMR_STEP + TMR_INDEX2
+</pre></div>
+
+<p>The type of the node specifies the alignment of the access.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" accesskey="n" rel="next">Unary and Binary Expressions</a>, Previous: <a href="Constant-expressions.html#Constant-expressions" accesskey="p" rel="previous">Constant expressions</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Subdirectories.html b/share/doc/gccint/Subdirectories.html
new file mode 100644
index 0000000..c44749c
--- /dev/null
+++ b/share/doc/gccint/Subdirectories.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Subdirectories</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Subdirectories">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Subdirectories">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gcc-Directory.html#gcc-Directory" rel="up" title="gcc Directory">
+<link href="Configuration.html#Configuration" rel="next" title="Configuration">
+<link href="gcc-Directory.html#gcc-Directory" rel="previous" title="gcc Directory">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Subdirectories"></a>
+<div class="header">
+<p>
+Next: <a href="Configuration.html#Configuration" accesskey="n" rel="next">Configuration</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Subdirectories-of-gcc"></a>
+<h4 class="subsection">6.3.1 Subdirectories of <samp>gcc</samp></h4>
+
+<p>The <samp>gcc</samp> directory contains the following subdirectories:
+</p>
+<dl compact="compact">
+<dt><samp><var>language</var></samp></dt>
+<dd><p>Subdirectories for various languages. Directories containing a file
+<samp>config-lang.in</samp> are language subdirectories. The contents of
+the subdirectories <samp>c</samp> (for C), <samp>cp</samp> (for C++), <samp>m2</samp>
+(for Modula-2),
+<samp>objc</samp> (for Objective-C), <samp>objcp</samp> (for Objective-C++),
+and <samp>lto</samp> (for LTO) are documented in this
+manual (see <a href="Passes.html#Passes">Passes and Files of the Compiler</a>);
+those for other languages are not. See <a href="Front-End.html#Front-End">Anatomy of a Language Front End</a>, for details of the files in these
+directories.
+</p>
+</dd>
+<dt><samp>common</samp></dt>
+<dd><p>Source files shared between the compiler drivers (such as
+<code>gcc</code>) and the compilers proper (such as <samp>cc1</samp>). If an
+architecture defines target hooks shared between those places, it also
+has a subdirectory in <samp>common/config</samp>. See <a href="Target-Structure.html#Target-Structure">Target Structure</a>.
+</p>
+</dd>
+<dt><samp>config</samp></dt>
+<dd><p>Configuration files for supported architectures and operating
+systems. See <a href="Back-End.html#Back-End">Anatomy of a Target Back End</a>, for
+details of the files in this directory.
+</p>
+</dd>
+<dt><samp>doc</samp></dt>
+<dd><p>Texinfo documentation for GCC, together with automatically generated
+man pages and support for converting the installation manual to
+HTML. See <a href="Documentation.html#Documentation">Documentation</a>.
+</p>
+</dd>
+<dt><samp>ginclude</samp></dt>
+<dd><p>System headers installed by GCC, mainly those required by the C
+standard of freestanding implementations. See <a href="Headers.html#Headers">Headers
+Installed by GCC</a>, for details of when these and other headers are
+installed.
+</p>
+</dd>
+<dt><samp>po</samp></dt>
+<dd><p>Message catalogs with translations of messages produced by GCC into
+various languages, <samp><var>language</var>.po</samp>. This directory also
+contains <samp>gcc.pot</samp>, the template for these message catalogues,
+<samp>exgettext</samp>, a wrapper around <code>gettext</code> to extract the
+messages from the GCC sources and create <samp>gcc.pot</samp>, which is run
+by &lsquo;<samp>make gcc.pot</samp>&rsquo;, and <samp>EXCLUDES</samp>, a list of files from
+which messages should not be extracted.
+</p>
+</dd>
+<dt><samp>testsuite</samp></dt>
+<dd><p>The GCC testsuites (except for those for runtime libraries).
+See <a href="Testsuites.html#Testsuites">Testsuites</a>.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Configuration.html#Configuration" accesskey="n" rel="next">Configuration</a>, Up: <a href="gcc-Directory.html#gcc-Directory" accesskey="u" rel="up">gcc Directory</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Subst-Iterators.html b/share/doc/gccint/Subst-Iterators.html
new file mode 100644
index 0000000..1293191
--- /dev/null
+++ b/share/doc/gccint/Subst-Iterators.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Subst Iterators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Subst Iterators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Subst Iterators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Iterators.html#Iterators" rel="up" title="Iterators">
+<link href="Parameterized-Names.html#Parameterized-Names" rel="next" title="Parameterized Names">
+<link href="Int-Iterators.html#Int-Iterators" rel="previous" title="Int Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Subst-Iterators"></a>
+<div class="header">
+<p>
+Next: <a href="Parameterized-Names.html#Parameterized-Names" accesskey="n" rel="next">Parameterized Names</a>, Previous: <a href="Int-Iterators.html#Int-Iterators" accesskey="p" rel="previous">Int Iterators</a>, Up: <a href="Iterators.html#Iterators" accesskey="u" rel="up">Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Subst-Iterators-1"></a>
+<h4 class="subsection">17.23.4 Subst Iterators</h4>
+<a name="index-subst-iterators-in-_002emd-files"></a>
+<a name="index-define_005fsubst-5"></a>
+<a name="index-define_005fsubst_005fattr"></a>
+
+<p>Subst iterators are special type of iterators with the following
+restrictions: they could not be declared explicitly, they always have
+only two values, and they do not have explicit dedicated name.
+Subst-iterators are triggered only when corresponding subst-attribute is
+used in RTL-pattern.
+</p>
+<p>Subst iterators transform templates in the following way: the templates
+are duplicated, the subst-attributes in these templates are replaced
+with the corresponding values, and a new attribute is implicitly added
+to the given <code>define_insn</code>/<code>define_expand</code>. The name of the
+added attribute matches the name of <code>define_subst</code>. Such
+attributes are declared implicitly, and it is not allowed to have a
+<code>define_attr</code> named as a <code>define_subst</code>.
+</p>
+<p>Each subst iterator is linked to a <code>define_subst</code>. It is declared
+implicitly by the first appearance of the corresponding
+<code>define_subst_attr</code>, and it is not allowed to define it explicitly.
+</p>
+<p>Declarations of subst-attributes have the following syntax:
+</p>
+<a name="index-define_005fsubst_005fattr-1"></a>
+<div class="smallexample">
+<pre class="smallexample">(define_subst_attr &quot;<var>name</var>&quot;
+ &quot;<var>subst-name</var>&quot;
+ &quot;<var>no-subst-value</var>&quot;
+ &quot;<var>subst-applied-value</var>&quot;)
+</pre></div>
+
+<p><var>name</var> is a string with which the given subst-attribute could be
+referred to.
+</p>
+<p><var>subst-name</var> shows which <code>define_subst</code> should be applied to an
+RTL-template if the given subst-attribute is present in the
+RTL-template.
+</p>
+<p><var>no-subst-value</var> is a value with which subst-attribute would be
+replaced in the first copy of the original RTL-template.
+</p>
+<p><var>subst-applied-value</var> is a value with which subst-attribute would be
+replaced in the second copy of the original RTL-template.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Substitutions.html b/share/doc/gccint/Substitutions.html
new file mode 100644
index 0000000..3b9c1f3
--- /dev/null
+++ b/share/doc/gccint/Substitutions.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Substitutions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Substitutions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Substitutions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Mode-Iterators.html#Mode-Iterators" rel="up" title="Mode Iterators">
+<link href="Examples.html#Examples" rel="next" title="Examples">
+<link href="Defining-Mode-Iterators.html#Defining-Mode-Iterators" rel="previous" title="Defining Mode Iterators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Substitutions"></a>
+<div class="header">
+<p>
+Next: <a href="Examples.html#Examples" accesskey="n" rel="next">Examples</a>, Previous: <a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators" accesskey="p" rel="previous">Defining Mode Iterators</a>, Up: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="u" rel="up">Mode Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Substitution-in-Mode-Iterators"></a>
+<h4 class="subsubsection">17.23.1.2 Substitution in Mode Iterators</h4>
+<a name="index-define_005fmode_005fattr"></a>
+
+<p>If an <samp>.md</samp> file construct uses mode iterators, each version of the
+construct will often need slightly different strings or modes. For
+example:
+</p>
+<ul>
+<li> When a <code>define_expand</code> defines several <code>add<var>m</var>3</code> patterns
+(see <a href="Standard-Names.html#Standard-Names">Standard Names</a>), each expander will need to use the
+appropriate mode name for <var>m</var>.
+
+</li><li> When a <code>define_insn</code> defines several instruction patterns,
+each instruction will often use a different assembler mnemonic.
+
+</li><li> When a <code>define_insn</code> requires operands with different modes,
+using an iterator for one of the operand modes usually requires a specific
+mode for the other operand(s).
+</li></ul>
+
+<p>GCC supports such variations through a system of &ldquo;mode attributes&rdquo;.
+There are two standard attributes: <code>mode</code>, which is the name of
+the mode in lower case, and <code>MODE</code>, which is the same thing in
+upper case. You can define other attributes using:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_attr <var>name</var> [(<var>mode1</var> &quot;<var>value1</var>&quot;) &hellip; (<var>moden</var> &quot;<var>valuen</var>&quot;)])
+</pre></div>
+
+<p>where <var>name</var> is the name of the attribute and <var>valuei</var>
+is the value associated with <var>modei</var>.
+</p>
+<p>When GCC replaces some <var>:iterator</var> with <var>:mode</var>, it will scan
+each string and mode in the pattern for sequences of the form
+<code>&lt;<var>iterator</var>:<var>attr</var>&gt;</code>, where <var>attr</var> is the name of a
+mode attribute. If the attribute is defined for <var>mode</var>, the whole
+<code>&lt;&hellip;&gt;</code> sequence will be replaced by the appropriate attribute
+value.
+</p>
+<p>For example, suppose an <samp>.md</samp> file has:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator P [(SI &quot;Pmode == SImode&quot;) (DI &quot;Pmode == DImode&quot;)])
+(define_mode_attr load [(SI &quot;lw&quot;) (DI &quot;ld&quot;)])
+</pre></div>
+
+<p>If one of the patterns that uses <code>:P</code> contains the string
+<code>&quot;&lt;P:load&gt;\t%0,%1&quot;</code>, the <code>SI</code> version of that pattern
+will use <code>&quot;lw\t%0,%1&quot;</code> and the <code>DI</code> version will use
+<code>&quot;ld\t%0,%1&quot;</code>.
+</p>
+<p>Here is an example of using an attribute for a mode:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_mode_iterator LONG [SI DI])
+(define_mode_attr SHORT [(SI &quot;HI&quot;) (DI &quot;SI&quot;)])
+(define_insn &hellip;
+ (sign_extend:LONG (match_operand:&lt;LONG:SHORT&gt; &hellip;)) &hellip;)
+</pre></div>
+
+<p>The <code><var>iterator</var>:</code> prefix may be omitted, in which case the
+substitution will be attempted for every iterator expansion.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Examples.html#Examples" accesskey="n" rel="next">Examples</a>, Previous: <a href="Defining-Mode-Iterators.html#Defining-Mode-Iterators" accesskey="p" rel="previous">Defining Mode Iterators</a>, Up: <a href="Mode-Iterators.html#Mode-Iterators" accesskey="u" rel="up">Mode Iterators</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/System-Config.html b/share/doc/gccint/System-Config.html
new file mode 100644
index 0000000..d2f9692
--- /dev/null
+++ b/share/doc/gccint/System-Config.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: System Config</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: System Config">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: System Config">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Configuration.html#Configuration" rel="up" title="Configuration">
+<link href="Configuration-Files.html#Configuration-Files" rel="next" title="Configuration Files">
+<link href="Config-Fragments.html#Config-Fragments" rel="previous" title="Config Fragments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="System-Config"></a>
+<div class="header">
+<p>
+Next: <a href="Configuration-Files.html#Configuration-Files" accesskey="n" rel="next">Configuration Files</a>, Previous: <a href="Config-Fragments.html#Config-Fragments" accesskey="p" rel="previous">Config Fragments</a>, Up: <a href="Configuration.html#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-config_002ebuild_003b-config_002ehost_003b-and-config_002egcc-Files"></a>
+<h4 class="subsubsection">6.3.2.2 The <samp>config.build</samp>; <samp>config.host</samp>; and <samp>config.gcc</samp> Files</h4>
+
+<p>The <samp>config.build</samp> file contains specific rules for particular systems
+which GCC is built on. This should be used as rarely as possible, as the
+behavior of the build system can always be detected by autoconf.
+</p>
+<p>The <samp>config.host</samp> file contains specific rules for particular systems
+which GCC will run on. This is rarely needed.
+</p>
+<p>The <samp>config.gcc</samp> file contains specific rules for particular systems
+which GCC will generate code for. This is usually needed.
+</p>
+<p>Each file has a list of the shell variables it sets, with descriptions, at the
+top of the file.
+</p>
+<p>FIXME: document the contents of these files, and what variables should
+be set to control build, host and target configuration.
+</p>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html b/share/doc/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html
new file mode 100644
index 0000000..c115060
--- /dev/null
+++ b/share/doc/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=File-Framework.html#TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="File-Framework.html#TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS">TARGET_HAVE_SWITCHABLE_BSS_SECTIONS</a>.</p>
+</body>
diff --git a/share/doc/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html b/share/doc/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html
new file mode 100644
index 0000000..0200506
--- /dev/null
+++ b/share/doc/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: TARGET_SHIFT_TRUNCATION_MASK</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: TARGET_SHIFT_TRUNCATION_MASK">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: TARGET_SHIFT_TRUNCATION_MASK">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Misc.html#TARGET_005fSHIFT_005fTRUNCATION_005fMASK">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Misc.html#TARGET_005fSHIFT_005fTRUNCATION_005fMASK">TARGET_SHIFT_TRUNCATION_MASK</a>.</p>
+</body>
diff --git a/share/doc/gccint/Tagging-Insns.html b/share/doc/gccint/Tagging-Insns.html
new file mode 100644
index 0000000..9433e12
--- /dev/null
+++ b/share/doc/gccint/Tagging-Insns.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tagging Insns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tagging Insns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tagging Insns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="up" title="Insn Attributes">
+<link href="Attr-Example.html#Attr-Example" rel="next" title="Attr Example">
+<link href="Expressions.html#Expressions" rel="previous" title="Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tagging-Insns"></a>
+<div class="header">
+<p>
+Next: <a href="Attr-Example.html#Attr-Example" accesskey="n" rel="next">Attr Example</a>, Previous: <a href="Expressions.html#Expressions" accesskey="p" rel="previous">Expressions</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Assigning-Attribute-Values-to-Insns"></a>
+<h4 class="subsection">17.19.3 Assigning Attribute Values to Insns</h4>
+<a name="index-tagging-insns"></a>
+<a name="index-assigning-attribute-values-to-insns"></a>
+
+<p>The value assigned to an attribute of an insn is primarily determined by
+which pattern is matched by that insn (or which <code>define_peephole</code>
+generated it). Every <code>define_insn</code> and <code>define_peephole</code> can
+have an optional last argument to specify the values of attributes for
+matching insns. The value of any attribute not specified in a particular
+insn is set to the default value for that attribute, as specified in its
+<code>define_attr</code>. Extensive use of default values for attributes
+permits the specification of the values for only one or two attributes
+in the definition of most insn patterns, as seen in the example in the
+next section.
+</p>
+<p>The optional last argument of <code>define_insn</code> and
+<code>define_peephole</code> is a vector of expressions, each of which defines
+the value for a single attribute. The most general way of assigning an
+attribute&rsquo;s value is to use a <code>set</code> expression whose first operand is an
+<code>attr</code> expression giving the name of the attribute being set. The
+second operand of the <code>set</code> is an attribute expression
+(see <a href="Expressions.html#Expressions">Expressions</a>) giving the value of the attribute.
+</p>
+<p>When the attribute value depends on the &lsquo;<samp>alternative</samp>&rsquo; attribute
+(i.e., which is the applicable alternative in the constraint of the
+insn), the <code>set_attr_alternative</code> expression can be used. It
+allows the specification of a vector of attribute expressions, one for
+each alternative.
+</p>
+<a name="index-set_005fattr"></a>
+<p>When the generality of arbitrary attribute expressions is not required,
+the simpler <code>set_attr</code> expression can be used, which allows
+specifying a string giving either a single attribute value or a list
+of attribute values, one for each alternative.
+</p>
+<p>The form of each of the above specifications is shown below. In each case,
+<var>name</var> is a string specifying the attribute to be set.
+</p>
+<dl compact="compact">
+<dt><code>(set_attr <var>name</var> <var>value-string</var>)</code></dt>
+<dd><p><var>value-string</var> is either a string giving the desired attribute value,
+or a string containing a comma-separated list giving the values for
+succeeding alternatives. The number of elements must match the number
+of alternatives in the constraint of the insn pattern.
+</p>
+<p>Note that it may be useful to specify &lsquo;<samp>*</samp>&rsquo; for some alternative, in
+which case the attribute will assume its default value for insns matching
+that alternative.
+</p>
+<a name="index-set_005fattr_005falternative"></a>
+</dd>
+<dt><code>(set_attr_alternative <var>name</var> [<var>value1</var> <var>value2</var> &hellip;])</code></dt>
+<dd><p>Depending on the alternative of the insn, the value will be one of the
+specified values. This is a shorthand for using a <code>cond</code> with
+tests on the &lsquo;<samp>alternative</samp>&rsquo; attribute.
+</p>
+<a name="index-attr-1"></a>
+</dd>
+<dt><code>(set (attr <var>name</var>) <var>value</var>)</code></dt>
+<dd><p>The first operand of this <code>set</code> must be the special RTL expression
+<code>attr</code>, whose sole operand is a string giving the name of the
+attribute being set. <var>value</var> is the value of the attribute.
+</p></dd>
+</dl>
+
+<p>The following shows three different ways of representing the same
+attribute value specification:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(set_attr &quot;type&quot; &quot;load,store,arith&quot;)
+
+(set_attr_alternative &quot;type&quot;
+ [(const_string &quot;load&quot;) (const_string &quot;store&quot;)
+ (const_string &quot;arith&quot;)])
+
+(set (attr &quot;type&quot;)
+ (cond [(eq_attr &quot;alternative&quot; &quot;1&quot;) (const_string &quot;load&quot;)
+ (eq_attr &quot;alternative&quot; &quot;2&quot;) (const_string &quot;store&quot;)]
+ (const_string &quot;arith&quot;)))
+</pre></div>
+
+<a name="index-define_005fasm_005fattributes"></a>
+<p>The <code>define_asm_attributes</code> expression provides a mechanism to
+specify the attributes assigned to insns produced from an <code>asm</code>
+statement. It has the form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_asm_attributes [<var>attr-sets</var>])
+</pre></div>
+
+<p>where <var>attr-sets</var> is specified the same as for both the
+<code>define_insn</code> and the <code>define_peephole</code> expressions.
+</p>
+<p>These values will typically be the &ldquo;worst case&rdquo; attribute values. For
+example, they might indicate that the condition code will be clobbered.
+</p>
+<p>A specification for a <code>length</code> attribute is handled specially. The
+way to compute the length of an <code>asm</code> insn is to multiply the
+length specified in the expression <code>define_asm_attributes</code> by the
+number of machine instructions specified in the <code>asm</code> statement,
+determined by counting the number of semicolons and newlines in the
+string. Therefore, the value of the <code>length</code> attribute specified
+in a <code>define_asm_attributes</code> should be the maximum possible length
+of a single machine instruction.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Attr-Example.html#Attr-Example" accesskey="n" rel="next">Attr Example</a>, Previous: <a href="Expressions.html#Expressions" accesskey="p" rel="previous">Expressions</a>, Up: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="u" rel="up">Insn Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tail-Calls.html b/share/doc/gccint/Tail-Calls.html
new file mode 100644
index 0000000..1126665
--- /dev/null
+++ b/share/doc/gccint/Tail-Calls.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tail Calls</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tail Calls">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tail Calls">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Stack-and-Calling.html#Stack-and-Calling" rel="up" title="Stack and Calling">
+<link href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components" rel="next" title="Shrink-wrapping separate components">
+<link href="Profiling.html#Profiling" rel="previous" title="Profiling">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tail-Calls"></a>
+<div class="header">
+<p>
+Next: <a href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components" accesskey="n" rel="next">Shrink-wrapping separate components</a>, Previous: <a href="Profiling.html#Profiling" accesskey="p" rel="previous">Profiling</a>, Up: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="u" rel="up">Stack and Calling</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Permitting-tail-calls"></a>
+<h4 class="subsection">18.9.13 Permitting tail calls</h4>
+<a name="index-tail-calls"></a>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fOK_005fFOR_005fSIBCALL"></a>Target Hook: <em>bool</em> <strong>TARGET_FUNCTION_OK_FOR_SIBCALL</strong> <em>(tree <var>decl</var>, tree <var>exp</var>)</em></dt>
+<dd><p>True if it is OK to do sibling call optimization for the specified
+call expression <var>exp</var>. <var>decl</var> will be the called function,
+or <code>NULL</code> if this is an indirect call.
+</p>
+<p>It is not uncommon for limitations of calling conventions to prevent
+tail calls to functions outside the current unit of translation, or
+during PIC compilation. The hook is used to enforce these restrictions,
+as the <code>sibcall</code> md pattern cannot fail, or fall over to a
+&ldquo;normal&rdquo; call. The criteria for successful sibling call optimization
+may vary greatly between different architectures.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEXTRA_005fLIVE_005fON_005fENTRY"></a>Target Hook: <em>void</em> <strong>TARGET_EXTRA_LIVE_ON_ENTRY</strong> <em>(bitmap <var>regs</var>)</em></dt>
+<dd><p>Add any hard registers to <var>regs</var> that are live on entry to the
+function. This hook only needs to be defined to provide registers that
+cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved
+registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM,
+TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES,
+FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSET_005fUP_005fBY_005fPROLOGUE"></a>Target Hook: <em>void</em> <strong>TARGET_SET_UP_BY_PROLOGUE</strong> <em>(struct hard_reg_set_container *<var></var>)</em></dt>
+<dd><p>This hook should add additional registers that are computed by the prologue
+to the hard regset for shrink-wrapping optimization purposes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fWARN_005fFUNC_005fRETURN"></a>Target Hook: <em>bool</em> <strong>TARGET_WARN_FUNC_RETURN</strong> <em>(tree)</em></dt>
+<dd><p>True if a function&rsquo;s return statements should be checked for matching
+the function&rsquo;s return type. This includes checking for falling off the end
+of a non-void function. Return false if no such check should be made.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Target-Attributes.html b/share/doc/gccint/Target-Attributes.html
new file mode 100644
index 0000000..87af23a
--- /dev/null
+++ b/share/doc/gccint/Target-Attributes.html
@@ -0,0 +1,333 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Target Attributes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Target Attributes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Target Attributes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Emulated-TLS.html#Emulated-TLS" rel="next" title="Emulated TLS">
+<link href="Mode-Switching.html#Mode-Switching" rel="previous" title="Mode Switching">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Target-Attributes"></a>
+<div class="header">
+<p>
+Next: <a href="Emulated-TLS.html#Emulated-TLS" accesskey="n" rel="next">Emulated TLS</a>, Previous: <a href="Mode-Switching.html#Mode-Switching" accesskey="p" rel="previous">Mode Switching</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Defining-target_002dspecific-uses-of-_005f_005fattribute_005f_005f"></a>
+<h3 class="section">18.24 Defining target-specific uses of <code>__attribute__</code></h3>
+<a name="index-target-attributes"></a>
+<a name="index-machine-attributes"></a>
+<a name="index-attributes_002c-target_002dspecific"></a>
+
+<p>Target-specific attributes may be defined for functions, data and types.
+These are described using the following target hooks; they also need to
+be documented in <samp>extend.texi</samp>.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fATTRIBUTE_005fTABLE"></a>Target Hook: <em>const struct attribute_spec *</em> <strong>TARGET_ATTRIBUTE_TABLE</strong></dt>
+<dd><p>If defined, this target hook points to an array of &lsquo;<samp>struct
+attribute_spec</samp>&rsquo; (defined in <samp>tree-core.h</samp>) specifying the machine
+specific attributes for this target and some of the restrictions on the
+entities to which these attributes are applied and the arguments they
+take.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fATTRIBUTE_005fTAKES_005fIDENTIFIER_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P</strong> <em>(const_tree <var>name</var>)</em></dt>
+<dd><p>If defined, this target hook is a function which returns true if the
+machine-specific attribute named <var>name</var> expects an identifier
+given as its first argument to be passed on as a plain identifier, not
+subjected to name lookup. If this is not defined, the default is
+false for all machine-specific attributes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCOMP_005fTYPE_005fATTRIBUTES"></a>Target Hook: <em>int</em> <strong>TARGET_COMP_TYPE_ATTRIBUTES</strong> <em>(const_tree <var>type1</var>, const_tree <var>type2</var>)</em></dt>
+<dd><p>If defined, this target hook is a function which returns zero if the attributes on
+<var>type1</var> and <var>type2</var> are incompatible, one if they are compatible,
+and two if they are nearly compatible (which causes a warning to be
+generated). If this is not defined, machine-specific attributes are
+supposed always to be compatible.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSET_005fDEFAULT_005fTYPE_005fATTRIBUTES"></a>Target Hook: <em>void</em> <strong>TARGET_SET_DEFAULT_TYPE_ATTRIBUTES</strong> <em>(tree <var>type</var>)</em></dt>
+<dd><p>If defined, this target hook is a function which assigns default attributes to
+the newly defined <var>type</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMERGE_005fTYPE_005fATTRIBUTES"></a>Target Hook: <em>tree</em> <strong>TARGET_MERGE_TYPE_ATTRIBUTES</strong> <em>(tree <var>type1</var>, tree <var>type2</var>)</em></dt>
+<dd><p>Define this target hook if the merging of type attributes needs special
+handling. If defined, the result is a list of the combined
+<code>TYPE_ATTRIBUTES</code> of <var>type1</var> and <var>type2</var>. It is assumed
+that <code>comptypes</code> has already been called and returned 1. This
+function may call <code>merge_attributes</code> to handle machine-independent
+merging.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMERGE_005fDECL_005fATTRIBUTES"></a>Target Hook: <em>tree</em> <strong>TARGET_MERGE_DECL_ATTRIBUTES</strong> <em>(tree <var>olddecl</var>, tree <var>newdecl</var>)</em></dt>
+<dd><p>Define this target hook if the merging of decl attributes needs special
+handling. If defined, the result is a list of the combined
+<code>DECL_ATTRIBUTES</code> of <var>olddecl</var> and <var>newdecl</var>.
+<var>newdecl</var> is a duplicate declaration of <var>olddecl</var>. Examples of
+when this is needed are when one attribute overrides another, or when an
+attribute is nullified by a subsequent definition. This function may
+call <code>merge_attributes</code> to handle machine-independent merging.
+</p>
+<a name="index-TARGET_005fDLLIMPORT_005fDECL_005fATTRIBUTES"></a>
+<p>If the only target-specific handling you require is &lsquo;<samp>dllimport</samp>&rsquo;
+for Microsoft Windows targets, you should define the macro
+<code>TARGET_DLLIMPORT_DECL_ATTRIBUTES</code> to <code>1</code>. The compiler
+will then define a function called
+<code>merge_dllimport_decl_attributes</code> which can then be defined as
+the expansion of <code>TARGET_MERGE_DECL_ATTRIBUTES</code>. You can also
+add <code>handle_dll_attribute</code> in the attribute table for your port
+to perform initial processing of the &lsquo;<samp>dllimport</samp>&rsquo; and
+&lsquo;<samp>dllexport</samp>&rsquo; attributes. This is done in <samp>i386/cygwin.h</samp> and
+<samp>i386/i386.cc</samp>, for example.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVALID_005fDLLIMPORT_005fATTRIBUTE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_VALID_DLLIMPORT_ATTRIBUTE_P</strong> <em>(const_tree <var>decl</var>)</em></dt>
+<dd><p><var>decl</var> is a variable or function with <code>__attribute__((dllimport))</code>
+specified. Use this hook if the target needs to add extra validation
+checks to <code>handle_dll_attribute</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDECLSPEC"></a>Macro: <strong>TARGET_DECLSPEC</strong></dt>
+<dd><p>Define this macro to a nonzero value if you want to treat
+<code>__declspec(X)</code> as equivalent to <code>__attribute((X))</code>. By
+default, this behavior is enabled only for targets that define
+<code>TARGET_DLLIMPORT_DECL_ATTRIBUTES</code>. The current implementation
+of <code>__declspec</code> is via a built-in macro, but you should not rely
+on this implementation detail.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fINSERT_005fATTRIBUTES"></a>Target Hook: <em>void</em> <strong>TARGET_INSERT_ATTRIBUTES</strong> <em>(tree <var>node</var>, tree *<var>attr_ptr</var>)</em></dt>
+<dd><p>Define this target hook if you want to be able to add attributes to a decl
+when it is being created. This is normally useful for back ends which
+wish to implement a pragma by using the attributes which correspond to
+the pragma&rsquo;s effect. The <var>node</var> argument is the decl which is being
+created. The <var>attr_ptr</var> argument is a pointer to the attribute list
+for this decl. The list itself should not be modified, since it may be
+shared with other decls, but attributes may be chained on the head of
+the list and <code>*<var>attr_ptr</var></code> modified to point to the new
+attributes, or a copy of the list may be made if further changes are
+needed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHANDLE_005fGENERIC_005fATTRIBUTE"></a>Target Hook: <em>tree</em> <strong>TARGET_HANDLE_GENERIC_ATTRIBUTE</strong> <em>(tree *<var>node</var>, tree <var>name</var>, tree <var>args</var>, int <var>flags</var>, bool *<var>no_add_attrs</var>)</em></dt>
+<dd><p>Define this target hook if you want to be able to perform additional
+target-specific processing of an attribute which is handled generically
+by a front end. The arguments are the same as those which are passed to
+attribute handlers. So far this only affects the <var>noinit</var> and
+<var>section</var> attribute.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fFUNCTION_005fATTRIBUTE_005fINLINABLE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P</strong> <em>(const_tree <var>fndecl</var>)</em></dt>
+<dd><a name="index-inlining"></a>
+<p>This target hook returns <code>true</code> if it is OK to inline <var>fndecl</var>
+into the current function, despite its having target-specific
+attributes, <code>false</code> otherwise. By default, if a function has a
+target specific attribute attached to it, it will not be inlined.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fVALID_005fATTRIBUTE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_OPTION_VALID_ATTRIBUTE_P</strong> <em>(tree <var>fndecl</var>, tree <var>name</var>, tree <var>args</var>, int <var>flags</var>)</em></dt>
+<dd><p>This hook is called to parse <code>attribute(target(&quot;...&quot;))</code>, which
+allows setting target-specific options on individual functions.
+These function-specific options may differ
+from the options specified on the command line. The hook should return
+<code>true</code> if the options are valid.
+</p>
+<p>The hook should set the <code>DECL_FUNCTION_SPECIFIC_TARGET</code> field in
+the function declaration to hold a pointer to a target-specific
+<code>struct cl_target_option</code> structure.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fSAVE"></a>Target Hook: <em>void</em> <strong>TARGET_OPTION_SAVE</strong> <em>(struct cl_target_option *<var>ptr</var>, struct gcc_options *<var>opts</var>, struct gcc_options *<var>opts_set</var>)</em></dt>
+<dd><p>This hook is called to save any additional target-specific information
+in the <code>struct cl_target_option</code> structure for function-specific
+options from the <code>struct gcc_options</code> structure.
+See <a href="Option-file-format.html#Option-file-format">Option file format</a>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fRESTORE"></a>Target Hook: <em>void</em> <strong>TARGET_OPTION_RESTORE</strong> <em>(struct gcc_options *<var>opts</var>, struct gcc_options *<var>opts_set</var>, struct cl_target_option *<var>ptr</var>)</em></dt>
+<dd><p>This hook is called to restore any additional target-specific
+information in the <code>struct cl_target_option</code> structure for
+function-specific options to the <code>struct gcc_options</code> structure.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fPOST_005fSTREAM_005fIN"></a>Target Hook: <em>void</em> <strong>TARGET_OPTION_POST_STREAM_IN</strong> <em>(struct cl_target_option *<var>ptr</var>)</em></dt>
+<dd><p>This hook is called to update target-specific information in the
+<code>struct cl_target_option</code> structure after it is streamed in from
+LTO bytecode.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fPRINT"></a>Target Hook: <em>void</em> <strong>TARGET_OPTION_PRINT</strong> <em>(FILE *<var>file</var>, int <var>indent</var>, struct cl_target_option *<var>ptr</var>)</em></dt>
+<dd><p>This hook is called to print any additional target-specific
+information in the <code>struct cl_target_option</code> structure for
+function-specific options.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fPRAGMA_005fPARSE"></a>Target Hook: <em>bool</em> <strong>TARGET_OPTION_PRAGMA_PARSE</strong> <em>(tree <var>args</var>, tree <var>pop_target</var>)</em></dt>
+<dd><p>This target hook parses the options for <code>#pragma GCC target</code>, which
+sets the target-specific options for functions that occur later in the
+input stream. The options accepted should be the same as those handled by the
+<code>TARGET_OPTION_VALID_ATTRIBUTE_P</code> hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fOVERRIDE"></a>Target Hook: <em>void</em> <strong>TARGET_OPTION_OVERRIDE</strong> <em>(void)</em></dt>
+<dd><p>Sometimes certain combinations of command options do not make sense on
+a particular target machine. You can override the hook
+<code>TARGET_OPTION_OVERRIDE</code> to take account of this. This hooks is called
+once just after all the command options have been parsed.
+</p>
+<p>Don&rsquo;t use this hook to turn on various extra optimizations for
+<samp>-O</samp>. That is what <code>TARGET_OPTION_OPTIMIZATION</code> is for.
+</p>
+<p>If you need to do something whenever the optimization level is
+changed via the optimize attribute or pragma, see
+<code>TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE</code>
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fOPTION_005fFUNCTION_005fVERSIONS"></a>Target Hook: <em>bool</em> <strong>TARGET_OPTION_FUNCTION_VERSIONS</strong> <em>(tree <var>decl1</var>, tree <var>decl2</var>)</em></dt>
+<dd><p>This target hook returns <code>true</code> if <var>DECL1</var> and <var>DECL2</var> are
+versions of the same function. <var>DECL1</var> and <var>DECL2</var> are function
+versions if and only if they have the same function signature and
+different target specific attributes, that is, they are compiled for
+different target machines.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCAN_005fINLINE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_CAN_INLINE_P</strong> <em>(tree <var>caller</var>, tree <var>callee</var>)</em></dt>
+<dd><p>This target hook returns <code>false</code> if the <var>caller</var> function
+cannot inline <var>callee</var>, based on target specific information. By
+default, inlining is not allowed if the callee function has function
+specific target options and the caller does not use the same options.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fUPDATE_005fIPA_005fFN_005fTARGET_005fINFO"></a>Target Hook: <em>bool</em> <strong>TARGET_UPDATE_IPA_FN_TARGET_INFO</strong> <em>(unsigned int&amp; <var>info</var>, const gimple* <var>stmt</var>)</em></dt>
+<dd><p>Allow target to analyze all gimple statements for the given function to
+record and update some target specific information for inlining. A typical
+example is that a caller with one isa feature disabled is normally not
+allowed to inline a callee with that same isa feature enabled even which is
+attributed by always_inline, but with the conservative analysis on all
+statements of the callee if we are able to guarantee the callee does not
+exploit any instructions from the mismatch isa feature, it would be safe to
+allow the caller to inline the callee.
+<var>info</var> is one <code>unsigned int</code> value to record information in which
+one set bit indicates one corresponding feature is detected in the analysis,
+<var>stmt</var> is the statement being analyzed. Return true if target still
+need to analyze the subsequent statements, otherwise return false to stop
+subsequent analysis.
+The default version of this hook returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fNEED_005fIPA_005fFN_005fTARGET_005fINFO"></a>Target Hook: <em>bool</em> <strong>TARGET_NEED_IPA_FN_TARGET_INFO</strong> <em>(const_tree <var>decl</var>, unsigned int&amp; <var>info</var>)</em></dt>
+<dd><p>Allow target to check early whether it is necessary to analyze all gimple
+statements in the given function to update target specific information for
+inlining. See hook <code>update_ipa_fn_target_info</code> for usage example of
+target specific information. This hook is expected to be invoked ahead of
+the iterating with hook <code>update_ipa_fn_target_info</code>.
+<var>decl</var> is the function being analyzed, <var>info</var> is the same as what
+in hook <code>update_ipa_fn_target_info</code>, target can do one time update
+into <var>info</var> without iterating for some case. Return true if target
+decides to analyze all gimple statements to collect information, otherwise
+return false.
+The default version of this hook returns false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fRELAYOUT_005fFUNCTION"></a>Target Hook: <em>void</em> <strong>TARGET_RELAYOUT_FUNCTION</strong> <em>(tree <var>fndecl</var>)</em></dt>
+<dd><p>This target hook fixes function <var>fndecl</var> after attributes are processed.
+Default does nothing. On ARM, the default function&rsquo;s alignment is updated
+with the attribute target.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Emulated-TLS.html#Emulated-TLS" accesskey="n" rel="next">Emulated TLS</a>, Previous: <a href="Mode-Switching.html#Mode-Switching" accesskey="p" rel="previous">Mode Switching</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Target-Fragment.html b/share/doc/gccint/Target-Fragment.html
new file mode 100644
index 0000000..6b245db
--- /dev/null
+++ b/share/doc/gccint/Target-Fragment.html
@@ -0,0 +1,335 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Target Fragment</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Target Fragment">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Target Fragment">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Fragments.html#Fragments" rel="up" title="Fragments">
+<link href="Host-Fragment.html#Host-Fragment" rel="next" title="Host Fragment">
+<link href="Fragments.html#Fragments" rel="previous" title="Fragments">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Target-Fragment"></a>
+<div class="header">
+<p>
+Next: <a href="Host-Fragment.html#Host-Fragment" accesskey="n" rel="next">Host Fragment</a>, Up: <a href="Fragments.html#Fragments" accesskey="u" rel="up">Fragments</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Target-Makefile-Fragments"></a>
+<h3 class="section">20.1 Target Makefile Fragments</h3>
+<a name="index-target-makefile-fragment"></a>
+<a name="index-t_002dtarget"></a>
+
+<p>Target makefile fragments can set these Makefile variables.
+</p>
+<dl compact="compact">
+<dd><a name="index-LIBGCC2_005fCFLAGS"></a>
+</dd>
+<dt><code>LIBGCC2_CFLAGS</code></dt>
+<dd><p>Compiler flags to use when compiling <samp>libgcc2.c</samp>.
+</p>
+<a name="index-LIB2FUNCS_005fEXTRA"></a>
+</dd>
+<dt><code>LIB2FUNCS_EXTRA</code></dt>
+<dd><p>A list of source file names to be compiled or assembled and inserted
+into <samp>libgcc.a</samp>.
+</p>
+<a name="index-CRTSTUFF_005fT_005fCFLAGS"></a>
+</dd>
+<dt><code>CRTSTUFF_T_CFLAGS</code></dt>
+<dd><p>Special flags used when compiling <samp>crtstuff.c</samp>.
+See <a href="Initialization.html#Initialization">Initialization</a>.
+</p>
+<a name="index-CRTSTUFF_005fT_005fCFLAGS_005fS"></a>
+</dd>
+<dt><code>CRTSTUFF_T_CFLAGS_S</code></dt>
+<dd><p>Special flags used when compiling <samp>crtstuff.c</samp> for shared
+linking. Used if you use <samp>crtbeginS.o</samp> and <samp>crtendS.o</samp>
+in <code>EXTRA-PARTS</code>.
+See <a href="Initialization.html#Initialization">Initialization</a>.
+</p>
+<a name="index-MULTILIB_005fOPTIONS"></a>
+</dd>
+<dt><code>MULTILIB_OPTIONS</code></dt>
+<dd><p>For some targets, invoking GCC in different ways produces objects
+that cannot be linked together. For example, for some targets GCC
+produces both big and little endian code. For these targets, you must
+arrange for multiple versions of <samp>libgcc.a</samp> to be compiled, one for
+each set of incompatible options. When GCC invokes the linker, it
+arranges to link in the right version of <samp>libgcc.a</samp>, based on
+the command line options used.
+</p>
+<p>The <code>MULTILIB_OPTIONS</code> macro lists the set of options for which
+special versions of <samp>libgcc.a</samp> must be built. Write options that
+are mutually incompatible side by side, separated by a slash. Write
+options that may be used together separated by a space. The build
+procedure will build all combinations of compatible options.
+</p>
+<p>For example, if you set <code>MULTILIB_OPTIONS</code> to &lsquo;<samp>m68000/m68020
+msoft-float</samp>&rsquo;, <samp>Makefile</samp> will build special versions of
+<samp>libgcc.a</samp> using the following sets of options: <samp>-m68000</samp>,
+<samp>-m68020</samp>, <samp>-msoft-float</samp>, &lsquo;<samp>-m68000 -msoft-float</samp>&rsquo;, and
+&lsquo;<samp>-m68020 -msoft-float</samp>&rsquo;.
+</p>
+<a name="index-MULTILIB_005fDIRNAMES"></a>
+</dd>
+<dt><code>MULTILIB_DIRNAMES</code></dt>
+<dd><p>If <code>MULTILIB_OPTIONS</code> is used, this variable specifies the
+directory names that should be used to hold the various libraries.
+Write one element in <code>MULTILIB_DIRNAMES</code> for each element in
+<code>MULTILIB_OPTIONS</code>. If <code>MULTILIB_DIRNAMES</code> is not used, the
+default value will be <code>MULTILIB_OPTIONS</code>, with all slashes treated
+as spaces.
+</p>
+<p><code>MULTILIB_DIRNAMES</code> describes the multilib directories using GCC
+conventions and is applied to directories that are part of the GCC
+installation. When multilib-enabled, the compiler will add a
+subdirectory of the form <var>prefix</var>/<var>multilib</var> before each
+directory in the search path for libraries and crt files.
+</p>
+<p>For example, if <code>MULTILIB_OPTIONS</code> is set to &lsquo;<samp>m68000/m68020
+msoft-float</samp>&rsquo;, then the default value of <code>MULTILIB_DIRNAMES</code> is
+&lsquo;<samp>m68000 m68020 msoft-float</samp>&rsquo;. You may specify a different value if
+you desire a different set of directory names.
+</p>
+<a name="index-MULTILIB_005fMATCHES"></a>
+</dd>
+<dt><code>MULTILIB_MATCHES</code></dt>
+<dd><p>Sometimes the same option may be written in two different ways. If an
+option is listed in <code>MULTILIB_OPTIONS</code>, GCC needs to know about
+any synonyms. In that case, set <code>MULTILIB_MATCHES</code> to a list of
+items of the form &lsquo;<samp>option=option</samp>&rsquo; to describe all relevant
+synonyms. For example, &lsquo;<samp>m68000=mc68000 m68020=mc68020</samp>&rsquo;.
+</p>
+<a name="index-MULTILIB_005fEXCEPTIONS"></a>
+</dd>
+<dt><code>MULTILIB_EXCEPTIONS</code></dt>
+<dd><p>Sometimes when there are multiple sets of <code>MULTILIB_OPTIONS</code> being
+specified, there are combinations that should not be built. In that
+case, set <code>MULTILIB_EXCEPTIONS</code> to be all of the switch exceptions
+in shell case syntax that should not be built.
+</p>
+<p>For example the ARM processor cannot execute both hardware floating
+point instructions and the reduced size THUMB instructions at the same
+time, so there is no need to build libraries with both of these
+options enabled. Therefore <code>MULTILIB_EXCEPTIONS</code> is set to:
+</p><div class="smallexample">
+<pre class="smallexample">*mthumb/*mhard-float*
+</pre></div>
+
+<a name="index-MULTILIB_005fREQUIRED"></a>
+</dd>
+<dt><code>MULTILIB_REQUIRED</code></dt>
+<dd><p>Sometimes when there are only a few combinations are required, it would
+be a big effort to come up with a <code>MULTILIB_EXCEPTIONS</code> list to
+cover all undesired ones. In such a case, just listing all the required
+combinations in <code>MULTILIB_REQUIRED</code> would be more straightforward.
+</p>
+<p>The way to specify the entries in <code>MULTILIB_REQUIRED</code> is same with
+the way used for <code>MULTILIB_EXCEPTIONS</code>, only this time what are
+required will be specified. Suppose there are multiple sets of
+<code>MULTILIB_OPTIONS</code> and only two combinations are required, one
+for ARMv7-M and one for ARMv7-R with hard floating-point ABI and FPU, the
+<code>MULTILIB_REQUIRED</code> can be set to:
+</p><div class="smallexample">
+<pre class="smallexample"><code>MULTILIB_REQUIRED</code> = mthumb/march=armv7-m
+<code>MULTILIB_REQUIRED</code> += march=armv7-r/mfloat-abi=hard/mfpu=vfpv3-d16
+</pre></div>
+
+<p>The <code>MULTILIB_REQUIRED</code> can be used together with
+<code>MULTILIB_EXCEPTIONS</code>. The option combinations generated from
+<code>MULTILIB_OPTIONS</code> will be filtered by <code>MULTILIB_EXCEPTIONS</code>
+and then by <code>MULTILIB_REQUIRED</code>.
+</p>
+<a name="index-MULTILIB_005fREUSE"></a>
+</dd>
+<dt><code>MULTILIB_REUSE</code></dt>
+<dd><p>Sometimes it is desirable to reuse one existing multilib for different
+sets of options. Such kind of reuse can minimize the number of multilib
+variants. And for some targets it is better to reuse an existing multilib
+than to fall back to default multilib when there is no corresponding multilib.
+This can be done by adding reuse rules to <code>MULTILIB_REUSE</code>.
+</p>
+<p>A reuse rule is comprised of two parts connected by equality sign. The left
+part is the option set used to build multilib and the right part is the option
+set that will reuse this multilib. Both parts should only use options
+specified in <code>MULTILIB_OPTIONS</code> and the equality signs found in options
+name should be replaced with periods. An explicit period in the rule can be
+escaped by preceding it with a backslash. The order of options in the left
+part matters and should be same with those specified in
+<code>MULTILIB_REQUIRED</code> or aligned with the order in <code>MULTILIB_OPTIONS</code>.
+There is no such limitation for options in the right part as we don&rsquo;t build
+multilib from them.
+</p>
+<p><code>MULTILIB_REUSE</code> is different from <code>MULTILIB_MATCHES</code> in that it
+sets up relations between two option sets rather than two options. Here is an
+example to demo how we reuse libraries built in Thumb mode for applications built
+in ARM mode:
+</p><div class="smallexample">
+<pre class="smallexample"><code>MULTILIB_REUSE</code> = mthumb/march.armv7-r=marm/march.armv7-r
+</pre></div>
+
+<p>Before the advent of <code>MULTILIB_REUSE</code>, GCC select multilib by comparing command
+line options with options used to build multilib. The <code>MULTILIB_REUSE</code> is
+complementary to that way. Only when the original comparison matches nothing it will
+work to see if it is OK to reuse some existing multilib.
+</p>
+<a name="index-MULTILIB_005fEXTRA_005fOPTS"></a>
+</dd>
+<dt><code>MULTILIB_EXTRA_OPTS</code></dt>
+<dd><p>Sometimes it is desirable that when building multiple versions of
+<samp>libgcc.a</samp> certain options should always be passed on to the
+compiler. In that case, set <code>MULTILIB_EXTRA_OPTS</code> to be the list
+of options to be used for all builds. If you set this, you should
+probably set <code>CRTSTUFF_T_CFLAGS</code> to a dash followed by it.
+</p>
+<a name="index-MULTILIB_005fOSDIRNAMES"></a>
+</dd>
+<dt><code>MULTILIB_OSDIRNAMES</code></dt>
+<dd><p>If <code>MULTILIB_OPTIONS</code> is used, this variable specifies
+a list of subdirectory names, that are used to modify the search
+path depending on the chosen multilib. Unlike <code>MULTILIB_DIRNAMES</code>,
+<code>MULTILIB_OSDIRNAMES</code> describes the multilib directories using
+operating systems conventions, and is applied to the directories such as
+<code>lib</code> or those in the <code>LIBRARY_PATH</code> environment variable.
+The format is either the same as of
+<code>MULTILIB_DIRNAMES</code>, or a set of mappings. When it is the same
+as <code>MULTILIB_DIRNAMES</code>, it describes the multilib directories
+using operating system conventions, rather than GCC conventions. When it is a set
+of mappings of the form <var>gccdir</var>=<var>osdir</var>, the left side gives
+the GCC convention and the right gives the equivalent OS defined
+location. If the <var>osdir</var> part begins with a &lsquo;<samp>!</samp>&rsquo;,
+GCC will not search in the non-multilib directory and use
+exclusively the multilib directory. Otherwise, the compiler will
+examine the search path for libraries and crt files twice; the first
+time it will add <var>multilib</var> to each directory in the search path,
+the second it will not.
+</p>
+<p>For configurations that support both multilib and multiarch,
+<code>MULTILIB_OSDIRNAMES</code> also encodes the multiarch name, thus
+subsuming <code>MULTIARCH_DIRNAME</code>. The multiarch name is appended to
+each directory name, separated by a colon (e.g.
+&lsquo;<samp>../lib32:i386-linux-gnu</samp>&rsquo;).
+</p>
+<p>Each multiarch subdirectory will be searched before the corresponding OS
+multilib directory, for example &lsquo;<samp>/lib/i386-linux-gnu</samp>&rsquo; before
+&lsquo;<samp>/lib/../lib32</samp>&rsquo;. The multiarch name will also be used to modify the
+system header search path, as explained for <code>MULTIARCH_DIRNAME</code>.
+</p>
+<a name="index-MULTIARCH_005fDIRNAME"></a>
+</dd>
+<dt><code>MULTIARCH_DIRNAME</code></dt>
+<dd><p>This variable specifies the multiarch name for configurations that are
+multiarch-enabled but not multilibbed configurations.
+</p>
+<p>The multiarch name is used to augment the search path for libraries, crt
+files and system header files with additional locations. The compiler
+will add a multiarch subdirectory of the form
+<var>prefix</var>/<var>multiarch</var> before each directory in the library and
+crt search path. It will also add two directories
+<code>LOCAL_INCLUDE_DIR</code>/<var>multiarch</var> and
+<code>NATIVE_SYSTEM_HEADER_DIR</code>/<var>multiarch</var>) to the system header
+search path, respectively before <code>LOCAL_INCLUDE_DIR</code> and
+<code>NATIVE_SYSTEM_HEADER_DIR</code>.
+</p>
+<p><code>MULTIARCH_DIRNAME</code> is not used for configurations that support
+both multilib and multiarch. In that case, multiarch names are encoded
+in <code>MULTILIB_OSDIRNAMES</code> instead.
+</p>
+<p>More documentation about multiarch can be found at
+<a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
+</p>
+<a name="index-SPECS"></a>
+</dd>
+<dt><code>SPECS</code></dt>
+<dd><p>Unfortunately, setting <code>MULTILIB_EXTRA_OPTS</code> is not enough, since
+it does not affect the build of target libraries, at least not the
+build of the default multilib. One possible work-around is to use
+<code>DRIVER_SELF_SPECS</code> to bring options from the <samp>specs</samp> file
+as if they had been passed in the compiler driver command line.
+However, you don&rsquo;t want to be adding these options after the toolchain
+is installed, so you can instead tweak the <samp>specs</samp> file that will
+be used during the toolchain build, while you still install the
+original, built-in <samp>specs</samp>. The trick is to set <code>SPECS</code> to
+some other filename (say <samp>specs.install</samp>), that will then be
+created out of the built-in specs, and introduce a <samp>Makefile</samp>
+rule to generate the <samp>specs</samp> file that&rsquo;s going to be used at
+build time out of your <samp>specs.install</samp>.
+</p>
+</dd>
+<dt><code>T_CFLAGS</code></dt>
+<dd><p>These are extra flags to pass to the C compiler. They are used both
+when building GCC, and when compiling things with the just-built GCC.
+This variable is deprecated and should not be used.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Host-Fragment.html#Host-Fragment" accesskey="n" rel="next">Host Fragment</a>, Up: <a href="Fragments.html#Fragments" accesskey="u" rel="up">Fragments</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Target-Macros.html b/share/doc/gccint/Target-Macros.html
new file mode 100644
index 0000000..91df657
--- /dev/null
+++ b/share/doc/gccint/Target-Macros.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Target Macros</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Target Macros">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Target Macros">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Target-Structure.html#Target-Structure" rel="next" title="Target Structure">
+<link href="Parameterized-Names.html#Parameterized-Names" rel="previous" title="Parameterized Names">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Target-Macros"></a>
+<div class="header">
+<p>
+Next: <a href="Host-Config.html#Host-Config" accesskey="n" rel="next">Host Config</a>, Previous: <a href="Machine-Desc.html#Machine-Desc" accesskey="p" rel="previous">Machine Desc</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Target-Description-Macros-and-Functions"></a>
+<h2 class="chapter">18 Target Description Macros and Functions</h2>
+<a name="index-machine-description-macros"></a>
+<a name="index-target-description-macros"></a>
+<a name="index-macros_002c-target-description"></a>
+<a name="index-tm_002eh-macros"></a>
+
+<p>In addition to the file <samp><var>machine</var>.md</samp>, a machine description
+includes a C header file conventionally given the name
+<samp><var>machine</var>.h</samp> and a C source file named <samp><var>machine</var>.c</samp>.
+The header file defines numerous macros that convey the information
+about the target machine that does not fit into the scheme of the
+<samp>.md</samp> file. The file <samp>tm.h</samp> should be a link to
+<samp><var>machine</var>.h</samp>. The header file <samp>config.h</samp> includes
+<samp>tm.h</samp> and most compiler source files include <samp>config.h</samp>. The
+source file defines a variable <code>targetm</code>, which is a structure
+containing pointers to functions and data relating to the target
+machine. <samp><var>machine</var>.c</samp> should also contain their definitions,
+if they are not defined elsewhere in GCC, and other functions called
+through the macros defined in the <samp>.h</samp> file.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Target-Structure.html#Target-Structure" accesskey="1">Target Structure</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The <code>targetm</code> variable.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Driver.html#Driver" accesskey="2">Driver</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling how the driver runs the compilation passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Run_002dtime-Target.html#Run_002dtime-Target" accesskey="3">Run-time Target</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining &lsquo;<samp>-m</samp>&rsquo; options like <samp>-m68000</samp> and <samp>-m68020</samp>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Per_002dFunction-Data.html#Per_002dFunction-Data" accesskey="4">Per-Function Data</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining data structures for per-function information.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Storage-Layout.html#Storage-Layout" accesskey="5">Storage Layout</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining sizes and alignments of data.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Layout.html#Type-Layout" accesskey="6">Type Layout</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining sizes and properties of basic user data types.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Registers.html#Registers" accesskey="7">Registers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Naming and describing the hardware registers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Register-Classes.html#Register-Classes" accesskey="8">Register Classes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining the classes of hardware registers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="9">Stack and Calling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining which way the stack grows and by how much.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Varargs.html#Varargs">Varargs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining the varargs macros.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Trampolines.html#Trampolines">Trampolines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Code set up at run time to enter a nested function.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Library-Calls.html#Library-Calls">Library Calls</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling how library routines are implicitly called.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Addressing-Modes.html#Addressing-Modes">Addressing Modes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining addressing modes valid for memory operands.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Anchored-Addresses.html#Anchored-Addresses">Anchored Addresses</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining how <samp>-fsection-anchors</samp> should work.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Condition-Code.html#Condition-Code">Condition Code</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining how insns update the condition code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Costs.html#Costs">Costs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining relative costs of different operations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scheduling.html#Scheduling">Scheduling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Adjusting the behavior of the instruction scheduler.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sections.html#Sections">Sections</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dividing storage into text, data, and other sections.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="PIC.html#PIC">PIC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros for position independent code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Assembler-Format.html#Assembler-Format">Assembler Format</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining how to write insns and pseudo-ops to output.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Debugging-Info.html#Debugging-Info">Debugging Info</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining the format of debugging output.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Floating-Point.html#Floating-Point">Floating Point</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Handling floating point for cross-compilers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Mode-Switching.html#Mode-Switching">Mode Switching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Insertion of mode-switching instructions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Target-Attributes.html#Target-Attributes">Target Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining target-specific uses of <code>__attribute__</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Emulated-TLS.html#Emulated-TLS">Emulated TLS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Emulated TLS support.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="MIPS-Coprocessors.html#MIPS-Coprocessors">MIPS Coprocessors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MIPS coprocessor support and how to customize it.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="PCH-Target.html#PCH-Target">PCH Target</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Validity checking for precompiled headers.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="C_002b_002b-ABI.html#C_002b_002b-ABI">C++ ABI</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling C++ ABI changes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="D-Language-and-ABI.html#D-Language-and-ABI">D Language and ABI</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling D ABI changes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Named-Address-Spaces.html#Named-Address-Spaces">Named Address Spaces</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Adding support for named address spaces
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Misc.html#Misc">Misc</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Everything else.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Host-Config.html#Host-Config" accesskey="n" rel="next">Host Config</a>, Previous: <a href="Machine-Desc.html#Machine-Desc" accesskey="p" rel="previous">Machine Desc</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Target-Structure.html b/share/doc/gccint/Target-Structure.html
new file mode 100644
index 0000000..e29f12f
--- /dev/null
+++ b/share/doc/gccint/Target-Structure.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Target Structure</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Target Structure">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Target Structure">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Driver.html#Driver" rel="next" title="Driver">
+<link href="Target-Macros.html#Target-Macros" rel="previous" title="Target Macros">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Target-Structure"></a>
+<div class="header">
+<p>
+Next: <a href="Driver.html#Driver" accesskey="n" rel="next">Driver</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Global-targetm-Variable"></a>
+<h3 class="section">18.1 The Global <code>targetm</code> Variable</h3>
+<a name="index-target-hooks"></a>
+<a name="index-target-functions"></a>
+
+<dl>
+<dt><a name="index-targetm"></a>Variable: <em>struct gcc_target</em> <strong>targetm</strong></dt>
+<dd><p>The target <samp>.c</samp> file must define the global <code>targetm</code> variable
+which contains pointers to functions and data relating to the target
+machine. The variable is declared in <samp>target.h</samp>;
+<samp>target-def.h</samp> defines the macro <code>TARGET_INITIALIZER</code> which is
+used to initialize the variable, and macros for the default initializers
+for elements of the structure. The <samp>.c</samp> file should override those
+macros for which the default definition is inappropriate. For example:
+</p><div class="smallexample">
+<pre class="smallexample">#include &quot;target.h&quot;
+#include &quot;target-def.h&quot;
+
+/* <span class="roman">Initialize the GCC target structure.</span> */
+
+#undef TARGET_COMP_TYPE_ATTRIBUTES
+#define TARGET_COMP_TYPE_ATTRIBUTES <var>machine</var>_comp_type_attributes
+
+struct gcc_target targetm = TARGET_INITIALIZER;
+</pre></div>
+</dd></dl>
+
+<p>Where a macro should be defined in the <samp>.c</samp> file in this manner to
+form part of the <code>targetm</code> structure, it is documented below as a
+&ldquo;Target Hook&rdquo; with a prototype. Many macros will change in future
+from being defined in the <samp>.h</samp> file to being part of the
+<code>targetm</code> structure.
+</p>
+<p>Similarly, there is a <code>targetcm</code> variable for hooks that are
+specific to front ends for C-family languages, documented as &ldquo;C
+Target Hook&rdquo;. This is declared in <samp>c-family/c-target.h</samp>, the
+initializer <code>TARGETCM_INITIALIZER</code> in
+<samp>c-family/c-target-def.h</samp>. If targets initialize <code>targetcm</code>
+themselves, they should set <code>target_has_targetcm=yes</code> in
+<samp>config.gcc</samp>; otherwise a default definition is used.
+</p>
+<p>Similarly, there is a <code>targetm_common</code> variable for hooks that
+are shared between the compiler driver and the compilers proper,
+documented as &ldquo;Common Target Hook&rdquo;. This is declared in
+<samp>common/common-target.h</samp>, the initializer
+<code>TARGETM_COMMON_INITIALIZER</code> in
+<samp>common/common-target-def.h</samp>. If targets initialize
+<code>targetm_common</code> themselves, they should set
+<code>target_has_targetm_common=yes</code> in <samp>config.gcc</samp>; otherwise a
+default definition is used.
+</p>
+<p>Similarly, there is a <code>targetdm</code> variable for hooks that are
+specific to the D language front end, documented as &ldquo;D Target Hook&rdquo;.
+This is declared in <samp>d/d-target.h</samp>, the initializer
+<code>TARGETDM_INITIALIZER</code> in <samp>d/d-target-def.h</samp>. If targets
+initialize <code>targetdm</code> themselves, they should set
+<code>target_has_targetdm=yes</code> in <samp>config.gcc</samp>; otherwise a default
+definition is used.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Driver.html#Driver" accesskey="n" rel="next">Driver</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Temporaries.html b/share/doc/gccint/Temporaries.html
new file mode 100644
index 0000000..8cca0a7
--- /dev/null
+++ b/share/doc/gccint/Temporaries.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Temporaries</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Temporaries">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Temporaries">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Operands.html#Operands" rel="next" title="Operands">
+<link href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling" rel="previous" title="GIMPLE Exception Handling">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Temporaries"></a>
+<div class="header">
+<p>
+Next: <a href="Operands.html#Operands" accesskey="n" rel="next">Operands</a>, Previous: <a href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling" accesskey="p" rel="previous">GIMPLE Exception Handling</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Temporaries-1"></a>
+<h3 class="section">12.5 Temporaries</h3>
+<a name="index-Temporaries"></a>
+
+<p>When gimplification encounters a subexpression that is too
+complex, it creates a new temporary variable to hold the value of
+the subexpression, and adds a new statement to initialize it
+before the current statement. These special temporaries are known
+as &lsquo;<samp>expression temporaries</samp>&rsquo;, and are allocated using
+<code>get_formal_tmp_var</code>. The compiler tries to always evaluate
+identical expressions into the same temporary, to simplify
+elimination of redundant calculations.
+</p>
+<p>We can only use expression temporaries when we know that it will
+not be reevaluated before its value is used, and that it will not
+be otherwise modified<a name="DOCF3" href="#FOOT3"><sup>3</sup></a>. Other temporaries can be allocated
+using <code>get_initialized_tmp_var</code> or <code>create_tmp_var</code>.
+</p>
+<p>Currently, an expression like <code>a = b + 5</code> is not reduced any
+further. We tried converting it to something like
+</p><div class="smallexample">
+<pre class="smallexample">T1 = b + 5;
+a = T1;
+</pre></div>
+<p>but this bloated the representation for minimal benefit. However, a
+variable which must live in memory cannot appear in an expression; its
+value is explicitly loaded into a temporary first. Similarly, storing
+the value of an expression to a memory variable goes through a
+temporary.
+</p>
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT3" href="#DOCF3">(3)</a></h3>
+<p>These restrictions are derived
+from those in Morgan 4.8.</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Test-Directives.html b/share/doc/gccint/Test-Directives.html
new file mode 100644
index 0000000..0f77020
--- /dev/null
+++ b/share/doc/gccint/Test-Directives.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Test Directives</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Test Directives">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Test Directives">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="Directives.html#Directives" rel="next" title="Directives">
+<link href="Test-Idioms.html#Test-Idioms" rel="previous" title="Test Idioms">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Test-Directives"></a>
+<div class="header">
+<p>
+Next: <a href="Ada-Tests.html#Ada-Tests" accesskey="n" rel="next">Ada Tests</a>, Previous: <a href="Test-Idioms.html#Test-Idioms" accesskey="p" rel="previous">Test Idioms</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Directives-used-within-DejaGnu-tests"></a>
+<h3 class="section">7.2 Directives used within DejaGnu tests</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Directives.html#Directives" accesskey="1">Directives</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax and descriptions of test directives.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Selectors.html#Selectors" accesskey="2">Selectors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Selecting targets to which a test applies.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="3">Effective-Target Keywords</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Keywords describing target attributes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Add-Options.html#Add-Options" accesskey="4">Add Options</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Features for <code>dg-add-options</code>
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Require-Support.html#Require-Support" accesskey="5">Require Support</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variants of <code>dg-require-<var>support</var></code>
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Final-Actions.html#Final-Actions" accesskey="6">Final Actions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands for use in <code>dg-final</code>
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Test-Idioms.html b/share/doc/gccint/Test-Idioms.html
new file mode 100644
index 0000000..a122a9b
--- /dev/null
+++ b/share/doc/gccint/Test-Idioms.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Test Idioms</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Test Idioms">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Test Idioms">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="Test-Directives.html#Test-Directives" rel="next" title="Test Directives">
+<link href="Testsuites.html#Testsuites" rel="previous" title="Testsuites">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Test-Idioms"></a>
+<div class="header">
+<p>
+Next: <a href="Test-Directives.html#Test-Directives" accesskey="n" rel="next">Test Directives</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Idioms-Used-in-Testsuite-Code"></a>
+<h3 class="section">7.1 Idioms Used in Testsuite Code</h3>
+
+<p>In general, C testcases have a trailing <samp>-<var>n</var>.c</samp>, starting
+with <samp>-1.c</samp>, in case other testcases with similar names are added
+later. If the test is a test of some well-defined feature, it should
+have a name referring to that feature such as
+<samp><var>feature</var>-1.c</samp>. If it does not test a well-defined feature
+but just happens to exercise a bug somewhere in the compiler, and a
+bug report has been filed for this bug in the GCC bug database,
+<samp>pr<var>bug-number</var>-1.c</samp> is the appropriate form of name.
+Otherwise (for miscellaneous bugs not filed in the GCC bug database),
+and previously more generally, test cases are named after the date on
+which they were added. This allows people to tell at a glance whether
+a test failure is because of a recently found bug that has not yet
+been fixed, or whether it may be a regression, but does not give any
+other information about the bug or where discussion of it may be
+found. Some other language testsuites follow similar conventions.
+</p>
+<p>In the <samp>gcc.dg</samp> testsuite, it is often necessary to test that an
+error is indeed a hard error and not just a warning&mdash;for example,
+where it is a constraint violation in the C standard, which must
+become an error with <samp>-pedantic-errors</samp>. The following idiom,
+where the first line shown is line <var>line</var> of the file and the line
+that generates the error, is used for this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">/* { dg-bogus &quot;warning&quot; &quot;warning in place of error&quot; } */
+/* { dg-error &quot;<var>regexp</var>&quot; &quot;<var>message</var>&quot; { target *-*-* } <var>line</var> } */
+</pre></div>
+
+<p>It may be necessary to check that an expression is an integer constant
+expression and has a certain value. To check that <code><var>E</var></code> has
+value <code><var>V</var></code>, an idiom similar to the following is used:
+</p>
+<div class="smallexample">
+<pre class="smallexample">char x[((E) == (V) ? 1 : -1)];
+</pre></div>
+
+<p>In <samp>gcc.dg</samp> tests, <code>__typeof__</code> is sometimes used to make
+assertions about the types of expressions. See, for example,
+<samp>gcc.dg/c99-condexpr-1.c</samp>. The more subtle uses depend on the
+exact rules for the types of conditional expressions in the C
+standard; see, for example, <samp>gcc.dg/c99-intconst-1.c</samp>.
+</p>
+<p>It is useful to be able to test that optimizations are being made
+properly. This cannot be done in all cases, but it can be done where
+the optimization will lead to code being optimized away (for example,
+where flow analysis or alias analysis should show that certain code
+cannot be called) or to functions not being called because they have
+been expanded as built-in functions. Such tests go in
+<samp>gcc.c-torture/execute</samp>. Where code should be optimized away, a
+call to a nonexistent function such as <code>link_failure ()</code> may be
+inserted; a definition
+</p>
+<div class="smallexample">
+<pre class="smallexample">#ifndef __OPTIMIZE__
+void
+link_failure (void)
+{
+ abort ();
+}
+#endif
+</pre></div>
+
+<p>will also be needed so that linking still succeeds when the test is
+run without optimization. When all calls to a built-in function
+should have been optimized and no calls to the non-built-in version of
+the function should remain, that function may be defined as
+<code>static</code> to call <code>abort ()</code> (although redeclaring a function
+as static may not work on all targets).
+</p>
+<p>All testcases must be portable. Target-specific testcases must have
+appropriate code to avoid causing failures on unsupported systems;
+unfortunately, the mechanisms for this differ by directory.
+</p>
+<p>FIXME: discuss non-C testsuites here.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Test-Directives.html#Test-Directives" accesskey="n" rel="next">Test Directives</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Testsuites.html b/share/doc/gccint/Testsuites.html
new file mode 100644
index 0000000..e864951
--- /dev/null
+++ b/share/doc/gccint/Testsuites.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Testsuites</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Testsuites">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Testsuites">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Test-Idioms.html#Test-Idioms" rel="next" title="Test Idioms">
+<link href="Back-End.html#Back-End" rel="previous" title="Back End">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Testsuites"></a>
+<div class="header">
+<p>
+Next: <a href="Options.html#Options" accesskey="n" rel="next">Options</a>, Previous: <a href="Source-Tree.html#Source-Tree" accesskey="p" rel="previous">Source Tree</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Testsuites-1"></a>
+<h2 class="chapter">7 Testsuites</h2>
+
+<p>GCC contains several testsuites to help maintain compiler quality.
+Most of the runtime libraries and language front ends in GCC have
+testsuites. Currently only the C language testsuites are documented
+here; FIXME: document the others.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Test-Idioms.html#Test-Idioms" accesskey="1">Test Idioms</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Idioms used in testsuite code.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Test-Directives.html#Test-Directives" accesskey="2">Test Directives</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives used within DejaGnu tests.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Ada-Tests.html#Ada-Tests" accesskey="3">Ada Tests</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The Ada language testsuites.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="C-Tests.html#C-Tests" accesskey="4">C Tests</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The C language testsuites.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="LTO-Testing.html#LTO-Testing" accesskey="5">LTO Testing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing link-time optimizations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="gcov-Testing.html#gcov-Testing" accesskey="6">gcov Testing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing gcov.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="profopt-Testing.html#profopt-Testing" accesskey="7">profopt Testing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing profile-directed optimizations.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="compat-Testing.html#compat-Testing" accesskey="8">compat Testing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing binary compatibility.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Torture-Tests.html#Torture-Tests" accesskey="9">Torture Tests</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for torture testing using multiple options.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE-Tests.html#GIMPLE-Tests">GIMPLE Tests</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing GIMPLE passes.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL-Tests.html#RTL-Tests">RTL Tests</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Support for testing RTL passes.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Texinfo-Manuals.html b/share/doc/gccint/Texinfo-Manuals.html
new file mode 100644
index 0000000..74d6092
--- /dev/null
+++ b/share/doc/gccint/Texinfo-Manuals.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Texinfo Manuals</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Texinfo Manuals">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Texinfo Manuals">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Documentation.html#Documentation" rel="up" title="Documentation">
+<link href="Man-Page-Generation.html#Man-Page-Generation" rel="next" title="Man Page Generation">
+<link href="Documentation.html#Documentation" rel="previous" title="Documentation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Texinfo-Manuals"></a>
+<div class="header">
+<p>
+Next: <a href="Man-Page-Generation.html#Man-Page-Generation" accesskey="n" rel="next">Man Page Generation</a>, Up: <a href="Documentation.html#Documentation" accesskey="u" rel="up">Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Texinfo-Manuals-1"></a>
+<h4 class="subsubsection">6.3.7.1 Texinfo Manuals</h4>
+
+<p>The manuals for GCC as a whole, and the C and C++ front ends, are in
+files <samp>doc/*.texi</samp>. Other front ends have their own manuals in
+files <samp><var>language</var>/*.texi</samp>. Common files
+<samp>doc/include/*.texi</samp> are provided which may be included in
+multiple manuals; the following files are in <samp>doc/include</samp>:
+</p>
+<dl compact="compact">
+<dt><samp>fdl.texi</samp></dt>
+<dd><p>The GNU Free Documentation License.
+</p></dd>
+<dt><samp>funding.texi</samp></dt>
+<dd><p>The section &ldquo;Funding Free Software&rdquo;.
+</p></dd>
+<dt><samp>gcc-common.texi</samp></dt>
+<dd><p>Common definitions for manuals.
+</p></dd>
+<dt><samp>gpl_v3.texi</samp></dt>
+<dd><p>The GNU General Public License.
+</p></dd>
+<dt><samp>texinfo.tex</samp></dt>
+<dd><p>A copy of <samp>texinfo.tex</samp> known to work with the GCC manuals.
+</p></dd>
+</dl>
+
+<p>DVI-formatted manuals are generated by &lsquo;<samp>make dvi</samp>&rsquo;, which uses
+<code>texi2dvi</code> (via the Makefile macro <code>$(TEXI2DVI)</code>).
+PDF-formatted manuals are generated by &lsquo;<samp>make pdf</samp>&rsquo;, which uses
+<code>texi2pdf</code> (via the Makefile macro <code>$(TEXI2PDF)</code>). HTML
+formatted manuals are generated by &lsquo;<samp>make html</samp>&rsquo;. Info
+manuals are generated by &lsquo;<samp>make info</samp>&rsquo; (which is run as part of
+a bootstrap); this generates the manuals in the source directory,
+using <code>makeinfo</code> via the Makefile macro <code>$(MAKEINFO)</code>,
+and they are included in release distributions.
+</p>
+<p>Manuals are also provided on the GCC web site, in both HTML and
+PostScript forms. This is done via the script
+<samp>maintainer-scripts/update_web_docs_git</samp>. Each manual to be
+provided online must be listed in the definition of <code>MANUALS</code> in
+that file; a file <samp><var>name</var>.texi</samp> must only appear once in the
+source tree, and the output manual must have the same name as the
+source file. (However, other Texinfo files, included in manuals but
+not themselves the root files of manuals, may have names that appear
+more than once in the source tree.) The manual file
+<samp><var>name</var>.texi</samp> should only include other files in its own
+directory or in <samp>doc/include</samp>. HTML manuals will be generated by
+&lsquo;<samp>makeinfo --html</samp>&rsquo;, PostScript manuals by <code>texi2dvi</code>
+and <code>dvips</code>, and PDF manuals by <code>texi2pdf</code>.
+All Texinfo files that are parts of manuals must
+be version-controlled, even if they are generated files, for the
+generation of online manuals to work.
+</p>
+<p>The installation manual, <samp>doc/install.texi</samp>, is also provided on
+the GCC web site. The HTML version is generated by the script
+<samp>doc/install.texi2html</samp>.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Man-Page-Generation.html#Man-Page-Generation" accesskey="n" rel="next">Man Page Generation</a>, Up: <a href="Documentation.html#Documentation" accesskey="u" rel="up">Documentation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/The-Language.html b/share/doc/gccint/The-Language.html
new file mode 100644
index 0000000..c1497fc
--- /dev/null
+++ b/share/doc/gccint/The-Language.html
@@ -0,0 +1,464 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: The Language</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: The Language">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: The Language">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Match-and-Simplify.html#Match-and-Simplify" rel="up" title="Match and Simplify">
+<link href="Static-Analyzer.html#Static-Analyzer" rel="next" title="Static Analyzer">
+<link href="GIMPLE-API.html#GIMPLE-API" rel="previous" title="GIMPLE API">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="The-Language"></a>
+<div class="header">
+<p>
+Previous: <a href="GIMPLE-API.html#GIMPLE-API" accesskey="p" rel="previous">GIMPLE API</a>, Up: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="u" rel="up">Match and Simplify</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-Language-1"></a>
+<h3 class="section">26.2 The Language</h3>
+<a name="index-The-Language"></a>
+
+<p>The language in which to write expression simplifications resembles
+other domain-specific languages GCC uses. Thus it is lispy. Let&rsquo;s
+start with an example from the match.pd file:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (bit_and @0 integer_all_onesp)
+ @0)
+</pre></div>
+
+<p>This example contains all required parts of an expression simplification.
+A simplification is wrapped inside a <code>(simplify ...)</code> expression.
+That contains at least two operands - an expression that is matched
+with the GIMPLE or GENERIC IL and a replacement expression that is
+returned if the match was successful.
+</p>
+<p>Expressions have an operator ID, <code>bit_and</code> in this case. Expressions can
+be lower-case tree codes with <code>_expr</code> stripped off or builtin
+function code names in all-caps, like <code>BUILT_IN_SQRT</code>.
+</p>
+<p><code>@n</code> denotes a so-called capture. It captures the operand and lets
+you refer to it in other places of the match-and-simplify. In the
+above example it is referred to in the replacement expression. Captures
+are <code>@</code> followed by a number or an identifier.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (bit_xor @0 @0)
+ { build_zero_cst (type); })
+</pre></div>
+
+<p>In this example <code>@0</code> is mentioned twice which constrains the matched
+expression to have two equal operands. Usually matches are constrained
+to equal types. If operands may be constants and conversions are involved,
+matching by value might be preferred in which case use <code>@@0</code> to
+denote a by-value match and the specific operand you want to refer to
+in the result part. This example also introduces
+operands written in C code. These can be used in the expression
+replacements and are supposed to evaluate to a tree node which has to
+be a valid GIMPLE operand (so you cannot generate expressions in C code).
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (trunc_mod integer_zerop@0 @1)
+ (if (!integer_zerop (@1))
+ @0))
+</pre></div>
+
+<p>Here <code>@0</code> captures the first operand of the trunc_mod expression
+which is also predicated with <code>integer_zerop</code>. Expression operands
+may be either expressions, predicates or captures. Captures
+can be unconstrained or capture expressions or predicates.
+</p>
+<p>This example introduces an optional operand of simplify,
+the if-expression. This condition is evaluated after the
+expression matched in the IL and is required to evaluate to true
+to enable the replacement expression in the second operand
+position. The expression operand of the <code>if</code> is a standard C
+expression which may contain references to captures. The <code>if</code>
+has an optional third operand which may contain the replacement
+expression that is enabled when the condition evaluates to false.
+</p>
+<p>A <code>if</code> expression can be used to specify a common condition
+for multiple simplify patterns, avoiding the need
+to repeat that multiple times:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(if (!TYPE_SATURATING (type)
+ &amp;&amp; !FLOAT_TYPE_P (type) &amp;&amp; !FIXED_POINT_TYPE_P (type))
+ (simplify
+ (minus (plus @0 @1) @0)
+ @1)
+ (simplify
+ (minus (minus @0 @1) @0)
+ (negate @1)))
+</pre></div>
+
+<p>Note that <code>if</code>s in outer position do not have the optional
+else clause but instead have multiple then clauses.
+</p>
+<p>Ifs can be nested.
+</p>
+<p>There exists a <code>switch</code> expression which can be used to
+chain conditions avoiding nesting <code>if</code>s too much:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (simple_comparison @0 REAL_CST@1)
+ (switch
+ /* a CMP (-0) -&gt; a CMP 0 */
+ (if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (@1)))
+ (cmp @0 { build_real (TREE_TYPE (@1), dconst0); }))
+ /* x != NaN is always true, other ops are always false. */
+ (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
+ &amp;&amp; ! HONOR_SNANS (@1))
+ { constant_boolean_node (cmp == NE_EXPR, type); })))
+</pre></div>
+
+<p>Is equal to
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (simple_comparison @0 REAL_CST@1)
+ (switch
+ /* a CMP (-0) -&gt; a CMP 0 */
+ (if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (@1)))
+ (cmp @0 { build_real (TREE_TYPE (@1), dconst0); })
+ /* x != NaN is always true, other ops are always false. */
+ (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
+ &amp;&amp; ! HONOR_SNANS (@1))
+ { constant_boolean_node (cmp == NE_EXPR, type); }))))
+</pre></div>
+
+<p>which has the second <code>if</code> in the else operand of the first.
+The <code>switch</code> expression takes <code>if</code> expressions as
+operands (which may not have else clauses) and as a last operand
+a replacement expression which should be enabled by default if
+no other condition evaluated to true.
+</p>
+<p>Captures can also be used for capturing results of sub-expressions.
+</p>
+<div class="smallexample">
+<pre class="smallexample">#if GIMPLE
+(simplify
+ (pointer_plus (addr@2 @0) INTEGER_CST_P@1)
+ (if (is_gimple_min_invariant (@2)))
+ {
+ poly_int64 off;
+ tree base = get_addr_base_and_unit_offset (@0, &amp;off);
+ off += tree_to_uhwi (@1);
+ /* Now with that we should be able to simply write
+ (addr (mem_ref (addr @base) (plus @off @1))) */
+ build1 (ADDR_EXPR, type,
+ build2 (MEM_REF, TREE_TYPE (TREE_TYPE (@2)),
+ build_fold_addr_expr (base),
+ build_int_cst (ptr_type_node, off)));
+ })
+#endif
+</pre></div>
+
+<p>In the above example, <code>@2</code> captures the result of the expression
+<code>(addr @0)</code>. For the outermost expression only its type can be
+captured, and the keyword <code>type</code> is reserved for this purpose. The
+above example also gives a way to conditionalize patterns to only apply
+to <code>GIMPLE</code> or <code>GENERIC</code> by means of using the pre-defined
+preprocessor macros <code>GIMPLE</code> and <code>GENERIC</code> and using
+preprocessor directives.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (bit_and:c integral_op_p@0 (bit_ior:c (bit_not @0) @1))
+ (bit_and @1 @0))
+</pre></div>
+
+<p>Here we introduce flags on match expressions. The flag used
+above, <code>c</code>, denotes that the expression should
+be also matched commutated. Thus the above match expression
+is really the following four match expressions:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> (bit_and integral_op_p@0 (bit_ior (bit_not @0) @1))
+ (bit_and (bit_ior (bit_not @0) @1) integral_op_p@0)
+ (bit_and integral_op_p@0 (bit_ior @1 (bit_not @0)))
+ (bit_and (bit_ior @1 (bit_not @0)) integral_op_p@0)
+</pre></div>
+
+<p>Usual canonicalizations you know from GENERIC expressions are
+applied before matching, so for example constant operands always
+come second in commutative expressions.
+</p>
+<p>The second supported flag is <code>s</code> which tells the code
+generator to fail the pattern if the expression marked with
+<code>s</code> does have more than one use and the simplification
+results in an expression with more than one operator.
+For example in
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (pointer_plus (pointer_plus:s @0 @1) @3)
+ (pointer_plus @0 (plus @1 @3)))
+</pre></div>
+
+<p>this avoids the association if <code>(pointer_plus @0 @1)</code> is
+used outside of the matched expression and thus it would stay
+live and not trivially removed by dead code elimination.
+Now consider <code>((x + 3) + -3)</code> with the temporary
+holding <code>(x + 3)</code> used elsewhere. This simplifies down
+to <code>x</code> which is desirable and thus flagging with <code>s</code>
+does not prevent the transform. Now consider <code>((x + 3) + 1)</code>
+which simplifies to <code>(x + 4)</code>. Despite being flagged with
+<code>s</code> the simplification will be performed. The
+simplification of <code>((x + a) + 1)</code> to <code>(x + (a + 1))</code> will
+not performed in this case though.
+</p>
+<p>More features exist to avoid too much repetition.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(for op (plus pointer_plus minus bit_ior bit_xor)
+ (simplify
+ (op @0 integer_zerop)
+ @0))
+</pre></div>
+
+<p>A <code>for</code> expression can be used to repeat a pattern for each
+operator specified, substituting <code>op</code>. <code>for</code> can be
+nested and a <code>for</code> can have multiple operators to iterate.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(for opa (plus minus)
+ opb (minus plus)
+ (for opc (plus minus)
+ (simplify...
+</pre></div>
+
+<p>In this example the pattern will be repeated four times with
+<code>opa, opb, opc</code> being <code>plus, minus, plus</code>;
+<code>plus, minus, minus</code>; <code>minus, plus, plus</code>;
+<code>minus, plus, minus</code>.
+</p>
+<p>To avoid repeating operator lists in <code>for</code> you can name
+them via
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_operator_list pmm plus minus mult)
+</pre></div>
+
+<p>and use them in <code>for</code> operator lists where they get expanded.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(for opa (pmm trunc_div)
+ (simplify...
+</pre></div>
+
+<p>So this example iterates over <code>plus</code>, <code>minus</code>, <code>mult</code>
+and <code>trunc_div</code>.
+</p>
+<p>Using operator lists can also remove the need to explicitly write
+a <code>for</code>. All operator list uses that appear in a <code>simplify</code>
+or <code>match</code> pattern in operator positions will implicitly
+be added to a new <code>for</code>. For example
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_operator_list SQRT BUILT_IN_SQRTF BUILT_IN_SQRT BUILT_IN_SQRTL)
+(define_operator_list POW BUILT_IN_POWF BUILT_IN_POW BUILT_IN_POWL)
+(simplify
+ (SQRT (POW @0 @1))
+ (POW (abs @0) (mult @1 { built_real (TREE_TYPE (@1), dconsthalf); })))
+</pre></div>
+
+<p>is the same as
+</p>
+<div class="smallexample">
+<pre class="smallexample">(for SQRT (BUILT_IN_SQRTF BUILT_IN_SQRT BUILT_IN_SQRTL)
+ POW (BUILT_IN_POWF BUILT_IN_POW BUILT_IN_POWL)
+ (simplify
+ (SQRT (POW @0 @1))
+ (POW (abs @0) (mult @1 { built_real (TREE_TYPE (@1), dconsthalf); }))))
+</pre></div>
+
+<p><code>for</code>s and operator lists can include the special identifier
+<code>null</code> that matches nothing and can never be generated. This can
+be used to pad an operator list so that it has a standard form,
+even if there isn&rsquo;t a suitable operator for every form.
+</p>
+<p>Another building block are <code>with</code> expressions in the
+result expression which nest the generated code in a new C block
+followed by its argument:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (convert (mult @0 @1))
+ (with { tree utype = unsigned_type_for (type); }
+ (convert (mult (convert:utype @0) (convert:utype @1)))))
+</pre></div>
+
+<p>This allows code nested in the <code>with</code> to refer to the declared
+variables. In the above case we use the feature to specify the
+type of a generated expression with the <code>:type</code> syntax where
+<code>type</code> needs to be an identifier that refers to the desired type.
+Usually the types of the generated result expressions are
+determined from the context, but sometimes like in the above case
+it is required that you specify them explicitly.
+</p>
+<p>Another modifier for generated expressions is <code>!</code> which
+tells the machinery to only consider the simplification in case
+the marked expression simplified to a simple operand. Consider
+for example
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (plus (vec_cond:s @0 @1 @2) @3)
+ (vec_cond @0 (plus! @1 @3) (plus! @2 @3)))
+</pre></div>
+
+<p>which moves the outer <code>plus</code> operation to the inner arms
+of the <code>vec_cond</code> expression but only if the actual plus
+operations both simplify. Note that on <code>GENERIC</code> a simple
+operand means that the result satisfies <code>!EXPR_P</code> which
+can be limiting if the operation itself simplifies but the
+remaining operand is an (unrelated) expression.
+</p>
+<p>As intermediate conversions are often optional there is a way to
+avoid the need to repeat patterns both with and without such
+conversions. Namely you can mark a conversion as being optional
+with a <code>?</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (eq (convert@0 @1) (convert? @2))
+ (eq @1 (convert @2)))
+</pre></div>
+
+<p>which will match both <code>(eq (convert @1) (convert @2))</code> and
+<code>(eq (convert @1) @2)</code>. The optional converts are supposed
+to be all either present or not, thus
+<code>(eq (convert? @1) (convert? @2))</code> will result in two
+patterns only. If you want to match all four combinations you
+have access to two additional conditional converts as in
+<code>(eq (convert1? @1) (convert2? @2))</code>.
+</p>
+<p>The support for <code>?</code> marking extends to all unary operations
+including predicates you declare yourself with <code>match</code>.
+</p>
+<p>Predicates available from the GCC middle-end need to be made
+available explicitly via <code>define_predicates</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_predicates
+ integer_onep integer_zerop integer_all_onesp)
+</pre></div>
+
+<p>You can also define predicates using the pattern matching language
+and the <code>match</code> form:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match negate_expr_p
+ INTEGER_CST
+ (if (TYPE_OVERFLOW_WRAPS (type)
+ || may_negate_without_overflow_p (t))))
+(match negate_expr_p
+ (negate @0))
+</pre></div>
+
+<p>This shows that for <code>match</code> expressions there is <code>t</code>
+available which captures the outermost expression (something
+not possible in the <code>simplify</code> context). As you can see
+<code>match</code> has an identifier as first operand which is how
+you refer to the predicate in patterns. Multiple <code>match</code>
+for the same identifier add additional cases where the predicate
+matches.
+</p>
+<p>Predicates can also match an expression in which case you need
+to provide a template specifying the identifier and where to
+get its operands from:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(match (logical_inverted_value @0)
+ (eq @0 integer_zerop))
+(match (logical_inverted_value @0)
+ (bit_not truth_valued_p@0))
+</pre></div>
+
+<p>You can use the above predicate like
+</p>
+<div class="smallexample">
+<pre class="smallexample">(simplify
+ (bit_and @0 (logical_inverted_value @0))
+ { build_zero_cst (type); })
+</pre></div>
+
+<p>Which will match a bitwise and of an operand with its logical
+inverted value.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="GIMPLE-API.html#GIMPLE-API" accesskey="p" rel="previous">GIMPLE API</a>, Up: <a href="Match-and-Simplify.html#Match-and-Simplify" accesskey="u" rel="up">Match and Simplify</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Top-Level.html b/share/doc/gccint/Top-Level.html
new file mode 100644
index 0000000..659f371
--- /dev/null
+++ b/share/doc/gccint/Top-Level.html
@@ -0,0 +1,257 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Top Level</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Top Level">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Top Level">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Source-Tree.html#Source-Tree" rel="up" title="Source Tree">
+<link href="gcc-Directory.html#gcc-Directory" rel="next" title="gcc Directory">
+<link href="Configure-Terms.html#Configure-Terms" rel="previous" title="Configure Terms">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Top-Level"></a>
+<div class="header">
+<p>
+Next: <a href="gcc-Directory.html#gcc-Directory" accesskey="n" rel="next">gcc Directory</a>, Previous: <a href="Configure-Terms.html#Configure-Terms" accesskey="p" rel="previous">Configure Terms</a>, Up: <a href="Source-Tree.html#Source-Tree" accesskey="u" rel="up">Source Tree</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Top-Level-Source-Directory"></a>
+<h3 class="section">6.2 Top Level Source Directory</h3>
+
+<p>The top level source directory in a GCC distribution contains several
+files and directories that are shared with other software
+distributions such as that of GNU Binutils. It also contains several
+subdirectories that contain parts of GCC and its runtime libraries:
+</p>
+<dl compact="compact">
+<dt><samp>c++tools</samp></dt>
+<dd><p>Contains the sources for the g++-mapper-server, a tool used with
+C++ modules.
+</p>
+</dd>
+<dt><samp>config</samp></dt>
+<dd><p>Autoconf macros and Makefile fragments used throughout the tree.
+</p>
+</dd>
+<dt><samp>contrib</samp></dt>
+<dd><p>Contributed scripts that may be found useful in conjunction with GCC.
+One of these, <samp>contrib/texi2pod.pl</samp>, is used to generate man
+pages from Texinfo manuals as part of the GCC build process.
+</p>
+</dd>
+<dt><samp>fixincludes</samp></dt>
+<dd><p>The support for fixing system headers to work with GCC. See
+<samp>fixincludes/README</samp> for more information. The headers fixed by
+this mechanism are installed in <samp><var>libsubdir</var>/include-fixed</samp>.
+Along with those headers, <samp>README-fixinc</samp> is also installed, as
+<samp><var>libsubdir</var>/include-fixed/README</samp>.
+</p>
+</dd>
+<dt><samp>gcc</samp></dt>
+<dd><p>The main sources of GCC itself (except for runtime libraries),
+including optimizers, support for different target architectures,
+language front ends, and testsuites. See <a href="gcc-Directory.html#gcc-Directory">The
+<samp>gcc</samp> Subdirectory</a>, for details.
+</p>
+</dd>
+<dt><samp>gnattools</samp></dt>
+<dd><p>Support tools for GNAT.
+</p>
+</dd>
+<dt><samp>gotools</samp></dt>
+<dd><p>Support tools for Go.
+</p>
+</dd>
+<dt><samp>include</samp></dt>
+<dd><p>Headers for the <code>libiberty</code> library.
+</p>
+</dd>
+<dt><samp>intl</samp></dt>
+<dd><p>GNU <code>libintl</code>, from GNU <code>gettext</code>, for systems which do not
+include it in <code>libc</code>.
+</p>
+</dd>
+<dt><samp>libada</samp></dt>
+<dd><p>The Ada runtime library.
+</p>
+</dd>
+<dt><samp>libatomic</samp></dt>
+<dd><p>The runtime support library for atomic operations (e.g. for <code>__sync</code>
+and <code>__atomic</code>).
+</p>
+</dd>
+<dt><samp>libbacktrace</samp></dt>
+<dd><p>A library that allows GCC to produce backtraces when it crashes.
+</p>
+</dd>
+<dt><samp>libcc1</samp></dt>
+<dd><p>A library that allows GDB to make use of the compiler.
+</p>
+</dd>
+<dt><samp>libcody</samp></dt>
+<dd><p>A compiler dynamism library to allow communication between compilers and
+build systems, for purposes such as C++ modules.
+</p>
+</dd>
+<dt><samp>libcpp</samp></dt>
+<dd><p>The C preprocessor library.
+</p>
+</dd>
+<dt><samp>libdecnumber</samp></dt>
+<dd><p>The Decimal Float support library.
+</p>
+</dd>
+<dt><samp>libffi</samp></dt>
+<dd><p>The <code>libffi</code> library, used as part of the Go runtime library.
+</p>
+</dd>
+<dt><samp>libgcc</samp></dt>
+<dd><p>The GCC runtime library.
+</p>
+</dd>
+<dt><samp>libgfortran</samp></dt>
+<dd><p>The Fortran runtime library.
+</p>
+</dd>
+<dt><samp>libgm2</samp></dt>
+<dd><p>The Modula-2 runtime library.
+</p>
+</dd>
+<dt><samp>libgo</samp></dt>
+<dd><p>The Go runtime library. The bulk of this library is mirrored from the
+<a href="https://github.com/golang/go">master Go repository</a>.
+</p>
+</dd>
+<dt><samp>libgomp</samp></dt>
+<dd><p>The GNU Offloading and Multi Processing Runtime Library.
+</p>
+</dd>
+<dt><samp>libiberty</samp></dt>
+<dd><p>The <code>libiberty</code> library, used for portability and for some
+generally useful data structures and algorithms. See <a href="http://gcc.gnu.org/onlinedocs/libiberty/index.html#Top">Introduction</a> in <cite><small>GNU</small> libiberty</cite>, for more information
+about this library.
+</p>
+</dd>
+<dt><samp>libitm</samp></dt>
+<dd><p>The runtime support library for transactional memory.
+</p>
+</dd>
+<dt><samp>libobjc</samp></dt>
+<dd><p>The Objective-C and Objective-C++ runtime library.
+</p>
+</dd>
+<dt><samp>libphobos</samp></dt>
+<dd><p>The D standard and runtime library. The bulk of this library is mirrored
+from the <a href="https://github.com/dlang">master D repositories</a>.
+</p>
+</dd>
+<dt><samp>libquadmath</samp></dt>
+<dd><p>The runtime support library for quad-precision math operations.
+</p>
+</dd>
+<dt><samp>libsanitizer</samp></dt>
+<dd><p>Libraries for various sanitizers. The bulk of this directory is mirrored
+from the <a href="https://github.com/google/sanitizers">Google sanitizers
+repositories</a>.
+</p>
+</dd>
+<dt><samp>libssp</samp></dt>
+<dd><p>The Stack protector runtime library.
+</p>
+</dd>
+<dt><samp>libstdc++-v3</samp></dt>
+<dd><p>The C++ runtime library.
+</p>
+</dd>
+<dt><samp>libvtv</samp></dt>
+<dd><p>The vtable verification library.
+</p>
+</dd>
+<dt><samp>lto-plugin</samp></dt>
+<dd><p>Plugin used by the linker if link-time optimizations are enabled.
+</p>
+</dd>
+<dt><samp>maintainer-scripts</samp></dt>
+<dd><p>Scripts used by the <code>gccadmin</code> account on <code>gcc.gnu.org</code>.
+</p>
+</dd>
+<dt><samp>zlib</samp></dt>
+<dd><p>The <code>zlib</code> compression library, used for compressing and
+uncompressing GCC&rsquo;s intermediate language in LTO object files.
+</p></dd>
+</dl>
+
+<p>The build system in the top level directory, including how recursion
+into subdirectories works and how building runtime libraries for
+multilibs is handled, is documented in a separate manual, included
+with GNU Binutils.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="gcc-Directory.html#gcc-Directory" accesskey="n" rel="next">gcc Directory</a>, Previous: <a href="Configure-Terms.html#Configure-Terms" accesskey="p" rel="previous">Configure Terms</a>, Up: <a href="Source-Tree.html#Source-Tree" accesskey="u" rel="up">Source Tree</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Torture-Tests.html b/share/doc/gccint/Torture-Tests.html
new file mode 100644
index 0000000..15151aa
--- /dev/null
+++ b/share/doc/gccint/Torture-Tests.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Torture Tests</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Torture Tests">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Torture Tests">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="GIMPLE-Tests.html#GIMPLE-Tests" rel="next" title="GIMPLE Tests">
+<link href="compat-Testing.html#compat-Testing" rel="previous" title="compat Testing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Torture-Tests"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE-Tests.html#GIMPLE-Tests" accesskey="n" rel="next">GIMPLE Tests</a>, Previous: <a href="compat-Testing.html#compat-Testing" accesskey="p" rel="previous">compat Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-torture-testing-using-multiple-options"></a>
+<h3 class="section">7.9 Support for torture testing using multiple options</h3>
+
+<p>Throughout the compiler testsuite there are several directories whose
+tests are run multiple times, each with a different set of options.
+These are known as torture tests.
+<samp>lib/torture-options.exp</samp> defines procedures to
+set up these lists:
+</p>
+<dl compact="compact">
+<dt><code>torture-init</code></dt>
+<dd><p>Initialize use of torture lists.
+</p></dd>
+<dt><code>set-torture-options</code></dt>
+<dd><p>Set lists of torture options to use for tests with and without loops.
+Optionally combine a set of torture options with a set of other
+options, as is done with Objective-C runtime options.
+</p></dd>
+<dt><code>torture-finish</code></dt>
+<dd><p>Finalize use of torture lists.
+</p></dd>
+</dl>
+
+<p>The <samp>.exp</samp> file for a set of tests that use torture options must
+include calls to these three procedures if:
+</p>
+<ul>
+<li> It calls <code>gcc-dg-runtest</code> and overrides <var>DG_TORTURE_OPTIONS</var>.
+
+</li><li> It calls <var>${tool}</var><code>-torture</code> or
+<var>${tool}</var><code>-torture-execute</code>, where <var>tool</var> is <code>c</code>,
+<code>fortran</code>, or <code>objc</code>.
+
+</li><li> It calls <code>dg-pch</code>.
+</li></ul>
+
+<p>It is not necessary for a <samp>.exp</samp> file that calls <code>gcc-dg-runtest</code>
+to call the torture procedures if the tests should use the list in
+<var>DG_TORTURE_OPTIONS</var> defined in <samp>gcc-dg.exp</samp>.
+</p>
+<p>Most uses of torture options can override the default lists by defining
+<var>TORTURE_OPTIONS</var> or add to the default list by defining
+<var>ADDITIONAL_TORTURE_OPTIONS</var>. Define these in a <samp>.dejagnurc</samp>
+file or add them to the <samp>site.exp</samp> file; for example
+</p>
+<div class="smallexample">
+<pre class="smallexample">set ADDITIONAL_TORTURE_OPTIONS [list \
+ { -O2 -ftree-loop-linear } \
+ { -O2 -fpeel-loops } ]
+</pre></div>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Trampolines.html b/share/doc/gccint/Trampolines.html
new file mode 100644
index 0000000..183a8ee
--- /dev/null
+++ b/share/doc/gccint/Trampolines.html
@@ -0,0 +1,294 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Trampolines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Trampolines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Trampolines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Library-Calls.html#Library-Calls" rel="next" title="Library Calls">
+<link href="Varargs.html#Varargs" rel="previous" title="Varargs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Trampolines"></a>
+<div class="header">
+<p>
+Next: <a href="Library-Calls.html#Library-Calls" accesskey="n" rel="next">Library Calls</a>, Previous: <a href="Varargs.html#Varargs" accesskey="p" rel="previous">Varargs</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-Nested-Functions"></a>
+<h3 class="section">18.11 Support for Nested Functions</h3>
+<a name="index-support-for-nested-functions"></a>
+<a name="index-trampolines-for-nested-functions"></a>
+<a name="index-descriptors-for-nested-functions"></a>
+<a name="index-nested-functions_002c-support-for"></a>
+
+<p>Taking the address of a nested function requires special compiler
+handling to ensure that the static chain register is loaded when
+the function is invoked via an indirect call.
+</p>
+<p>GCC has traditionally supported nested functions by creating an
+executable <em>trampoline</em> at run time when the address of a nested
+function is taken. This is a small piece of code which normally
+resides on the stack, in the stack frame of the containing function.
+The trampoline loads the static chain register and then jumps to the
+real address of the nested function.
+</p>
+<p>The use of trampolines requires an executable stack, which is a
+security risk. To avoid this problem, GCC also supports another
+strategy: using descriptors for nested functions. Under this model,
+taking the address of a nested function results in a pointer to a
+non-executable function descriptor object. Initializing the static chain
+from the descriptor is handled at indirect call sites.
+</p>
+<p>On some targets, including HPPA and IA-64, function descriptors may be
+mandated by the ABI or be otherwise handled in a target-specific way
+by the back end in its code generation strategy for indirect calls.
+GCC also provides its own generic descriptor implementation to support the
+<samp>-fno-trampolines</samp> option. In this case runtime detection of
+function descriptors at indirect call sites relies on descriptor
+pointers being tagged with a bit that is never set in bare function
+addresses. Since GCC&rsquo;s generic function descriptors are
+not ABI-compliant, this option is typically used only on a
+per-language basis (notably by Ada) or when it can otherwise be
+applied to the whole program.
+</p>
+<p>For languages other than Ada, the <code>-ftrampolines</code> and
+<code>-fno-trampolines</code> options currently have no effect, and
+trampolines are always generated on platforms that need them
+for nested functions.
+</p>
+<p>Define the following hook if your backend either implements ABI-specified
+descriptor support, or can use GCC&rsquo;s generic descriptor implementation
+for nested functions.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fCUSTOM_005fFUNCTION_005fDESCRIPTORS"></a>Target Hook: <em>int</em> <strong>TARGET_CUSTOM_FUNCTION_DESCRIPTORS</strong></dt>
+<dd><p>If the target can use GCC&rsquo;s generic descriptor mechanism for nested
+functions, define this hook to a power of 2 representing an unused bit
+in function pointers which can be used to differentiate descriptors at
+run time. This value gives the number of bytes by which descriptor
+pointers are misaligned compared to function pointers. For example, on
+targets that require functions to be aligned to a 4-byte boundary, a
+value of either 1 or 2 is appropriate unless the architecture already
+reserves the bit for another purpose, such as on ARM.
+</p>
+<p>Define this hook to 0 if the target implements ABI support for
+function descriptors in its standard calling sequence, like for example
+HPPA or IA-64.
+</p>
+<p>Using descriptors for nested functions
+eliminates the need for trampolines that reside on the stack and require
+it to be made executable.
+</p></dd></dl>
+
+<p>The following macros tell GCC how to generate code to allocate and
+initialize an executable trampoline. You can also use this interface
+if your back end needs to create ABI-specified non-executable descriptors; in
+this case the &quot;trampoline&quot; created is the descriptor containing data only.
+</p>
+<p>The instructions in an executable trampoline must do two things: load
+a constant address into the static chain register, and jump to the real
+address of the nested function. On CISC machines such as the m68k,
+this requires two instructions, a move immediate and a jump. Then the
+two addresses exist in the trampoline as word-long immediate operands.
+On RISC machines, it is often necessary to load each address into a
+register in two parts. Then pieces of each address form separate
+immediate operands.
+</p>
+<p>The code generated to initialize the trampoline must store the variable
+parts&mdash;the static chain value and the function address&mdash;into the
+immediate operands of the instructions. On a CISC machine, this is
+simply a matter of copying each address to a memory reference at the
+proper offset from the start of the trampoline. On a RISC machine, it
+may be necessary to take out pieces of the address and store them
+separately.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fASM_005fTRAMPOLINE_005fTEMPLATE"></a>Target Hook: <em>void</em> <strong>TARGET_ASM_TRAMPOLINE_TEMPLATE</strong> <em>(FILE *<var>f</var>)</em></dt>
+<dd><p>This hook is called by <code>assemble_trampoline_template</code> to output,
+on the stream <var>f</var>, assembler code for a block of data that contains
+the constant parts of a trampoline. This code should not include a
+label&mdash;the label is taken care of automatically.
+</p>
+<p>If you do not define this hook, it means no template is needed
+for the target. Do not define this hook on systems where the block move
+code to copy the trampoline into place would be larger than the code
+to generate it on the spot.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TRAMPOLINE_005fSECTION"></a>Macro: <strong>TRAMPOLINE_SECTION</strong></dt>
+<dd><p>Return the section into which the trampoline template is to be placed
+(see <a href="Sections.html#Sections">Sections</a>). The default value is <code>readonly_data_section</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TRAMPOLINE_005fSIZE"></a>Macro: <strong>TRAMPOLINE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bytes of the trampoline, as an integer.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TRAMPOLINE_005fALIGNMENT"></a>Macro: <strong>TRAMPOLINE_ALIGNMENT</strong></dt>
+<dd><p>Alignment required for trampolines, in bits.
+</p>
+<p>If you don&rsquo;t define this macro, the value of <code>FUNCTION_ALIGNMENT</code>
+is used for aligning trampolines.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fTRAMPOLINE_005fINIT"></a>Target Hook: <em>void</em> <strong>TARGET_TRAMPOLINE_INIT</strong> <em>(rtx <var>m_tramp</var>, tree <var>fndecl</var>, rtx <var>static_chain</var>)</em></dt>
+<dd><p>This hook is called to initialize a trampoline.
+<var>m_tramp</var> is an RTX for the memory block for the trampoline; <var>fndecl</var>
+is the <code>FUNCTION_DECL</code> for the nested function; <var>static_chain</var> is an
+RTX for the static chain value that should be passed to the function
+when it is called.
+</p>
+<p>If the target defines <code>TARGET_ASM_TRAMPOLINE_TEMPLATE</code>, then the
+first thing this hook should do is emit a block move into <var>m_tramp</var>
+from the memory block returned by <code>assemble_trampoline_template</code>.
+Note that the block move need only cover the constant parts of the
+trampoline. If the target isolates the variable parts of the trampoline
+to the end, not all <code>TRAMPOLINE_SIZE</code> bytes need be copied.
+</p>
+<p>If the target requires any other actions, such as flushing caches
+(possibly calling function maybe_emit_call_builtin___clear_cache) or
+enabling stack execution, these actions should be performed after
+initializing the trampoline proper.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEMIT_005fCALL_005fBUILTIN_005f_005f_005fCLEAR_005fCACHE"></a>Target Hook: <em>void</em> <strong>TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE</strong> <em>(rtx <var>begin</var>, rtx <var>end</var>)</em></dt>
+<dd><p>On targets that do not define a <code>clear_cache</code> insn expander,
+but that define the <code>CLEAR_CACHE_INSN</code> macro,
+maybe_emit_call_builtin___clear_cache relies on this target hook
+to clear an address range in the instruction cache.
+</p>
+<p>The default implementation calls the <code>__clear_cache</code> builtin,
+taking the assembler name from the builtin declaration. Overriding
+definitions may call alternate functions, with alternate calling
+conventions, or emit alternate RTX to perform the job.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fTRAMPOLINE_005fADJUST_005fADDRESS"></a>Target Hook: <em>rtx</em> <strong>TARGET_TRAMPOLINE_ADJUST_ADDRESS</strong> <em>(rtx <var>addr</var>)</em></dt>
+<dd><p>This hook should perform any machine-specific adjustment in
+the address of the trampoline. Its argument contains the address of the
+memory block that was passed to <code>TARGET_TRAMPOLINE_INIT</code>. In case
+the address to be used for a function call should be different from the
+address at which the template was stored, the different address should
+be returned; otherwise <var>addr</var> should be returned unchanged.
+If this hook is not defined, <var>addr</var> will be used for function calls.
+</p></dd></dl>
+
+<p>Implementing trampolines is difficult on many machines because they have
+separate instruction and data caches. Writing into a stack location
+fails to clear the memory in the instruction cache, so when the program
+jumps to that location, it executes the old contents.
+</p>
+<p>Here are two possible solutions. One is to clear the relevant parts of
+the instruction cache whenever a trampoline is set up. The other is to
+make all trampolines identical, by having them jump to a standard
+subroutine. The former technique makes trampoline execution faster; the
+latter makes initialization faster.
+</p>
+<p>To clear the instruction cache when a trampoline is initialized, define
+the following macro.
+</p>
+<dl>
+<dt><a name="index-CLEAR_005fINSN_005fCACHE"></a>Macro: <strong>CLEAR_INSN_CACHE</strong> <em>(<var>beg</var>, <var>end</var>)</em></dt>
+<dd><p>If defined, expands to a C expression clearing the <em>instruction
+cache</em> in the specified interval. The definition of this macro would
+typically be a series of <code>asm</code> statements. Both <var>beg</var> and
+<var>end</var> are pointer expressions.
+</p></dd></dl>
+
+<p>To use a standard subroutine, define the following macro. In addition,
+you must make sure that the instructions in a trampoline fill an entire
+cache line with identical instructions, or else ensure that the
+beginning of the trampoline code is always aligned at the same point in
+its cache line. Look in <samp>m68k.h</samp> as a guide.
+</p>
+<dl>
+<dt><a name="index-TRANSFER_005fFROM_005fTRAMPOLINE"></a>Macro: <strong>TRANSFER_FROM_TRAMPOLINE</strong></dt>
+<dd><p>Define this macro if trampolines need a special subroutine to do their
+work. The macro should expand to a series of <code>asm</code> statements
+which will be compiled with GCC. They go in a library function named
+<code>__transfer_from_trampoline</code>.
+</p>
+<p>If you need to avoid executing the ordinary prologue code of a compiled
+C function when you jump to the subroutine, you can do so by placing a
+special label of your own in the assembler code. Use one <code>asm</code>
+statement to generate an assembler label, and another to make the label
+global. Then trampolines can use that label to jump directly to your
+special assembler code.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Library-Calls.html#Library-Calls" accesskey="n" rel="next">Library Calls</a>, Previous: <a href="Varargs.html#Varargs" accesskey="p" rel="previous">Varargs</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tree-SSA-passes.html b/share/doc/gccint/Tree-SSA-passes.html
new file mode 100644
index 0000000..68cf46f
--- /dev/null
+++ b/share/doc/gccint/Tree-SSA-passes.html
@@ -0,0 +1,563 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tree SSA passes</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tree SSA passes">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tree SSA passes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Passes.html#Passes" rel="up" title="Passes">
+<link href="RTL-passes.html#RTL-passes" rel="next" title="RTL passes">
+<link href="Late-IPA-passes.html#Late-IPA-passes" rel="previous" title="Late IPA passes">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tree-SSA-passes"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-passes.html#RTL-passes" accesskey="n" rel="next">RTL passes</a>, Previous: <a href="IPA-passes.html#IPA-passes" accesskey="p" rel="previous">IPA passes</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tree-SSA-passes-1"></a>
+<h3 class="section">9.5 Tree SSA passes</h3>
+
+<p>The following briefly describes the Tree optimization passes that are
+run after gimplification and what source files they are located in.
+</p>
+<ul>
+<li> Remove useless statements
+
+<p>This pass is an extremely simple sweep across the gimple code in which
+we identify obviously dead code and remove it. Here we do things like
+simplify <code>if</code> statements with constant conditions, remove
+exception handling constructs surrounding code that obviously cannot
+throw, remove lexical bindings that contain no variables, and other
+assorted simplistic cleanups. The idea is to get rid of the obvious
+stuff quickly rather than wait until later when it&rsquo;s more work to get
+rid of it. This pass is located in <samp>tree-cfg.cc</samp> and described by
+<code>pass_remove_useless_stmts</code>.
+</p>
+</li><li> OpenMP lowering
+
+<p>If OpenMP generation (<samp>-fopenmp</samp>) is enabled, this pass lowers
+OpenMP constructs into GIMPLE.
+</p>
+<p>Lowering of OpenMP constructs involves creating replacement
+expressions for local variables that have been mapped using data
+sharing clauses, exposing the control flow of most synchronization
+directives and adding region markers to facilitate the creation of the
+control flow graph. The pass is located in <samp>omp-low.cc</samp> and is
+described by <code>pass_lower_omp</code>.
+</p>
+</li><li> OpenMP expansion
+
+<p>If OpenMP generation (<samp>-fopenmp</samp>) is enabled, this pass expands
+parallel regions into their own functions to be invoked by the thread
+library. The pass is located in <samp>omp-low.cc</samp> and is described by
+<code>pass_expand_omp</code>.
+</p>
+</li><li> Lower control flow
+
+<p>This pass flattens <code>if</code> statements (<code>COND_EXPR</code>)
+and moves lexical bindings (<code>BIND_EXPR</code>) out of line. After
+this pass, all <code>if</code> statements will have exactly two <code>goto</code>
+statements in its <code>then</code> and <code>else</code> arms. Lexical binding
+information for each statement will be found in <code>TREE_BLOCK</code> rather
+than being inferred from its position under a <code>BIND_EXPR</code>. This
+pass is found in <samp>gimple-low.cc</samp> and is described by
+<code>pass_lower_cf</code>.
+</p>
+</li><li> Lower exception handling control flow
+
+<p>This pass decomposes high-level exception handling constructs
+(<code>TRY_FINALLY_EXPR</code> and <code>TRY_CATCH_EXPR</code>) into a form
+that explicitly represents the control flow involved. After this
+pass, <code>lookup_stmt_eh_region</code> will return a non-negative
+number for any statement that may have EH control flow semantics;
+examine <code>tree_can_throw_internal</code> or <code>tree_can_throw_external</code>
+for exact semantics. Exact control flow may be extracted from
+<code>foreach_reachable_handler</code>. The EH region nesting tree is defined
+in <samp>except.h</samp> and built in <samp>except.cc</samp>. The lowering pass
+itself is in <samp>tree-eh.cc</samp> and is described by <code>pass_lower_eh</code>.
+</p>
+</li><li> Build the control flow graph
+
+<p>This pass decomposes a function into basic blocks and creates all of
+the edges that connect them. It is located in <samp>tree-cfg.cc</samp> and
+is described by <code>pass_build_cfg</code>.
+</p>
+</li><li> Find all referenced variables
+
+<p>This pass walks the entire function and collects an array of all
+variables referenced in the function, <code>referenced_vars</code>. The
+index at which a variable is found in the array is used as a UID
+for the variable within this function. This data is needed by the
+SSA rewriting routines. The pass is located in <samp>tree-dfa.cc</samp>
+and is described by <code>pass_referenced_vars</code>.
+</p>
+</li><li> Enter static single assignment form
+
+<p>This pass rewrites the function such that it is in SSA form. After
+this pass, all <code>is_gimple_reg</code> variables will be referenced by
+<code>SSA_NAME</code>, and all occurrences of other variables will be
+annotated with <code>VDEFS</code> and <code>VUSES</code>; PHI nodes will have
+been inserted as necessary for each basic block. This pass is
+located in <samp>tree-ssa.cc</samp> and is described by <code>pass_build_ssa</code>.
+</p>
+</li><li> Warn for uninitialized variables
+
+<p>This pass scans the function for uses of <code>SSA_NAME</code>s that
+are fed by default definition. For non-parameter variables, such
+uses are uninitialized. The pass is run twice, before and after
+optimization (if turned on). In the first pass we only warn for uses that are
+positively uninitialized; in the second pass we warn for uses that
+are possibly uninitialized. The pass is located in <samp>tree-ssa.cc</samp>
+and is defined by <code>pass_early_warn_uninitialized</code> and
+<code>pass_late_warn_uninitialized</code>.
+</p>
+</li><li> Dead code elimination
+
+<p>This pass scans the function for statements without side effects whose
+result is unused. It does not do memory life analysis, so any value
+that is stored in memory is considered used. The pass is run multiple
+times throughout the optimization process. It is located in
+<samp>tree-ssa-dce.cc</samp> and is described by <code>pass_dce</code>.
+</p>
+</li><li> Dominator optimizations
+
+<p>This pass performs trivial dominator-based copy and constant propagation,
+expression simplification, and jump threading. It is run multiple times
+throughout the optimization process. It is located in <samp>tree-ssa-dom.cc</samp>
+and is described by <code>pass_dominator</code>.
+</p>
+</li><li> Forward propagation of single-use variables
+
+<p>This pass attempts to remove redundant computation by substituting
+variables that are used once into the expression that uses them and
+seeing if the result can be simplified. It is located in
+<samp>tree-ssa-forwprop.cc</samp> and is described by <code>pass_forwprop</code>.
+</p>
+</li><li> Copy Renaming
+
+<p>This pass attempts to change the name of compiler temporaries involved in
+copy operations such that SSA-&gt;normal can coalesce the copy away. When compiler
+temporaries are copies of user variables, it also renames the compiler
+temporary to the user variable resulting in better use of user symbols. It is
+located in <samp>tree-ssa-copyrename.c</samp> and is described by
+<code>pass_copyrename</code>.
+</p>
+</li><li> PHI node optimizations
+
+<p>This pass recognizes forms of PHI inputs that can be represented as
+conditional expressions and rewrites them into straight line code.
+It is located in <samp>tree-ssa-phiopt.cc</samp> and is described by
+<code>pass_phiopt</code>.
+</p>
+</li><li> May-alias optimization
+
+<p>This pass performs a flow sensitive SSA-based points-to analysis.
+The resulting may-alias, must-alias, and escape analysis information
+is used to promote variables from in-memory addressable objects to
+non-aliased variables that can be renamed into SSA form. We also
+update the <code>VDEF</code>/<code>VUSE</code> memory tags for non-renameable
+aggregates so that we get fewer false kills. The pass is located
+in <samp>tree-ssa-alias.cc</samp> and is described by <code>pass_may_alias</code>.
+</p>
+<p>Interprocedural points-to information is located in
+<samp>tree-ssa-structalias.cc</samp> and described by <code>pass_ipa_pta</code>.
+</p>
+</li><li> Profiling
+
+<p>This pass instruments the function in order to collect runtime block
+and value profiling data. Such data may be fed back into the compiler
+on a subsequent run so as to allow optimization based on expected
+execution frequencies. The pass is located in <samp>tree-profile.cc</samp> and
+is described by <code>pass_ipa_tree_profile</code>.
+</p>
+</li><li> Static profile estimation
+
+<p>This pass implements series of heuristics to guess propababilities
+of branches. The resulting predictions are turned into edge profile
+by propagating branches across the control flow graphs.
+The pass is located in <samp>tree-profile.cc</samp> and is described by
+<code>pass_profile</code>.
+</p>
+</li><li> Lower complex arithmetic
+
+<p>This pass rewrites complex arithmetic operations into their component
+scalar arithmetic operations. The pass is located in <samp>tree-complex.cc</samp>
+and is described by <code>pass_lower_complex</code>.
+</p>
+</li><li> Scalar replacement of aggregates
+
+<p>This pass rewrites suitable non-aliased local aggregate variables into
+a set of scalar variables. The resulting scalar variables are
+rewritten into SSA form, which allows subsequent optimization passes
+to do a significantly better job with them. The pass is located in
+<samp>tree-sra.cc</samp> and is described by <code>pass_sra</code>.
+</p>
+</li><li> Dead store elimination
+
+<p>This pass eliminates stores to memory that are subsequently overwritten
+by another store, without any intervening loads. The pass is located
+in <samp>tree-ssa-dse.cc</samp> and is described by <code>pass_dse</code>.
+</p>
+</li><li> Tail recursion elimination
+
+<p>This pass transforms tail recursion into a loop. It is located in
+<samp>tree-tailcall.cc</samp> and is described by <code>pass_tail_recursion</code>.
+</p>
+</li><li> Forward store motion
+
+<p>This pass sinks stores and assignments down the flowgraph closer to their
+use point. The pass is located in <samp>tree-ssa-sink.cc</samp> and is
+described by <code>pass_sink_code</code>.
+</p>
+</li><li> Partial redundancy elimination
+
+<p>This pass eliminates partially redundant computations, as well as
+performing load motion. The pass is located in <samp>tree-ssa-pre.cc</samp>
+and is described by <code>pass_pre</code>.
+</p>
+<p>Just before partial redundancy elimination, if
+<samp>-funsafe-math-optimizations</samp> is on, GCC tries to convert
+divisions to multiplications by the reciprocal. The pass is located
+in <samp>tree-ssa-math-opts.cc</samp> and is described by
+<code>pass_cse_reciprocal</code>.
+</p>
+</li><li> Full redundancy elimination
+
+<p>This is a simpler form of PRE that only eliminates redundancies that
+occur on all paths. It is located in <samp>tree-ssa-pre.cc</samp> and
+described by <code>pass_fre</code>.
+</p>
+</li><li> Loop optimization
+
+<p>The main driver of the pass is placed in <samp>tree-ssa-loop.cc</samp>
+and described by <code>pass_loop</code>.
+</p>
+<p>The optimizations performed by this pass are:
+</p>
+<p>Loop invariant motion. This pass moves only invariants that
+would be hard to handle on RTL level (function calls, operations that expand to
+nontrivial sequences of insns). With <samp>-funswitch-loops</samp> it also moves
+operands of conditions that are invariant out of the loop, so that we can use
+just trivial invariantness analysis in loop unswitching. The pass also includes
+store motion. The pass is implemented in <samp>tree-ssa-loop-im.cc</samp>.
+</p>
+<p>Canonical induction variable creation. This pass creates a simple counter
+for number of iterations of the loop and replaces the exit condition of the
+loop using it, in case when a complicated analysis is necessary to determine
+the number of iterations. Later optimizations then may determine the number
+easily. The pass is implemented in <samp>tree-ssa-loop-ivcanon.cc</samp>.
+</p>
+<p>Induction variable optimizations. This pass performs standard induction
+variable optimizations, including strength reduction, induction variable
+merging and induction variable elimination. The pass is implemented in
+<samp>tree-ssa-loop-ivopts.cc</samp>.
+</p>
+<p>Loop unswitching. This pass moves the conditional jumps that are invariant
+out of the loops. To achieve this, a duplicate of the loop is created for
+each possible outcome of conditional jump(s). The pass is implemented in
+<samp>tree-ssa-loop-unswitch.cc</samp>.
+</p>
+<p>Loop splitting. If a loop contains a conditional statement that is
+always true for one part of the iteration space and false for the other
+this pass splits the loop into two, one dealing with one side the other
+only with the other, thereby removing one inner-loop conditional. The
+pass is implemented in <samp>tree-ssa-loop-split.cc</samp>.
+</p>
+<p>The optimizations also use various utility functions contained in
+<samp>tree-ssa-loop-manip.cc</samp>, <samp>cfgloop.cc</samp>, <samp>cfgloopanal.cc</samp> and
+<samp>cfgloopmanip.cc</samp>.
+</p>
+<p>Vectorization. This pass transforms loops to operate on vector types
+instead of scalar types. Data parallelism across loop iterations is exploited
+to group data elements from consecutive iterations into a vector and operate
+on them in parallel. Depending on available target support the loop is
+conceptually unrolled by a factor <code>VF</code> (vectorization factor), which is
+the number of elements operated upon in parallel in each iteration, and the
+<code>VF</code> copies of each scalar operation are fused to form a vector operation.
+Additional loop transformations such as peeling and versioning may take place
+to align the number of iterations, and to align the memory accesses in the
+loop.
+The pass is implemented in <samp>tree-vectorizer.cc</samp> (the main driver),
+<samp>tree-vect-loop.cc</samp> and <samp>tree-vect-loop-manip.cc</samp> (loop specific parts
+and general loop utilities), <samp>tree-vect-slp</samp> (loop-aware SLP
+functionality), <samp>tree-vect-stmts.cc</samp>, <samp>tree-vect-data-refs.cc</samp> and
+<samp>tree-vect-slp-patterns.cc</samp> containing the SLP pattern matcher.
+Analysis of data references is in <samp>tree-data-ref.cc</samp>.
+</p>
+<p>SLP Vectorization. This pass performs vectorization of straight-line code. The
+pass is implemented in <samp>tree-vectorizer.cc</samp> (the main driver),
+<samp>tree-vect-slp.cc</samp>, <samp>tree-vect-stmts.cc</samp> and
+<samp>tree-vect-data-refs.cc</samp>.
+</p>
+<p>Autoparallelization. This pass splits the loop iteration space to run
+into several threads. The pass is implemented in <samp>tree-parloops.cc</samp>.
+</p>
+<p>Graphite is a loop transformation framework based on the polyhedral
+model. Graphite stands for Gimple Represented as Polyhedra. The
+internals of this infrastructure are documented in
+<a href="https://gcc.gnu.org/wiki/Graphite">https://gcc.gnu.org/wiki/Graphite</a><!-- /@w -->. The passes working on
+this representation are implemented in the various <samp>graphite-*</samp>
+files.
+</p>
+</li><li> Tree level if-conversion for vectorizer
+
+<p>This pass applies if-conversion to simple loops to help vectorizer.
+We identify if convertible loops, if-convert statements and merge
+basic blocks in one big block. The idea is to present loop in such
+form so that vectorizer can have one to one mapping between statements
+and available vector operations. This pass is located in
+<samp>tree-if-conv.cc</samp> and is described by <code>pass_if_conversion</code>.
+</p>
+</li><li> Conditional constant propagation
+
+<p>This pass relaxes a lattice of values in order to identify those
+that must be constant even in the presence of conditional branches.
+The pass is located in <samp>tree-ssa-ccp.cc</samp> and is described
+by <code>pass_ccp</code>.
+</p>
+<p>A related pass that works on memory loads and stores, and not just
+register values, is located in <samp>tree-ssa-ccp.cc</samp> and described by
+<code>pass_store_ccp</code>.
+</p>
+</li><li> Conditional copy propagation
+
+<p>This is similar to constant propagation but the lattice of values is
+the &ldquo;copy-of&rdquo; relation. It eliminates redundant copies from the
+code. The pass is located in <samp>tree-ssa-copy.cc</samp> and described by
+<code>pass_copy_prop</code>.
+</p>
+<p>A related pass that works on memory copies, and not just register
+copies, is located in <samp>tree-ssa-copy.cc</samp> and described by
+<code>pass_store_copy_prop</code>.
+</p>
+</li><li> Value range propagation
+
+<p>This transformation is similar to constant propagation but
+instead of propagating single constant values, it propagates
+known value ranges. The implementation is based on Patterson&rsquo;s
+range propagation algorithm (Accurate Static Branch Prediction by
+Value Range Propagation, J. R. C. Patterson, PLDI &rsquo;95). In
+contrast to Patterson&rsquo;s algorithm, this implementation does not
+propagate branch probabilities nor it uses more than a single
+range per SSA name. This means that the current implementation
+cannot be used for branch prediction (though adapting it would
+not be difficult). The pass is located in <samp>tree-vrp.cc</samp> and is
+described by <code>pass_vrp</code>.
+</p>
+</li><li> Folding built-in functions
+
+<p>This pass simplifies built-in functions, as applicable, with constant
+arguments or with inferable string lengths. It is located in
+<samp>tree-ssa-ccp.cc</samp> and is described by <code>pass_fold_builtins</code>.
+</p>
+</li><li> Split critical edges
+
+<p>This pass identifies critical edges and inserts empty basic blocks
+such that the edge is no longer critical. The pass is located in
+<samp>tree-cfg.cc</samp> and is described by <code>pass_split_crit_edges</code>.
+</p>
+</li><li> Control dependence dead code elimination
+
+<p>This pass is a stronger form of dead code elimination that can
+eliminate unnecessary control flow statements. It is located
+in <samp>tree-ssa-dce.cc</samp> and is described by <code>pass_cd_dce</code>.
+</p>
+</li><li> Tail call elimination
+
+<p>This pass identifies function calls that may be rewritten into
+jumps. No code transformation is actually applied here, but the
+data and control flow problem is solved. The code transformation
+requires target support, and so is delayed until RTL. In the
+meantime <code>CALL_EXPR_TAILCALL</code> is set indicating the possibility.
+The pass is located in <samp>tree-tailcall.cc</samp> and is described by
+<code>pass_tail_calls</code>. The RTL transformation is handled by
+<code>fixup_tail_calls</code> in <samp>calls.cc</samp>.
+</p>
+</li><li> Warn for function return without value
+
+<p>For non-void functions, this pass locates return statements that do
+not specify a value and issues a warning. Such a statement may have
+been injected by falling off the end of the function. This pass is
+run last so that we have as much time as possible to prove that the
+statement is not reachable. It is located in <samp>tree-cfg.cc</samp> and
+is described by <code>pass_warn_function_return</code>.
+</p>
+</li><li> Leave static single assignment form
+
+<p>This pass rewrites the function such that it is in normal form. At
+the same time, we eliminate as many single-use temporaries as possible,
+so the intermediate language is no longer GIMPLE, but GENERIC. The
+pass is located in <samp>tree-outof-ssa.cc</samp> and is described by
+<code>pass_del_ssa</code>.
+</p>
+</li><li> Merge PHI nodes that feed into one another
+
+<p>This is part of the CFG cleanup passes. It attempts to join PHI nodes
+from a forwarder CFG block into another block with PHI nodes. The
+pass is located in <samp>tree-cfgcleanup.cc</samp> and is described by
+<code>pass_merge_phi</code>.
+</p>
+</li><li> Return value optimization
+
+<p>If a function always returns the same local variable, and that local
+variable is an aggregate type, then the variable is replaced with the
+return value for the function (i.e., the function&rsquo;s DECL_RESULT). This
+is equivalent to the C++ named return value optimization applied to
+GIMPLE. The pass is located in <samp>tree-nrv.cc</samp> and is described by
+<code>pass_nrv</code>.
+</p>
+</li><li> Return slot optimization
+
+<p>If a function returns a memory object and is called as <code>var =
+foo()</code>, this pass tries to change the call so that the address of
+<code>var</code> is sent to the caller to avoid an extra memory copy. This
+pass is located in <code>tree-nrv.cc</code> and is described by
+<code>pass_return_slot</code>.
+</p>
+</li><li> Optimize calls to <code>__builtin_object_size</code> or
+<code>__builtin_dynamic_object_size</code>
+
+<p>This is a propagation pass similar to CCP that tries to remove calls to
+<code>__builtin_object_size</code> when the upper or lower bound for the size
+of the object can be computed at compile-time. It also tries to replace
+calls to <code>__builtin_dynamic_object_size</code> with an expression that
+evaluates the upper or lower bound for the size of the object. This
+pass is located in <samp>tree-object-size.cc</samp> and is described by
+<code>pass_object_sizes</code>.
+</p>
+</li><li> Loop invariant motion
+
+<p>This pass removes expensive loop-invariant computations out of loops.
+The pass is located in <samp>tree-ssa-loop.cc</samp> and described by
+<code>pass_lim</code>.
+</p>
+</li><li> Loop nest optimizations
+
+<p>This is a family of loop transformations that works on loop nests. It
+includes loop interchange, scaling, skewing and reversal and they are
+all geared to the optimization of data locality in array traversals
+and the removal of dependencies that hamper optimizations such as loop
+parallelization and vectorization. The pass is located in
+<samp>tree-loop-linear.c</samp> and described by
+<code>pass_linear_transform</code>.
+</p>
+</li><li> Removal of empty loops
+
+<p>This pass removes loops with no code in them. The pass is located in
+<samp>tree-ssa-loop-ivcanon.cc</samp> and described by
+<code>pass_empty_loop</code>.
+</p>
+</li><li> Unrolling of small loops
+
+<p>This pass completely unrolls loops with few iterations. The pass
+is located in <samp>tree-ssa-loop-ivcanon.cc</samp> and described by
+<code>pass_complete_unroll</code>.
+</p>
+</li><li> Predictive commoning
+
+<p>This pass makes the code reuse the computations from the previous
+iterations of the loops, especially loads and stores to memory.
+It does so by storing the values of these computations to a bank
+of temporary variables that are rotated at the end of loop. To avoid
+the need for this rotation, the loop is then unrolled and the copies
+of the loop body are rewritten to use the appropriate version of
+the temporary variable. This pass is located in <samp>tree-predcom.cc</samp>
+and described by <code>pass_predcom</code>.
+</p>
+</li><li> Array prefetching
+
+<p>This pass issues prefetch instructions for array references inside
+loops. The pass is located in <samp>tree-ssa-loop-prefetch.cc</samp> and
+described by <code>pass_loop_prefetch</code>.
+</p>
+</li><li> Reassociation
+
+<p>This pass rewrites arithmetic expressions to enable optimizations that
+operate on them, like redundancy elimination and vectorization. The
+pass is located in <samp>tree-ssa-reassoc.cc</samp> and described by
+<code>pass_reassoc</code>.
+</p>
+</li><li> Optimization of <code>stdarg</code> functions
+
+<p>This pass tries to avoid the saving of register arguments into the
+stack on entry to <code>stdarg</code> functions. If the function doesn&rsquo;t
+use any <code>va_start</code> macros, no registers need to be saved. If
+<code>va_start</code> macros are used, the <code>va_list</code> variables don&rsquo;t
+escape the function, it is only necessary to save registers that will
+be used in <code>va_arg</code> macros. For instance, if <code>va_arg</code> is
+only used with integral types in the function, floating point
+registers don&rsquo;t need to be saved. This pass is located in
+<code>tree-stdarg.cc</code> and described by <code>pass_stdarg</code>.
+</p>
+</li></ul>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-passes.html#RTL-passes" accesskey="n" rel="next">RTL passes</a>, Previous: <a href="IPA-passes.html#IPA-passes" accesskey="p" rel="previous">IPA passes</a>, Up: <a href="Passes.html#Passes" accesskey="u" rel="up">Passes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tree-SSA.html b/share/doc/gccint/Tree-SSA.html
new file mode 100644
index 0000000..6093854
--- /dev/null
+++ b/share/doc/gccint/Tree-SSA.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tree SSA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tree SSA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tree SSA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Annotations.html#Annotations" rel="next" title="Annotations">
+<link href="Statement-and-operand-traversals.html#Statement-and-operand-traversals" rel="previous" title="Statement and operand traversals">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tree-SSA"></a>
+<div class="header">
+<p>
+Next: <a href="RTL.html#RTL" accesskey="n" rel="next">RTL</a>, Previous: <a href="GIMPLE.html#GIMPLE" accesskey="p" rel="previous">GIMPLE</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Analysis-and-Optimization-of-GIMPLE-tuples"></a>
+<h2 class="chapter">13 Analysis and Optimization of GIMPLE tuples</h2>
+<a name="index-Tree-SSA"></a>
+<a name="index-Optimization-infrastructure-for-GIMPLE"></a>
+
+<p>GCC uses three main intermediate languages to represent the program
+during compilation: GENERIC, GIMPLE and RTL. GENERIC is a
+language-independent representation generated by each front end. It
+is used to serve as an interface between the parser and optimizer.
+GENERIC is a common representation that is able to represent programs
+written in all the languages supported by GCC.
+</p>
+<p>GIMPLE and RTL are used to optimize the program. GIMPLE is used for
+target and language independent optimizations (e.g., inlining,
+constant propagation, tail call elimination, redundancy elimination,
+etc). Much like GENERIC, GIMPLE is a language independent, tree based
+representation. However, it differs from GENERIC in that the GIMPLE
+grammar is more restrictive: expressions contain no more than 3
+operands (except function calls), it has no control flow structures
+and expressions with side effects are only allowed on the right hand
+side of assignments. See the chapter describing GENERIC and GIMPLE
+for more details.
+</p>
+<p>This chapter describes the data structures and functions used in the
+GIMPLE optimizers (also known as &ldquo;tree optimizers&rdquo; or &ldquo;middle
+end&rdquo;). In particular, it focuses on all the macros, data structures,
+functions and programming constructs needed to implement optimization
+passes for GIMPLE.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Annotations.html#Annotations" accesskey="1">Annotations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Attributes for variables.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="SSA-Operands.html#SSA-Operands" accesskey="2">SSA Operands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SSA names referenced by GIMPLE statements.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="SSA.html#SSA" accesskey="3">SSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Static Single Assignment representation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Alias-analysis.html#Alias-analysis" accesskey="4">Alias analysis</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representing aliased loads and stores.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Memory-model.html#Memory-model" accesskey="5">Memory model</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory model used by the middle-end.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL.html#RTL" accesskey="n" rel="next">RTL</a>, Previous: <a href="GIMPLE.html#GIMPLE" accesskey="p" rel="previous">GIMPLE</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tree-overview.html b/share/doc/gccint/Tree-overview.html
new file mode 100644
index 0000000..9dd11cd
--- /dev/null
+++ b/share/doc/gccint/Tree-overview.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tree overview</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tree overview">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tree overview">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Macros-and-Functions.html#Macros-and-Functions" rel="next" title="Macros and Functions">
+<link href="Deficiencies.html#Deficiencies" rel="previous" title="Deficiencies">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tree-overview"></a>
+<div class="header">
+<p>
+Next: <a href="Types.html#Types" accesskey="n" rel="next">Types</a>, Previous: <a href="Deficiencies.html#Deficiencies" accesskey="p" rel="previous">Deficiencies</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Overview-1"></a>
+<h3 class="section">11.2 Overview</h3>
+<a name="index-tree"></a>
+<a name="index-TREE_005fCODE"></a>
+
+<p>The central data structure used by the internal representation is the
+<code>tree</code>. These nodes, while all of the C type <code>tree</code>, are of
+many varieties. A <code>tree</code> is a pointer type, but the object to
+which it points may be of a variety of types. From this point forward,
+we will refer to trees in ordinary type, rather than in <code>this
+font</code>, except when talking about the actual C type <code>tree</code>.
+</p>
+<p>You can tell what kind of node a particular tree is by using the
+<code>TREE_CODE</code> macro. Many, many macros take trees as input and
+return trees as output. However, most macros require a certain kind of
+tree node as input. In other words, there is a type-system for trees,
+but it is not reflected in the C type-system.
+</p>
+<p>For safety, it is useful to configure GCC with <samp>--enable-checking</samp>.
+Although this results in a significant performance penalty (since all
+tree types are checked at run-time), and is therefore inappropriate in a
+release version, it is extremely helpful during the development process.
+</p>
+<p>Many macros behave as predicates. Many, although not all, of these
+predicates end in &lsquo;<samp>_P</samp>&rsquo;. Do not rely on the result type of these
+macros being of any particular type. You may, however, rely on the fact
+that the type can be compared to <code>0</code>, so that statements like
+</p><div class="smallexample">
+<pre class="smallexample">if (TEST_P (t) &amp;&amp; !TEST_P (y))
+ x = 1;
+</pre></div>
+<p>and
+</p><div class="smallexample">
+<pre class="smallexample">int i = (TEST_P (t) != 0);
+</pre></div>
+<p>are legal. Macros that return <code>int</code> values now may be changed to
+return <code>tree</code> values, or other pointers in the future. Even those
+that continue to return <code>int</code> may return multiple nonzero codes
+where previously they returned only zero and one. Therefore, you should
+not write code like
+</p><div class="smallexample">
+<pre class="smallexample">if (TEST_P (t) == 1)
+</pre></div>
+<p>as this code is not guaranteed to work correctly in the future.
+</p>
+<p>You should not take the address of values returned by the macros or
+functions described here. In particular, no guarantee is given that the
+values are lvalues.
+</p>
+<p>In general, the names of macros are all in uppercase, while the names of
+functions are entirely in lowercase. There are rare exceptions to this
+rule. You should assume that any macro or function whose name is made
+up entirely of uppercase letters may evaluate its arguments more than
+once. You may assume that a macro or function whose name is made up
+entirely of lowercase letters will evaluate its arguments only once.
+</p>
+<p>The <code>error_mark_node</code> is a special tree. Its tree code is
+<code>ERROR_MARK</code>, but since there is only ever one node with that code,
+the usual practice is to compare the tree against
+<code>error_mark_node</code>. (This test is just a test for pointer
+equality.) If an error has occurred during front-end processing the
+flag <code>errorcount</code> will be set. If the front end has encountered
+code it cannot handle, it will issue a message to the user and set
+<code>sorrycount</code>. When these flags are set, any macro or function
+which normally returns a tree of a particular kind may instead return
+the <code>error_mark_node</code>. Thus, if you intend to do any processing of
+erroneous code, you must be prepared to deal with the
+<code>error_mark_node</code>.
+</p>
+<p>Occasionally, a particular tree slot (like an operand to an expression,
+or a particular field in a declaration) will be referred to as
+&ldquo;reserved for the back end&rdquo;. These slots are used to store RTL when
+the tree is converted to RTL for use by the GCC back end. However, if
+that process is not taking place (e.g., if the front end is being hooked
+up to an intelligent editor), then those slots may be used by the
+back end presently in use.
+</p>
+<p>If you encounter situations that do not match this documentation, such
+as tree nodes of types not mentioned here, or macros documented to
+return entities of a particular kind that instead return entities of
+some different kind, you have found a bug, either in the front end or in
+the documentation. Please report these bugs as you would any other
+bug.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Macros-and-Functions.html#Macros-and-Functions" accesskey="1">Macros and Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros and functions that can be used with all trees.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Identifiers.html#Identifiers" accesskey="2">Identifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The names of things.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Containers.html#Containers" accesskey="3">Containers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Lists and vectors.
+</td></tr>
+</table>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Types.html#Types" accesskey="n" rel="next">Types</a>, Previous: <a href="Deficiencies.html#Deficiencies" accesskey="p" rel="previous">Deficiencies</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Troubleshooting.html b/share/doc/gccint/Troubleshooting.html
new file mode 100644
index 0000000..974d3f1
--- /dev/null
+++ b/share/doc/gccint/Troubleshooting.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Troubleshooting</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Troubleshooting">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Troubleshooting">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="Plugins.html#Plugins" rel="next" title="Plugins">
+<link href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" rel="previous" title="Invoking the garbage collector">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Troubleshooting"></a>
+<div class="header">
+<p>
+Previous: <a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" accesskey="p" rel="previous">Invoking the garbage collector</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Troubleshooting-the-garbage-collector"></a>
+<h3 class="section">23.7 Troubleshooting the garbage collector</h3>
+<a name="index-garbage-collector_002c-troubleshooting"></a>
+
+<p>With the current garbage collector implementation, most issues should
+show up as GCC compilation errors. Some of the most commonly
+encountered issues are described below.
+</p>
+<ul>
+<li> Gengtype does not produce allocators for a <code>GTY</code>-marked type.
+Gengtype checks if there is at least one possible path from GC roots to
+at least one instance of each type before outputting allocators. If
+there is no such path, the <code>GTY</code> markers will be ignored and no
+allocators will be output. Solve this by making sure that there exists
+at least one such path. If creating it is unfeasible or raises a &ldquo;code
+smell&rdquo;, consider if you really must use GC for allocating such type.
+
+</li><li> Link-time errors about undefined <code>gt_ggc_r_foo_bar</code> and
+similarly-named symbols. Check if your <samp>foo_bar</samp> source file has
+<code>#include &quot;gt-foo_bar.h&quot;</code> as its very last line.
+
+</li></ul>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tuple-representation.html b/share/doc/gccint/Tuple-representation.html
new file mode 100644
index 0000000..67f5e26
--- /dev/null
+++ b/share/doc/gccint/Tuple-representation.html
@@ -0,0 +1,297 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tuple representation</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tuple representation">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tuple representation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" rel="next" title="Class hierarchy of GIMPLE statements">
+<link href="GIMPLE.html#GIMPLE" rel="previous" title="GIMPLE">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tuple-representation"></a>
+<div class="header">
+<p>
+Next: <a href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" accesskey="n" rel="next">Class hierarchy of GIMPLE statements</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tuple-representation-1"></a>
+<h3 class="section">12.1 Tuple representation</h3>
+<a name="index-tuples"></a>
+
+<p>GIMPLE instructions are tuples of variable size divided in two
+groups: a header describing the instruction and its locations,
+and a variable length body with all the operands. Tuples are
+organized into a hierarchy with 3 main classes of tuples.
+</p>
+<a name="gimple-_0028gsbase_0029"></a>
+<h4 class="subsection">12.1.1 <code>gimple</code> (gsbase)</h4>
+<a name="index-gimple"></a>
+
+<p>This is the root of the hierarchy, it holds basic information
+needed by most GIMPLE statements. There are some fields that
+may not be relevant to every GIMPLE statement, but those were
+moved into the base structure to take advantage of holes left by
+other fields (thus making the structure more compact). The
+structure takes 4 words (32 bytes) on 64 bit hosts:
+</p>
+<table>
+<tr><td>Field</td><td>Size (bits)</td></tr>
+<tr><td><code>code</code></td><td>8</td></tr>
+<tr><td><code>subcode</code></td><td>16</td></tr>
+<tr><td><code>no_warning</code></td><td>1</td></tr>
+<tr><td><code>visited</code></td><td>1</td></tr>
+<tr><td><code>nontemporal_move</code></td><td>1</td></tr>
+<tr><td><code>plf</code></td><td>2</td></tr>
+<tr><td><code>modified</code></td><td>1</td></tr>
+<tr><td><code>has_volatile_ops</code></td><td>1</td></tr>
+<tr><td><code>references_memory_p</code></td><td>1</td></tr>
+<tr><td><code>uid</code></td><td>32</td></tr>
+<tr><td><code>location</code></td><td>32</td></tr>
+<tr><td><code>num_ops</code></td><td>32</td></tr>
+<tr><td><code>bb</code></td><td>64</td></tr>
+<tr><td><code>block</code></td><td>63</td></tr>
+<tr><td>Total size</td><td>32 bytes</td></tr>
+</table>
+
+<ul>
+<li> <code>code</code>
+Main identifier for a GIMPLE instruction.
+
+</li><li> <code>subcode</code>
+Used to distinguish different variants of the same basic
+instruction or provide flags applicable to a given code. The
+<code>subcode</code> flags field has different uses depending on the code of
+the instruction, but mostly it distinguishes instructions of the
+same family. The most prominent use of this field is in
+assignments, where subcode indicates the operation done on the
+RHS of the assignment. For example, a = b + c is encoded as
+<code>GIMPLE_ASSIGN &lt;PLUS_EXPR, a, b, c&gt;</code>.
+
+</li><li> <code>no_warning</code>
+Bitflag to indicate whether a warning has already been issued on
+this statement.
+
+</li><li> <code>visited</code>
+General purpose &ldquo;visited&rdquo; marker. Set and cleared by each pass
+when needed.
+
+</li><li> <code>nontemporal_move</code>
+Bitflag used in assignments that represent non-temporal moves.
+Although this bitflag is only used in assignments, it was moved
+into the base to take advantage of the bit holes left by the
+previous fields.
+
+</li><li> <code>plf</code>
+Pass Local Flags. This 2-bit mask can be used as general purpose
+markers by any pass. Passes are responsible for clearing and
+setting these two flags accordingly.
+
+</li><li> <code>modified</code>
+Bitflag to indicate whether the statement has been modified.
+Used mainly by the operand scanner to determine when to re-scan a
+statement for operands.
+
+</li><li> <code>has_volatile_ops</code>
+Bitflag to indicate whether this statement contains operands that
+have been marked volatile.
+
+</li><li> <code>references_memory_p</code>
+Bitflag to indicate whether this statement contains memory
+references (i.e., its operands are either global variables, or
+pointer dereferences or anything that must reside in memory).
+
+</li><li> <code>uid</code>
+This is an unsigned integer used by passes that want to assign
+IDs to every statement. These IDs must be assigned and used by
+each pass.
+
+</li><li> <code>location</code>
+This is a <code>location_t</code> identifier to specify source code
+location for this statement. It is inherited from the front
+end.
+
+</li><li> <code>num_ops</code>
+Number of operands that this statement has. This specifies the
+size of the operand vector embedded in the tuple. Only used in
+some tuples, but it is declared in the base tuple to take
+advantage of the 32-bit hole left by the previous fields.
+
+</li><li> <code>bb</code>
+Basic block holding the instruction.
+
+</li><li> <code>block</code>
+Lexical block holding this statement. Also used for debug
+information generation.
+</li></ul>
+
+<a name="gimple_005fstatement_005fwith_005fops"></a>
+<h4 class="subsection">12.1.2 <code>gimple_statement_with_ops</code></h4>
+<a name="index-gimple_005fstatement_005fwith_005fops"></a>
+
+<p>This tuple is actually split in two:
+<code>gimple_statement_with_ops_base</code> and
+<code>gimple_statement_with_ops</code>. This is needed to accommodate the
+way the operand vector is allocated. The operand vector is
+defined to be an array of 1 element. So, to allocate a dynamic
+number of operands, the memory allocator (<code>gimple_alloc</code>) simply
+allocates enough memory to hold the structure itself plus <code>N
+- 1</code> operands which run &ldquo;off the end&rdquo; of the structure. For
+example, to allocate space for a tuple with 3 operands,
+<code>gimple_alloc</code> reserves <code>sizeof (struct
+gimple_statement_with_ops) + 2 * sizeof (tree)</code> bytes.
+</p>
+<p>On the other hand, several fields in this tuple need to be shared
+with the <code>gimple_statement_with_memory_ops</code> tuple. So, these
+common fields are placed in <code>gimple_statement_with_ops_base</code> which
+is then inherited from the other two tuples.
+</p>
+
+<table>
+<tr><td><code>gsbase</code></td><td>256</td></tr>
+<tr><td><code>def_ops</code></td><td>64</td></tr>
+<tr><td><code>use_ops</code></td><td>64</td></tr>
+<tr><td><code>op</code></td><td><code>num_ops</code> * 64</td></tr>
+<tr><td>Total size</td><td>48 + 8 * <code>num_ops</code> bytes</td></tr>
+</table>
+
+<ul>
+<li> <code>gsbase</code>
+Inherited from <code>struct gimple</code>.
+
+</li><li> <code>def_ops</code>
+Array of pointers into the operand array indicating all the slots that
+contain a variable written-to by the statement. This array is
+also used for immediate use chaining. Note that it would be
+possible to not rely on this array, but the changes required to
+implement this are pretty invasive.
+
+</li><li> <code>use_ops</code>
+Similar to <code>def_ops</code> but for variables read by the statement.
+
+</li><li> <code>op</code>
+Array of trees with <code>num_ops</code> slots.
+</li></ul>
+
+<a name="gimple_005fstatement_005fwith_005fmemory_005fops"></a>
+<h4 class="subsection">12.1.3 <code>gimple_statement_with_memory_ops</code></h4>
+
+<p>This tuple is essentially identical to <code>gimple_statement_with_ops</code>,
+except that it contains 4 additional fields to hold vectors
+related memory stores and loads. Similar to the previous case,
+the structure is split in two to accommodate for the operand
+vector (<code>gimple_statement_with_memory_ops_base</code> and
+<code>gimple_statement_with_memory_ops</code>).
+</p>
+
+<table>
+<tr><td>Field</td><td>Size (bits)</td></tr>
+<tr><td><code>gsbase</code></td><td>256</td></tr>
+<tr><td><code>def_ops</code></td><td>64</td></tr>
+<tr><td><code>use_ops</code></td><td>64</td></tr>
+<tr><td><code>vdef_ops</code></td><td>64</td></tr>
+<tr><td><code>vuse_ops</code></td><td>64</td></tr>
+<tr><td><code>stores</code></td><td>64</td></tr>
+<tr><td><code>loads</code></td><td>64</td></tr>
+<tr><td><code>op</code></td><td><code>num_ops</code> * 64</td></tr>
+<tr><td>Total size</td><td>80 + 8 * <code>num_ops</code> bytes</td></tr>
+</table>
+
+<ul>
+<li> <code>vdef_ops</code>
+Similar to <code>def_ops</code> but for <code>VDEF</code> operators. There is
+one entry per memory symbol written by this statement. This is
+used to maintain the memory SSA use-def and def-def chains.
+
+</li><li> <code>vuse_ops</code>
+Similar to <code>use_ops</code> but for <code>VUSE</code> operators. There is
+one entry per memory symbol loaded by this statement. This is
+used to maintain the memory SSA use-def chains.
+
+</li><li> <code>stores</code>
+Bitset with all the UIDs for the symbols written-to by the
+statement. This is different than <code>vdef_ops</code> in that all the
+affected symbols are mentioned in this set. If memory
+partitioning is enabled, the <code>vdef_ops</code> vector will refer to memory
+partitions. Furthermore, no SSA information is stored in this
+set.
+
+</li><li> <code>loads</code>
+Similar to <code>stores</code>, but for memory loads. (Note that there
+is some amount of redundancy here, it should be possible to
+reduce memory utilization further by removing these sets).
+</li></ul>
+
+<p>All the other tuples are defined in terms of these three basic
+ones. Each tuple will add some fields.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements" accesskey="n" rel="next">Class hierarchy of GIMPLE statements</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Tuple-specific-accessors.html b/share/doc/gccint/Tuple-specific-accessors.html
new file mode 100644
index 0000000..1c0ba1f
--- /dev/null
+++ b/share/doc/gccint/Tuple-specific-accessors.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Tuple specific accessors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Tuple specific accessors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tuple specific accessors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GIMPLE.html#GIMPLE" rel="up" title="GIMPLE">
+<link href="GIMPLE_005fASM.html#GIMPLE_005fASM" rel="next" title="GIMPLE_ASM">
+<link href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements" rel="previous" title="Manipulating GIMPLE statements">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Tuple-specific-accessors"></a>
+<div class="header">
+<p>
+Next: <a href="GIMPLE-sequences.html#GIMPLE-sequences" accesskey="n" rel="next">GIMPLE sequences</a>, Previous: <a href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements" accesskey="p" rel="previous">Manipulating GIMPLE statements</a>, Up: <a href="GIMPLE.html#GIMPLE" accesskey="u" rel="up">GIMPLE</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Tuple-specific-accessors-1"></a>
+<h3 class="section">12.8 Tuple specific accessors</h3>
+<a name="index-Tuple-specific-accessors"></a>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fASM.html#GIMPLE_005fASM" accesskey="1"><code>GIMPLE_ASM</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN" accesskey="2"><code>GIMPLE_ASSIGN</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fBIND.html#GIMPLE_005fBIND" accesskey="3"><code>GIMPLE_BIND</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fCALL.html#GIMPLE_005fCALL" accesskey="4"><code>GIMPLE_CALL</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH" accesskey="5"><code>GIMPLE_CATCH</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fCOND.html#GIMPLE_005fCOND" accesskey="6"><code>GIMPLE_COND</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG" accesskey="7"><code>GIMPLE_DEBUG</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER" accesskey="8"><code>GIMPLE_EH_FILTER</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL" accesskey="9"><code>GIMPLE_LABEL</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO"><code>GIMPLE_GOTO</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fNOP.html#GIMPLE_005fNOP"><code>GIMPLE_NOP</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD"><code>GIMPLE_OMP_ATOMIC_LOAD</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE"><code>GIMPLE_OMP_ATOMIC_STORE</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE"><code>GIMPLE_OMP_CONTINUE</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL"><code>GIMPLE_OMP_CRITICAL</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR"><code>GIMPLE_OMP_FOR</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER"><code>GIMPLE_OMP_MASTER</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED"><code>GIMPLE_OMP_ORDERED</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL"><code>GIMPLE_OMP_PARALLEL</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN"><code>GIMPLE_OMP_RETURN</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION"><code>GIMPLE_OMP_SECTION</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS"><code>GIMPLE_OMP_SECTIONS</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE"><code>GIMPLE_OMP_SINGLE</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fPHI.html#GIMPLE_005fPHI"><code>GIMPLE_PHI</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fRESX.html#GIMPLE_005fRESX"><code>GIMPLE_RESX</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN"><code>GIMPLE_RETURN</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH"><code>GIMPLE_SWITCH</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fTRY.html#GIMPLE_005fTRY"><code>GIMPLE_TRY</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR"><code>GIMPLE_WITH_CLEANUP_EXPR</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Type-Information.html b/share/doc/gccint/Type-Information.html
new file mode 100644
index 0000000..c6024c9
--- /dev/null
+++ b/share/doc/gccint/Type-Information.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Type Information</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Type Information">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Type Information">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="GTY-Options.html#GTY-Options" rel="next" title="GTY Options">
+<link href="Header-Dirs.html#Header-Dirs" rel="previous" title="Header Dirs">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Type-Information"></a>
+<div class="header">
+<p>
+Next: <a href="Plugins.html#Plugins" accesskey="n" rel="next">Plugins</a>, Previous: <a href="Header-Dirs.html#Header-Dirs" accesskey="p" rel="previous">Header Dirs</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Memory-Management-and-Type-Information"></a>
+<h2 class="chapter">23 Memory Management and Type Information</h2>
+<a name="index-GGC"></a>
+<a name="index-GTY"></a>
+
+<p>GCC uses some fairly sophisticated memory management techniques, which
+involve determining information about GCC&rsquo;s data structures from GCC&rsquo;s
+source code and using this information to perform garbage collection and
+implement precompiled headers.
+</p>
+<p>A full C++ parser would be too complicated for this task, so a limited
+subset of C++ is interpreted and special markers are used to determine
+what parts of the source to look at. All <code>struct</code>, <code>union</code>
+and <code>template</code> structure declarations that define data structures
+that are allocated under control of the garbage collector must be
+marked. All global variables that hold pointers to garbage-collected
+memory must also be marked. Finally, all global variables that need
+to be saved and restored by a precompiled header must be marked. (The
+precompiled header mechanism can only save static variables if they&rsquo;re
+scalar. Complex data structures must be allocated in garbage-collected
+memory to be saved in a precompiled header.)
+</p>
+<p>The full format of a marker is
+</p><div class="smallexample">
+<pre class="smallexample">GTY (([<var>option</var>] [(<var>param</var>)], [<var>option</var>] [(<var>param</var>)] &hellip;))
+</pre></div>
+<p>but in most cases no options are needed. The outer double parentheses
+are still necessary, though: <code>GTY(())</code>. Markers can appear:
+</p>
+<ul>
+<li> In a structure definition, before the open brace;
+</li><li> In a global variable declaration, after the keyword <code>static</code> or
+<code>extern</code>; and
+</li><li> In a structure field definition, before the name of the field.
+</li></ul>
+
+<p>Here are some examples of marking simple data structures and globals.
+</p>
+<div class="smallexample">
+<pre class="smallexample">struct GTY(()) <var>tag</var>
+{
+ <var>fields</var>&hellip;
+};
+
+typedef struct GTY(()) <var>tag</var>
+{
+ <var>fields</var>&hellip;
+} *<var>typename</var>;
+
+static GTY(()) struct <var>tag</var> *<var>list</var>; /* <span class="roman">points to GC memory</span> */
+static GTY(()) int <var>counter</var>; /* <span class="roman">save counter in a PCH</span> */
+</pre></div>
+
+<p>The parser understands simple typedefs such as
+<code>typedef struct <var>tag</var> *<var>name</var>;</code> and
+<code>typedef int <var>name</var>;</code>.
+These don&rsquo;t need to be marked.
+</p>
+<p>However, in combination with GTY, avoid using typedefs such as
+<code>typedef int_hash&lt;&hellip;&gt; <var>name</var>;</code>
+for these generate infinite-recursion code.
+See <a href="https://gcc.gnu.org/PR103157">PR103157</a>.
+Instead, you may use
+<code>struct <var>name</var> : int_hash&lt;&hellip;&gt; {};</code>,
+for example.
+</p>
+<p>Since <code>gengtype</code>&rsquo;s understanding of C++ is limited, there are
+several constructs and declarations that are not supported inside
+classes/structures marked for automatic GC code generation. The
+following C++ constructs produce a <code>gengtype</code> error on
+structures/classes marked for automatic GC code generation:
+</p>
+<ul>
+<li> Type definitions inside classes/structures are not supported.
+</li><li> Enumerations inside classes/structures are not supported.
+</li></ul>
+
+<p>If you have a class or structure using any of the above constructs,
+you need to mark that class as <code>GTY ((user))</code> and provide your
+own marking routines (see section <a href="User-GC.html#User-GC">User GC</a> for details).
+</p>
+<p>It is always valid to include function definitions inside classes.
+Those are always ignored by <code>gengtype</code>, as it only cares about
+data members.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="GTY-Options.html#GTY-Options" accesskey="1">GTY Options</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What goes inside a <code>GTY(())</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Inheritance-and-GTY.html#Inheritance-and-GTY" accesskey="2">Inheritance and GTY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Adding GTY to a class hierarchy.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="User-GC.html#User-GC" accesskey="3">User GC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Adding user-provided GC marking routines.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GGC-Roots.html#GGC-Roots" accesskey="4">GGC Roots</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making global variables GGC roots.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Files.html#Files" accesskey="5">Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the generated files work.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector" accesskey="6">Invoking the garbage collector</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to invoke the garbage collector.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Troubleshooting.html#Troubleshooting" accesskey="7">Troubleshooting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When something does not work as expected.
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Plugins.html#Plugins" accesskey="n" rel="next">Plugins</a>, Previous: <a href="Header-Dirs.html#Header-Dirs" accesskey="p" rel="previous">Header Dirs</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Type-Layout.html b/share/doc/gccint/Type-Layout.html
new file mode 100644
index 0000000..1fb29cb
--- /dev/null
+++ b/share/doc/gccint/Type-Layout.html
@@ -0,0 +1,466 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Type Layout</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Type Layout">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Type Layout">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Registers.html#Registers" rel="next" title="Registers">
+<link href="Storage-Layout.html#Storage-Layout" rel="previous" title="Storage Layout">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Type-Layout"></a>
+<div class="header">
+<p>
+Next: <a href="Registers.html#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="Storage-Layout.html#Storage-Layout" accesskey="p" rel="previous">Storage Layout</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Layout-of-Source-Language-Data-Types"></a>
+<h3 class="section">18.6 Layout of Source Language Data Types</h3>
+
+<p>These macros define the sizes and other characteristics of the standard
+basic data types used in programs being compiled. Unlike the macros in
+the previous section, these apply to specific features of C and related
+languages, rather than to fundamental aspects of storage layout.
+</p>
+<dl>
+<dt><a name="index-INT_005fTYPE_005fSIZE"></a>Macro: <strong>INT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>int</code> on the
+target machine. If you don&rsquo;t define this, the default is one word.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHORT_005fTYPE_005fSIZE"></a>Macro: <strong>SHORT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>short</code> on the
+target machine. If you don&rsquo;t define this, the default is half a word.
+(If this would be less than one storage unit, it is rounded up to one
+unit.)
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long</code> on the
+target machine. If you don&rsquo;t define this, the default is one word.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ADA_005fLONG_005fTYPE_005fSIZE"></a>Macro: <strong>ADA_LONG_TYPE_SIZE</strong></dt>
+<dd><p>On some machines, the size used for the Ada equivalent of the type
+<code>long</code> by a native Ada compiler differs from that used by C. In
+that situation, define this macro to be a C expression to be used for
+the size of that type. If you don&rsquo;t define this, the default is the
+value of <code>LONG_TYPE_SIZE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fLONG_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_LONG_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long long</code> on the
+target machine. If you don&rsquo;t define this, the default is two
+words. If you want to support GNU Ada on your machine, the value of this
+macro must be at least 64.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-CHAR_005fTYPE_005fSIZE"></a>Macro: <strong>CHAR_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>char</code> on the
+target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-BOOL_005fTYPE_005fSIZE"></a>Macro: <strong>BOOL_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the C++ type <code>bool</code> and
+C99 type <code>_Bool</code> on the target machine. If you don&rsquo;t define
+this, and you probably shouldn&rsquo;t, the default is <code>CHAR_TYPE_SIZE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FLOAT_005fTYPE_005fSIZE"></a>Macro: <strong>FLOAT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>float</code> on the
+target machine. If you don&rsquo;t define this, the default is one word.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DOUBLE_005fTYPE_005fSIZE"></a>Macro: <strong>DOUBLE_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>double</code> on the
+target machine. If you don&rsquo;t define this, the default is two
+words.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fDOUBLE_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_DOUBLE_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long double</code> on
+the target machine. If you don&rsquo;t define this, the default is two
+words.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHORT_005fFRACT_005fTYPE_005fSIZE"></a>Macro: <strong>SHORT_FRACT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>short _Fract</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-FRACT_005fTYPE_005fSIZE"></a>Macro: <strong>FRACT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>_Fract</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 2</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fFRACT_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_FRACT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long _Fract</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 4</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fLONG_005fFRACT_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_LONG_FRACT_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long long _Fract</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 8</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SHORT_005fACCUM_005fTYPE_005fSIZE"></a>Macro: <strong>SHORT_ACCUM_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>short _Accum</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 2</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ACCUM_005fTYPE_005fSIZE"></a>Macro: <strong>ACCUM_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>_Accum</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 4</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fACCUM_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_ACCUM_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long _Accum</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 8</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LONG_005fLONG_005fACCUM_005fTYPE_005fSIZE"></a>Macro: <strong>LONG_LONG_ACCUM_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the type <code>long long _Accum</code> on
+the target machine. If you don&rsquo;t define this, the default is
+<code>BITS_PER_UNIT * 16</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-LIBGCC2_005fGNU_005fPREFIX"></a>Macro: <strong>LIBGCC2_GNU_PREFIX</strong></dt>
+<dd><p>This macro corresponds to the <code>TARGET_LIBFUNC_GNU_PREFIX</code> target
+hook and should be defined if that hook is overriden to be true. It
+causes function names in libgcc to be changed to use a <code>__gnu_</code>
+prefix for their name rather than the default <code>__</code>. A port which
+uses this macro should also arrange to use <samp>t-gnu-prefix</samp> in
+the libgcc <samp>config.host</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WIDEST_005fHARDWARE_005fFP_005fSIZE"></a>Macro: <strong>WIDEST_HARDWARE_FP_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the widest floating-point format
+supported by the hardware. If you define this macro, you must specify a
+value less than or equal to the value of <code>LONG_DOUBLE_TYPE_SIZE</code>.
+If you do not define this macro, the value of <code>LONG_DOUBLE_TYPE_SIZE</code>
+is the default.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-DEFAULT_005fSIGNED_005fCHAR"></a>Macro: <strong>DEFAULT_SIGNED_CHAR</strong></dt>
+<dd><p>An expression whose value is 1 or 0, according to whether the type
+<code>char</code> should be signed or unsigned by default. The user can
+always override this default with the options <samp>-fsigned-char</samp>
+and <samp>-funsigned-char</samp>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fDEFAULT_005fSHORT_005fENUMS"></a>Target Hook: <em>bool</em> <strong>TARGET_DEFAULT_SHORT_ENUMS</strong> <em>(void)</em></dt>
+<dd><p>This target hook should return true if the compiler should give an
+<code>enum</code> type only as many bytes as it takes to represent the range
+of possible values of that type. It should return false if all
+<code>enum</code> types should be allocated like <code>int</code>.
+</p>
+<p>The default is to return false.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SIZE_005fTYPE"></a>Macro: <strong>SIZE_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type to use
+for size values. The typedef name <code>size_t</code> is defined using the
+contents of the string.
+</p>
+<p>The string can contain more than one keyword. If so, separate them with
+spaces, and write first any length keyword, then <code>unsigned</code> if
+appropriate, and finally <code>int</code>. The string must exactly match one
+of the data type names defined in the function
+<code>c_common_nodes_and_builtins</code> in the file <samp>c-family/c-common.cc</samp>.
+You may not omit <code>int</code> or change the order&mdash;that would cause the
+compiler to crash on startup.
+</p>
+<p>If you don&rsquo;t define this macro, the default is <code>&quot;long unsigned
+int&quot;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SIZETYPE"></a>Macro: <strong>SIZETYPE</strong></dt>
+<dd><p>GCC defines internal types (<code>sizetype</code>, <code>ssizetype</code>,
+<code>bitsizetype</code> and <code>sbitsizetype</code>) for expressions
+dealing with size. This macro is a C expression for a string describing
+the name of the data type from which the precision of <code>sizetype</code>
+is extracted.
+</p>
+<p>The string has the same restrictions as <code>SIZE_TYPE</code> string.
+</p>
+<p>If you don&rsquo;t define this macro, the default is <code>SIZE_TYPE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-PTRDIFF_005fTYPE"></a>Macro: <strong>PTRDIFF_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type to use
+for the result of subtracting two pointers. The typedef name
+<code>ptrdiff_t</code> is defined using the contents of the string. See
+<code>SIZE_TYPE</code> above for more information.
+</p>
+<p>If you don&rsquo;t define this macro, the default is <code>&quot;long int&quot;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WCHAR_005fTYPE"></a>Macro: <strong>WCHAR_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type to use
+for wide characters. The typedef name <code>wchar_t</code> is defined using
+the contents of the string. See <code>SIZE_TYPE</code> above for more
+information.
+</p>
+<p>If you don&rsquo;t define this macro, the default is <code>&quot;int&quot;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WCHAR_005fTYPE_005fSIZE"></a>Macro: <strong>WCHAR_TYPE_SIZE</strong></dt>
+<dd><p>A C expression for the size in bits of the data type for wide
+characters. This is used in <code>cpp</code>, which cannot make use of
+<code>WCHAR_TYPE</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-WINT_005fTYPE"></a>Macro: <strong>WINT_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type to
+use for wide characters passed to <code>printf</code> and returned from
+<code>getwc</code>. The typedef name <code>wint_t</code> is defined using the
+contents of the string. See <code>SIZE_TYPE</code> above for more
+information.
+</p>
+<p>If you don&rsquo;t define this macro, the default is <code>&quot;unsigned int&quot;</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-INTMAX_005fTYPE"></a>Macro: <strong>INTMAX_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type that
+can represent any value of any standard or extended signed integer type.
+The typedef name <code>intmax_t</code> is defined using the contents of the
+string. See <code>SIZE_TYPE</code> above for more information.
+</p>
+<p>If you don&rsquo;t define this macro, the default is the first of
+<code>&quot;int&quot;</code>, <code>&quot;long int&quot;</code>, or <code>&quot;long long int&quot;</code> that has as
+much precision as <code>long long int</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-UINTMAX_005fTYPE"></a>Macro: <strong>UINTMAX_TYPE</strong></dt>
+<dd><p>A C expression for a string describing the name of the data type that
+can represent any value of any standard or extended unsigned integer
+type. The typedef name <code>uintmax_t</code> is defined using the contents
+of the string. See <code>SIZE_TYPE</code> above for more information.
+</p>
+<p>If you don&rsquo;t define this macro, the default is the first of
+<code>&quot;unsigned int&quot;</code>, <code>&quot;long unsigned int&quot;</code>, or <code>&quot;long long
+unsigned int&quot;</code> that has as much precision as <code>long long unsigned
+int</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-SIG_005fATOMIC_005fTYPE"></a>Macro: <strong>SIG_ATOMIC_TYPE</strong></dt>
+<dt><a name="index-INT8_005fTYPE"></a>Macro: <strong>INT8_TYPE</strong></dt>
+<dt><a name="index-INT16_005fTYPE"></a>Macro: <strong>INT16_TYPE</strong></dt>
+<dt><a name="index-INT32_005fTYPE"></a>Macro: <strong>INT32_TYPE</strong></dt>
+<dt><a name="index-INT64_005fTYPE"></a>Macro: <strong>INT64_TYPE</strong></dt>
+<dt><a name="index-UINT8_005fTYPE"></a>Macro: <strong>UINT8_TYPE</strong></dt>
+<dt><a name="index-UINT16_005fTYPE"></a>Macro: <strong>UINT16_TYPE</strong></dt>
+<dt><a name="index-UINT32_005fTYPE"></a>Macro: <strong>UINT32_TYPE</strong></dt>
+<dt><a name="index-UINT64_005fTYPE"></a>Macro: <strong>UINT64_TYPE</strong></dt>
+<dt><a name="index-INT_005fLEAST8_005fTYPE"></a>Macro: <strong>INT_LEAST8_TYPE</strong></dt>
+<dt><a name="index-INT_005fLEAST16_005fTYPE"></a>Macro: <strong>INT_LEAST16_TYPE</strong></dt>
+<dt><a name="index-INT_005fLEAST32_005fTYPE"></a>Macro: <strong>INT_LEAST32_TYPE</strong></dt>
+<dt><a name="index-INT_005fLEAST64_005fTYPE"></a>Macro: <strong>INT_LEAST64_TYPE</strong></dt>
+<dt><a name="index-UINT_005fLEAST8_005fTYPE"></a>Macro: <strong>UINT_LEAST8_TYPE</strong></dt>
+<dt><a name="index-UINT_005fLEAST16_005fTYPE"></a>Macro: <strong>UINT_LEAST16_TYPE</strong></dt>
+<dt><a name="index-UINT_005fLEAST32_005fTYPE"></a>Macro: <strong>UINT_LEAST32_TYPE</strong></dt>
+<dt><a name="index-UINT_005fLEAST64_005fTYPE"></a>Macro: <strong>UINT_LEAST64_TYPE</strong></dt>
+<dt><a name="index-INT_005fFAST8_005fTYPE"></a>Macro: <strong>INT_FAST8_TYPE</strong></dt>
+<dt><a name="index-INT_005fFAST16_005fTYPE"></a>Macro: <strong>INT_FAST16_TYPE</strong></dt>
+<dt><a name="index-INT_005fFAST32_005fTYPE"></a>Macro: <strong>INT_FAST32_TYPE</strong></dt>
+<dt><a name="index-INT_005fFAST64_005fTYPE"></a>Macro: <strong>INT_FAST64_TYPE</strong></dt>
+<dt><a name="index-UINT_005fFAST8_005fTYPE"></a>Macro: <strong>UINT_FAST8_TYPE</strong></dt>
+<dt><a name="index-UINT_005fFAST16_005fTYPE"></a>Macro: <strong>UINT_FAST16_TYPE</strong></dt>
+<dt><a name="index-UINT_005fFAST32_005fTYPE"></a>Macro: <strong>UINT_FAST32_TYPE</strong></dt>
+<dt><a name="index-UINT_005fFAST64_005fTYPE"></a>Macro: <strong>UINT_FAST64_TYPE</strong></dt>
+<dt><a name="index-INTPTR_005fTYPE"></a>Macro: <strong>INTPTR_TYPE</strong></dt>
+<dt><a name="index-UINTPTR_005fTYPE"></a>Macro: <strong>UINTPTR_TYPE</strong></dt>
+<dd><p>C expressions for the standard types <code>sig_atomic_t</code>,
+<code>int8_t</code>, <code>int16_t</code>, <code>int32_t</code>, <code>int64_t</code>,
+<code>uint8_t</code>, <code>uint16_t</code>, <code>uint32_t</code>, <code>uint64_t</code>,
+<code>int_least8_t</code>, <code>int_least16_t</code>, <code>int_least32_t</code>,
+<code>int_least64_t</code>, <code>uint_least8_t</code>, <code>uint_least16_t</code>,
+<code>uint_least32_t</code>, <code>uint_least64_t</code>, <code>int_fast8_t</code>,
+<code>int_fast16_t</code>, <code>int_fast32_t</code>, <code>int_fast64_t</code>,
+<code>uint_fast8_t</code>, <code>uint_fast16_t</code>, <code>uint_fast32_t</code>,
+<code>uint_fast64_t</code>, <code>intptr_t</code>, and <code>uintptr_t</code>. See
+<code>SIZE_TYPE</code> above for more information.
+</p>
+<p>If any of these macros evaluates to a null pointer, the corresponding
+type is not supported; if GCC is configured to provide
+<code>&lt;stdint.h&gt;</code> in such a case, the header provided may not conform
+to C99, depending on the type in question. The defaults for all of
+these macros are null pointers.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPTRMEMFUNC_005fVBIT_005fLOCATION"></a>Macro: <strong>TARGET_PTRMEMFUNC_VBIT_LOCATION</strong></dt>
+<dd><p>The C++ compiler represents a pointer-to-member-function with a struct
+that looks like:
+</p>
+<div class="smallexample">
+<pre class="smallexample"> struct {
+ union {
+ void (*fn)();
+ ptrdiff_t vtable_index;
+ };
+ ptrdiff_t delta;
+ };
+</pre></div>
+
+<p>The C++ compiler must use one bit to indicate whether the function that
+will be called through a pointer-to-member-function is virtual.
+Normally, we assume that the low-order bit of a function pointer must
+always be zero. Then, by ensuring that the vtable_index is odd, we can
+distinguish which variant of the union is in use. But, on some
+platforms function pointers can be odd, and so this doesn&rsquo;t work. In
+that case, we use the low-order bit of the <code>delta</code> field, and shift
+the remainder of the <code>delta</code> field to the left.
+</p>
+<p>GCC will automatically make the right selection about where to store
+this bit using the <code>FUNCTION_BOUNDARY</code> setting for your platform.
+However, some platforms such as ARM/Thumb have <code>FUNCTION_BOUNDARY</code>
+set such that functions always start at even addresses, but the lowest
+bit of pointers to functions indicate whether the function at that
+address is in ARM or Thumb mode. If this is the case of your
+architecture, you should define this macro to
+<code>ptrmemfunc_vbit_in_delta</code>.
+</p>
+<p>In general, you should not have to define this macro. On architectures
+in which function addresses are always even, according to
+<code>FUNCTION_BOUNDARY</code>, GCC will automatically define this macro to
+<code>ptrmemfunc_vbit_in_pfn</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVTABLE_005fUSES_005fDESCRIPTORS"></a>Macro: <strong>TARGET_VTABLE_USES_DESCRIPTORS</strong></dt>
+<dd><p>Normally, the C++ compiler uses function pointers in vtables. This
+macro allows the target to change to use &ldquo;function descriptors&rdquo;
+instead. Function descriptors are found on targets for whom a
+function pointer is actually a small data structure. Normally the
+data structure consists of the actual code address plus a data
+pointer to which the function&rsquo;s data is relative.
+</p>
+<p>If vtables are used, the value of this macro should be the number
+of words that the function descriptor occupies.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVTABLE_005fENTRY_005fALIGN"></a>Macro: <strong>TARGET_VTABLE_ENTRY_ALIGN</strong></dt>
+<dd><p>By default, the vtable entries are void pointers, the so the alignment
+is the same as pointer alignment. The value of this macro specifies
+the alignment of the vtable entry in bits. It should be defined only
+when special alignment is necessary. */
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fVTABLE_005fDATA_005fENTRY_005fDISTANCE"></a>Macro: <strong>TARGET_VTABLE_DATA_ENTRY_DISTANCE</strong></dt>
+<dd><p>There are a few non-descriptor entries in the vtable at offsets below
+zero. If these entries must be padded (say, to preserve the alignment
+specified by <code>TARGET_VTABLE_ENTRY_ALIGN</code>), set this to the number
+of words in each data entry.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Registers.html#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="Storage-Layout.html#Storage-Layout" accesskey="p" rel="previous">Storage Layout</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Types-for-C_002b_002b.html b/share/doc/gccint/Types-for-C_002b_002b.html
new file mode 100644
index 0000000..24feeb2
--- /dev/null
+++ b/share/doc/gccint/Types-for-C_002b_002b.html
@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Types for C++</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Types for C++">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Types for C++">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="up" title="C and C++ Trees">
+<link href="Namespaces.html#Namespaces" rel="next" title="Namespaces">
+<link href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" rel="previous" title="C and C++ Trees">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Types-for-C_002b_002b"></a>
+<div class="header">
+<p>
+Next: <a href="Namespaces.html#Namespaces" accesskey="n" rel="next">Namespaces</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Types-for-C_002b_002b-1"></a>
+<h4 class="subsection">11.10.1 Types for C++</h4>
+<a name="index-UNKNOWN_005fTYPE-1"></a>
+<a name="index-TYPENAME_005fTYPE"></a>
+<a name="index-TYPEOF_005fTYPE"></a>
+<a name="index-cp_005ftype_005fquals"></a>
+<a name="index-TYPE_005fUNQUALIFIED-1"></a>
+<a name="index-TYPE_005fQUAL_005fCONST-1"></a>
+<a name="index-TYPE_005fQUAL_005fVOLATILE-1"></a>
+<a name="index-TYPE_005fQUAL_005fRESTRICT-1"></a>
+<a name="index-TYPE_005fMAIN_005fVARIANT-2"></a>
+<a name="index-qualified-type-1"></a>
+<a name="index-TYPE_005fSIZE-2"></a>
+<a name="index-TYPE_005fALIGN-2"></a>
+<a name="index-TYPE_005fPRECISION-1"></a>
+<a name="index-TYPE_005fARG_005fTYPES-1"></a>
+<a name="index-TYPE_005fMETHOD_005fBASETYPE-1"></a>
+<a name="index-TYPE_005fPTRDATAMEM_005fP"></a>
+<a name="index-TYPE_005fOFFSET_005fBASETYPE-1"></a>
+<a name="index-TREE_005fTYPE-6"></a>
+<a name="index-TYPE_005fCONTEXT-1"></a>
+<a name="index-TYPE_005fNAME-2"></a>
+<a name="index-TYPENAME_005fTYPE_005fFULLNAME-1"></a>
+<a name="index-TYPE_005fFIELDS-1"></a>
+<a name="index-TYPE_005fPTROBV_005fP"></a>
+
+<p>In C++, an array type is not qualified; rather the type of the array
+elements is qualified. This situation is reflected in the intermediate
+representation. The macros described here will always examine the
+qualification of the underlying element type when applied to an array
+type. (If the element type is itself an array, then the recursion
+continues until a non-array type is found, and the qualification of this
+type is examined.) So, for example, <code>CP_TYPE_CONST_P</code> will hold of
+the type <code>const int ()[7]</code>, denoting an array of seven <code>int</code>s.
+</p>
+<p>The following functions and macros deal with cv-qualification of types:
+</p><dl compact="compact">
+<dt><code>cp_type_quals</code>
+<a name="index-cp_005ftype_005fquals-1"></a>
+</dt>
+<dd><p>This function returns the set of type qualifiers applied to this type.
+This value is <code>TYPE_UNQUALIFIED</code> if no qualifiers have been
+applied. The <code>TYPE_QUAL_CONST</code> bit is set if the type is
+<code>const</code>-qualified. The <code>TYPE_QUAL_VOLATILE</code> bit is set if the
+type is <code>volatile</code>-qualified. The <code>TYPE_QUAL_RESTRICT</code> bit is
+set if the type is <code>restrict</code>-qualified.
+</p>
+</dd>
+<dt><code>CP_TYPE_CONST_P</code>
+<a name="index-CP_005fTYPE_005fCONST_005fP"></a>
+</dt>
+<dd><p>This macro holds if the type is <code>const</code>-qualified.
+</p>
+</dd>
+<dt><code>CP_TYPE_VOLATILE_P</code>
+<a name="index-CP_005fTYPE_005fVOLATILE_005fP"></a>
+</dt>
+<dd><p>This macro holds if the type is <code>volatile</code>-qualified.
+</p>
+</dd>
+<dt><code>CP_TYPE_RESTRICT_P</code>
+<a name="index-CP_005fTYPE_005fRESTRICT_005fP"></a>
+</dt>
+<dd><p>This macro holds if the type is <code>restrict</code>-qualified.
+</p>
+</dd>
+<dt><code>CP_TYPE_CONST_NON_VOLATILE_P</code>
+<a name="index-CP_005fTYPE_005fCONST_005fNON_005fVOLATILE_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a type that is <code>const</code>-qualified, but
+<em>not</em> <code>volatile</code>-qualified; other cv-qualifiers are ignored as
+well: only the <code>const</code>-ness is tested.
+</p>
+</dd>
+</dl>
+
+<p>A few other macros and functions are usable with all types:
+</p><dl compact="compact">
+<dt><code>TYPE_SIZE</code>
+<a name="index-TYPE_005fSIZE-3"></a>
+</dt>
+<dd><p>The number of bits required to represent the type, represented as an
+<code>INTEGER_CST</code>. For an incomplete type, <code>TYPE_SIZE</code> will be
+<code>NULL_TREE</code>.
+</p>
+</dd>
+<dt><code>TYPE_ALIGN</code>
+<a name="index-TYPE_005fALIGN-3"></a>
+</dt>
+<dd><p>The alignment of the type, in bits, represented as an <code>int</code>.
+</p>
+</dd>
+<dt><code>TYPE_NAME</code>
+<a name="index-TYPE_005fNAME-3"></a>
+</dt>
+<dd><p>This macro returns a declaration (in the form of a <code>TYPE_DECL</code>) for
+the type. (Note this macro does <em>not</em> return an
+<code>IDENTIFIER_NODE</code>, as you might expect, given its name!) You can
+look at the <code>DECL_NAME</code> of the <code>TYPE_DECL</code> to obtain the
+actual name of the type. The <code>TYPE_NAME</code> will be <code>NULL_TREE</code>
+for a type that is not a built-in type, the result of a typedef, or a
+named class type.
+</p>
+</dd>
+<dt><code>CP_INTEGRAL_TYPE</code>
+<a name="index-CP_005fINTEGRAL_005fTYPE"></a>
+</dt>
+<dd><p>This predicate holds if the type is an integral type. Notice that in
+C++, enumerations are <em>not</em> integral types.
+</p>
+</dd>
+<dt><code>ARITHMETIC_TYPE_P</code>
+<a name="index-ARITHMETIC_005fTYPE_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the type is an integral type (in the C++ sense)
+or a floating point type.
+</p>
+</dd>
+<dt><code>CLASS_TYPE_P</code>
+<a name="index-CLASS_005fTYPE_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a class-type.
+</p>
+</dd>
+<dt><code>TYPE_BUILT_IN</code>
+<a name="index-TYPE_005fBUILT_005fIN"></a>
+</dt>
+<dd><p>This predicate holds for a built-in type.
+</p>
+</dd>
+<dt><code>TYPE_PTRDATAMEM_P</code>
+<a name="index-TYPE_005fPTRDATAMEM_005fP-1"></a>
+</dt>
+<dd><p>This predicate holds if the type is a pointer to data member.
+</p>
+</dd>
+<dt><code>TYPE_PTR_P</code>
+<a name="index-TYPE_005fPTR_005fP"></a>
+</dt>
+<dd><p>This predicate holds if the type is a pointer type, and the pointee is
+not a data member.
+</p>
+</dd>
+<dt><code>TYPE_PTRFN_P</code>
+<a name="index-TYPE_005fPTRFN_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a pointer to function type.
+</p>
+</dd>
+<dt><code>TYPE_PTROB_P</code>
+<a name="index-TYPE_005fPTROB_005fP"></a>
+</dt>
+<dd><p>This predicate holds for a pointer to object type. Note however that it
+does not hold for the generic pointer to object type <code>void *</code>. You
+may use <code>TYPE_PTROBV_P</code> to test for a pointer to object type as
+well as <code>void *</code>.
+</p>
+</dd>
+</dl>
+
+<p>The table below describes types specific to C and C++ as well as
+language-dependent info about GENERIC types.
+</p>
+<dl compact="compact">
+<dt><code>POINTER_TYPE</code></dt>
+<dd><p>Used to represent pointer types, and pointer to data member types. If
+<code>TREE_TYPE</code>
+is a pointer to data member type, then <code>TYPE_PTRDATAMEM_P</code> will hold.
+For a pointer to data member type of the form &lsquo;<samp>T X::*</samp>&rsquo;,
+<code>TYPE_PTRMEM_CLASS_TYPE</code> will be the type <code>X</code>, while
+<code>TYPE_PTRMEM_POINTED_TO_TYPE</code> will be the type <code>T</code>.
+</p>
+</dd>
+<dt><code>RECORD_TYPE</code></dt>
+<dd><p>Used to represent <code>struct</code> and <code>class</code> types in C and C++. If
+<code>TYPE_PTRMEMFUNC_P</code> holds, then this type is a pointer-to-member
+type. In that case, the <code>TYPE_PTRMEMFUNC_FN_TYPE</code> is a
+<code>POINTER_TYPE</code> pointing to a <code>METHOD_TYPE</code>. The
+<code>METHOD_TYPE</code> is the type of a function pointed to by the
+pointer-to-member function. If <code>TYPE_PTRMEMFUNC_P</code> does not hold,
+this type is a class type. For more information, see <a href="Classes.html#Classes">Classes</a>.
+</p>
+</dd>
+<dt><code>UNKNOWN_TYPE</code></dt>
+<dd><p>This node is used to represent a type the knowledge of which is
+insufficient for a sound processing.
+</p>
+</dd>
+<dt><code>TYPENAME_TYPE</code></dt>
+<dd><p>Used to represent a construct of the form <code>typename T::A</code>. The
+<code>TYPE_CONTEXT</code> is <code>T</code>; the <code>TYPE_NAME</code> is an
+<code>IDENTIFIER_NODE</code> for <code>A</code>. If the type is specified via a
+template-id, then <code>TYPENAME_TYPE_FULLNAME</code> yields a
+<code>TEMPLATE_ID_EXPR</code>. The <code>TREE_TYPE</code> is non-<code>NULL</code> if the
+node is implicitly generated in support for the implicit typename
+extension; in which case the <code>TREE_TYPE</code> is a type node for the
+base-class.
+</p>
+</dd>
+<dt><code>TYPEOF_TYPE</code></dt>
+<dd><p>Used to represent the <code>__typeof__</code> extension. The
+<code>TYPE_FIELDS</code> is the expression the type of which is being
+represented.
+</p>
+</dd>
+</dl>
+
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Namespaces.html#Namespaces" accesskey="n" rel="next">Namespaces</a>, Up: <a href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees" accesskey="u" rel="up">C and C++ Trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Types.html b/share/doc/gccint/Types.html
new file mode 100644
index 0000000..a13993b
--- /dev/null
+++ b/share/doc/gccint/Types.html
@@ -0,0 +1,446 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Types</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Types">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Types">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GENERIC.html#GENERIC" rel="up" title="GENERIC">
+<link href="Declarations.html#Declarations" rel="next" title="Declarations">
+<link href="Containers.html#Containers" rel="previous" title="Containers">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Types"></a>
+<div class="header">
+<p>
+Next: <a href="Declarations.html#Declarations" accesskey="n" rel="next">Declarations</a>, Previous: <a href="Tree-overview.html#Tree-overview" accesskey="p" rel="previous">Tree overview</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Types-1"></a>
+<h3 class="section">11.3 Types</h3>
+<a name="index-type"></a>
+<a name="index-pointer"></a>
+<a name="index-reference"></a>
+<a name="index-fundamental-type"></a>
+<a name="index-array"></a>
+<a name="index-VOID_005fTYPE"></a>
+<a name="index-INTEGER_005fTYPE"></a>
+<a name="index-TYPE_005fMIN_005fVALUE"></a>
+<a name="index-TYPE_005fMAX_005fVALUE"></a>
+<a name="index-REAL_005fTYPE"></a>
+<a name="index-FIXED_005fPOINT_005fTYPE"></a>
+<a name="index-COMPLEX_005fTYPE"></a>
+<a name="index-ENUMERAL_005fTYPE"></a>
+<a name="index-BOOLEAN_005fTYPE"></a>
+<a name="index-POINTER_005fTYPE"></a>
+<a name="index-REFERENCE_005fTYPE"></a>
+<a name="index-FUNCTION_005fTYPE"></a>
+<a name="index-METHOD_005fTYPE"></a>
+<a name="index-ARRAY_005fTYPE"></a>
+<a name="index-RECORD_005fTYPE"></a>
+<a name="index-UNION_005fTYPE"></a>
+<a name="index-OPAQUE_005fTYPE"></a>
+<a name="index-UNKNOWN_005fTYPE"></a>
+<a name="index-OFFSET_005fTYPE"></a>
+<a name="index-TYPE_005fUNQUALIFIED"></a>
+<a name="index-TYPE_005fQUAL_005fCONST"></a>
+<a name="index-TYPE_005fQUAL_005fVOLATILE"></a>
+<a name="index-TYPE_005fQUAL_005fRESTRICT"></a>
+<a name="index-TYPE_005fMAIN_005fVARIANT"></a>
+<a name="index-qualified-type"></a>
+<a name="index-TYPE_005fSIZE"></a>
+<a name="index-TYPE_005fALIGN"></a>
+<a name="index-TYPE_005fPRECISION"></a>
+<a name="index-TYPE_005fARG_005fTYPES"></a>
+<a name="index-TYPE_005fMETHOD_005fBASETYPE"></a>
+<a name="index-TYPE_005fOFFSET_005fBASETYPE"></a>
+<a name="index-TREE_005fTYPE-1"></a>
+<a name="index-TYPE_005fCONTEXT"></a>
+<a name="index-TYPE_005fNAME"></a>
+<a name="index-TYPENAME_005fTYPE_005fFULLNAME"></a>
+<a name="index-TYPE_005fFIELDS"></a>
+<a name="index-TYPE_005fCANONICAL"></a>
+<a name="index-TYPE_005fSTRUCTURAL_005fEQUALITY_005fP"></a>
+<a name="index-SET_005fTYPE_005fSTRUCTURAL_005fEQUALITY"></a>
+
+<p>All types have corresponding tree nodes. However, you should not assume
+that there is exactly one tree node corresponding to each type. There
+are often multiple nodes corresponding to the same type.
+</p>
+<p>For the most part, different kinds of types have different tree codes.
+(For example, pointer types use a <code>POINTER_TYPE</code> code while arrays
+use an <code>ARRAY_TYPE</code> code.) However, pointers to member functions
+use the <code>RECORD_TYPE</code> code. Therefore, when writing a
+<code>switch</code> statement that depends on the code associated with a
+particular type, you should take care to handle pointers to member
+functions under the <code>RECORD_TYPE</code> case label.
+</p>
+<p>The following functions and macros deal with cv-qualification of types:
+</p><dl compact="compact">
+<dt><code>TYPE_MAIN_VARIANT</code>
+<a name="index-TYPE_005fMAIN_005fVARIANT-1"></a>
+</dt>
+<dd><p>This macro returns the unqualified version of a type. It may be applied
+to an unqualified type, but it is not always the identity function in
+that case.
+</p></dd>
+</dl>
+
+<p>A few other macros and functions are usable with all types:
+</p><dl compact="compact">
+<dt><code>TYPE_SIZE</code>
+<a name="index-TYPE_005fSIZE-1"></a>
+</dt>
+<dd><p>The number of bits required to represent the type, represented as an
+<code>INTEGER_CST</code>. For an incomplete type, <code>TYPE_SIZE</code> will be
+<code>NULL_TREE</code>.
+</p>
+</dd>
+<dt><code>TYPE_ALIGN</code>
+<a name="index-TYPE_005fALIGN-1"></a>
+</dt>
+<dd><p>The alignment of the type, in bits, represented as an <code>int</code>.
+</p>
+</dd>
+<dt><code>TYPE_NAME</code>
+<a name="index-TYPE_005fNAME-1"></a>
+</dt>
+<dd><p>This macro returns a declaration (in the form of a <code>TYPE_DECL</code>) for
+the type. (Note this macro does <em>not</em> return an
+<code>IDENTIFIER_NODE</code>, as you might expect, given its name!) You can
+look at the <code>DECL_NAME</code> of the <code>TYPE_DECL</code> to obtain the
+actual name of the type. The <code>TYPE_NAME</code> will be <code>NULL_TREE</code>
+for a type that is not a built-in type, the result of a typedef, or a
+named class type.
+</p>
+</dd>
+<dt><code>TYPE_CANONICAL</code>
+<a name="index-TYPE_005fCANONICAL-1"></a>
+</dt>
+<dd><p>This macro returns the &ldquo;canonical&rdquo; type for the given type
+node. Canonical types are used to improve performance in the C++ and
+Objective-C++ front ends by allowing efficient comparison between two
+type nodes in <code>same_type_p</code>: if the <code>TYPE_CANONICAL</code> values
+of the types are equal, the types are equivalent; otherwise, the types
+are not equivalent. The notion of equivalence for canonical types is
+the same as the notion of type equivalence in the language itself. For
+instance,
+</p>
+<p>When <code>TYPE_CANONICAL</code> is <code>NULL_TREE</code>, there is no canonical
+type for the given type node. In this case, comparison between this
+type and any other type requires the compiler to perform a deep,
+&ldquo;structural&rdquo; comparison to see if the two type nodes have the same
+form and properties.
+</p>
+<p>The canonical type for a node is always the most fundamental type in
+the equivalence class of types. For instance, <code>int</code> is its own
+canonical type. A typedef <code>I</code> of <code>int</code> will have <code>int</code>
+as its canonical type. Similarly, <code>I*</code>&nbsp;and a typedef <code>IP</code>&nbsp;(defined to <code>I*</code>) will has <code>int*</code> as their canonical
+type. When building a new type node, be sure to set
+<code>TYPE_CANONICAL</code> to the appropriate canonical type. If the new
+type is a compound type (built from other types), and any of those
+other types require structural equality, use
+<code>SET_TYPE_STRUCTURAL_EQUALITY</code> to ensure that the new type also
+requires structural equality. Finally, if for some reason you cannot
+guarantee that <code>TYPE_CANONICAL</code> will point to the canonical type,
+use <code>SET_TYPE_STRUCTURAL_EQUALITY</code> to make sure that the new
+type&ndash;and any type constructed based on it&ndash;requires structural
+equality. If you suspect that the canonical type system is
+miscomparing types, pass <code>--param verify-canonical-types=1</code> to
+the compiler or configure with <code>--enable-checking</code> to force the
+compiler to verify its canonical-type comparisons against the
+structural comparisons; the compiler will then print any warnings if
+the canonical types miscompare.
+</p>
+</dd>
+<dt><code>TYPE_STRUCTURAL_EQUALITY_P</code>
+<a name="index-TYPE_005fSTRUCTURAL_005fEQUALITY_005fP-1"></a>
+</dt>
+<dd><p>This predicate holds when the node requires structural equality
+checks, e.g., when <code>TYPE_CANONICAL</code> is <code>NULL_TREE</code>.
+</p>
+</dd>
+<dt><code>SET_TYPE_STRUCTURAL_EQUALITY</code>
+<a name="index-SET_005fTYPE_005fSTRUCTURAL_005fEQUALITY-1"></a>
+</dt>
+<dd><p>This macro states that the type node it is given requires structural
+equality checks, e.g., it sets <code>TYPE_CANONICAL</code> to
+<code>NULL_TREE</code>.
+</p>
+</dd>
+<dt><code>same_type_p</code>
+<a name="index-same_005ftype_005fp"></a>
+</dt>
+<dd><p>This predicate takes two types as input, and holds if they are the same
+type. For example, if one type is a <code>typedef</code> for the other, or
+both are <code>typedef</code>s for the same type. This predicate also holds if
+the two trees given as input are simply copies of one another; i.e.,
+there is no difference between them at the source level, but, for
+whatever reason, a duplicate has been made in the representation. You
+should never use <code>==</code> (pointer equality) to compare types; always
+use <code>same_type_p</code> instead.
+</p></dd>
+</dl>
+
+<p>Detailed below are the various kinds of types, and the macros that can
+be used to access them. Although other kinds of types are used
+elsewhere in G++, the types described here are the only ones that you
+will encounter while examining the intermediate representation.
+</p>
+<dl compact="compact">
+<dt><code>VOID_TYPE</code></dt>
+<dd><p>Used to represent the <code>void</code> type.
+</p>
+</dd>
+<dt><code>INTEGER_TYPE</code></dt>
+<dd><p>Used to represent the various integral types, including <code>char</code>,
+<code>short</code>, <code>int</code>, <code>long</code>, and <code>long long</code>. This code
+is not used for enumeration types, nor for the <code>bool</code> type.
+The <code>TYPE_PRECISION</code> is the number of bits used in
+the representation, represented as an <code>unsigned int</code>. (Note that
+in the general case this is not the same value as <code>TYPE_SIZE</code>;
+suppose that there were a 24-bit integer type, but that alignment
+requirements for the ABI required 32-bit alignment. Then,
+<code>TYPE_SIZE</code> would be an <code>INTEGER_CST</code> for 32, while
+<code>TYPE_PRECISION</code> would be 24.) The integer type is unsigned if
+<code>TYPE_UNSIGNED</code> holds; otherwise, it is signed.
+</p>
+<p>The <code>TYPE_MIN_VALUE</code> is an <code>INTEGER_CST</code> for the smallest
+integer that may be represented by this type. Similarly, the
+<code>TYPE_MAX_VALUE</code> is an <code>INTEGER_CST</code> for the largest integer
+that may be represented by this type.
+</p>
+</dd>
+<dt><code>REAL_TYPE</code></dt>
+<dd><p>Used to represent the <code>float</code>, <code>double</code>, and <code>long
+double</code> types. The number of bits in the floating-point representation
+is given by <code>TYPE_PRECISION</code>, as in the <code>INTEGER_TYPE</code> case.
+</p>
+</dd>
+<dt><code>FIXED_POINT_TYPE</code></dt>
+<dd><p>Used to represent the <code>short _Fract</code>, <code>_Fract</code>, <code>long
+_Fract</code>, <code>long long _Fract</code>, <code>short _Accum</code>, <code>_Accum</code>,
+<code>long _Accum</code>, and <code>long long _Accum</code> types. The number of bits
+in the fixed-point representation is given by <code>TYPE_PRECISION</code>,
+as in the <code>INTEGER_TYPE</code> case. There may be padding bits, fractional
+bits and integral bits. The number of fractional bits is given by
+<code>TYPE_FBIT</code>, and the number of integral bits is given by <code>TYPE_IBIT</code>.
+The fixed-point type is unsigned if <code>TYPE_UNSIGNED</code> holds; otherwise,
+it is signed.
+The fixed-point type is saturating if <code>TYPE_SATURATING</code> holds; otherwise,
+it is not saturating.
+</p>
+</dd>
+<dt><code>COMPLEX_TYPE</code></dt>
+<dd><p>Used to represent GCC built-in <code>__complex__</code> data types. The
+<code>TREE_TYPE</code> is the type of the real and imaginary parts.
+</p>
+</dd>
+<dt><code>ENUMERAL_TYPE</code></dt>
+<dd><p>Used to represent an enumeration type. The <code>TYPE_PRECISION</code> gives
+(as an <code>int</code>), the number of bits used to represent the type. If
+there are no negative enumeration constants, <code>TYPE_UNSIGNED</code> will
+hold. The minimum and maximum enumeration constants may be obtained
+with <code>TYPE_MIN_VALUE</code> and <code>TYPE_MAX_VALUE</code>, respectively; each
+of these macros returns an <code>INTEGER_CST</code>.
+</p>
+<p>The actual enumeration constants themselves may be obtained by looking
+at the <code>TYPE_VALUES</code>. This macro will return a <code>TREE_LIST</code>,
+containing the constants. The <code>TREE_PURPOSE</code> of each node will be
+an <code>IDENTIFIER_NODE</code> giving the name of the constant; the
+<code>TREE_VALUE</code> will be an <code>INTEGER_CST</code> giving the value
+assigned to that constant. These constants will appear in the order in
+which they were declared. The <code>TREE_TYPE</code> of each of these
+constants will be the type of enumeration type itself.
+</p>
+</dd>
+<dt><code>OPAQUE_TYPE</code></dt>
+<dd><p>Used for things that have a <code>MODE_OPAQUE</code> mode class in the
+backend. Opaque types have a size and precision, and can be held in
+memory or registers. They are used when we do not want the compiler to
+make assumptions about the availability of other operations as would
+happen with integer types.
+</p>
+</dd>
+<dt><code>BOOLEAN_TYPE</code></dt>
+<dd><p>Used to represent the <code>bool</code> type.
+</p>
+</dd>
+<dt><code>POINTER_TYPE</code></dt>
+<dd><p>Used to represent pointer types, and pointer to data member types. The
+<code>TREE_TYPE</code> gives the type to which this type points.
+</p>
+</dd>
+<dt><code>REFERENCE_TYPE</code></dt>
+<dd><p>Used to represent reference types. The <code>TREE_TYPE</code> gives the type
+to which this type refers.
+</p>
+</dd>
+<dt><code>FUNCTION_TYPE</code></dt>
+<dd><p>Used to represent the type of non-member functions and of static member
+functions. The <code>TREE_TYPE</code> gives the return type of the function.
+The <code>TYPE_ARG_TYPES</code> are a <code>TREE_LIST</code> of the argument types.
+The <code>TREE_VALUE</code> of each node in this list is the type of the
+corresponding argument; the <code>TREE_PURPOSE</code> is an expression for the
+default argument value, if any. If the last node in the list is
+<code>void_list_node</code> (a <code>TREE_LIST</code> node whose <code>TREE_VALUE</code>
+is the <code>void_type_node</code>), then functions of this type do not take
+variable arguments. Otherwise, they do take a variable number of
+arguments.
+</p>
+<p>Note that in C (but not in C++) a function declared like <code>void f()</code>
+is an unprototyped function taking a variable number of arguments; the
+<code>TYPE_ARG_TYPES</code> of such a function will be <code>NULL</code>.
+</p>
+</dd>
+<dt><code>METHOD_TYPE</code></dt>
+<dd><p>Used to represent the type of a non-static member function. Like a
+<code>FUNCTION_TYPE</code>, the return type is given by the <code>TREE_TYPE</code>.
+The type of <code>*this</code>, i.e., the class of which functions of this
+type are a member, is given by the <code>TYPE_METHOD_BASETYPE</code>. The
+<code>TYPE_ARG_TYPES</code> is the parameter list, as for a
+<code>FUNCTION_TYPE</code>, and includes the <code>this</code> argument.
+</p>
+</dd>
+<dt><code>ARRAY_TYPE</code></dt>
+<dd><p>Used to represent array types. The <code>TREE_TYPE</code> gives the type of
+the elements in the array. If the array-bound is present in the type,
+the <code>TYPE_DOMAIN</code> is an <code>INTEGER_TYPE</code> whose
+<code>TYPE_MIN_VALUE</code> and <code>TYPE_MAX_VALUE</code> will be the lower and
+upper bounds of the array, respectively. The <code>TYPE_MIN_VALUE</code> will
+always be an <code>INTEGER_CST</code> for zero, while the
+<code>TYPE_MAX_VALUE</code> will be one less than the number of elements in
+the array, i.e., the highest value which may be used to index an element
+in the array.
+</p>
+</dd>
+<dt><code>RECORD_TYPE</code></dt>
+<dd><p>Used to represent <code>struct</code> and <code>class</code> types, as well as
+pointers to member functions and similar constructs in other languages.
+<code>TYPE_FIELDS</code> contains the items contained in this type, each of
+which can be a <code>FIELD_DECL</code>, <code>VAR_DECL</code>, <code>CONST_DECL</code>, or
+<code>TYPE_DECL</code>. You may not make any assumptions about the ordering
+of the fields in the type or whether one or more of them overlap.
+</p>
+</dd>
+<dt><code>UNION_TYPE</code></dt>
+<dd><p>Used to represent <code>union</code> types. Similar to <code>RECORD_TYPE</code>
+except that all <code>FIELD_DECL</code> nodes in <code>TYPE_FIELD</code> start at
+bit position zero.
+</p>
+</dd>
+<dt><code>QUAL_UNION_TYPE</code></dt>
+<dd><p>Used to represent part of a variant record in Ada. Similar to
+<code>UNION_TYPE</code> except that each <code>FIELD_DECL</code> has a
+<code>DECL_QUALIFIER</code> field, which contains a boolean expression that
+indicates whether the field is present in the object. The type will only
+have one field, so each field&rsquo;s <code>DECL_QUALIFIER</code> is only evaluated
+if none of the expressions in the previous fields in <code>TYPE_FIELDS</code>
+are nonzero. Normally these expressions will reference a field in the
+outer object using a <code>PLACEHOLDER_EXPR</code>.
+</p>
+</dd>
+<dt><code>LANG_TYPE</code></dt>
+<dd><p>This node is used to represent a language-specific type. The front
+end must handle it.
+</p>
+</dd>
+<dt><code>OFFSET_TYPE</code></dt>
+<dd><p>This node is used to represent a pointer-to-data member. For a data
+member <code>X::m</code> the <code>TYPE_OFFSET_BASETYPE</code> is <code>X</code> and the
+<code>TREE_TYPE</code> is the type of <code>m</code>.
+</p>
+</dd>
+</dl>
+
+<p>There are variables whose values represent some of the basic types.
+These include:
+</p><dl compact="compact">
+<dt><code>void_type_node</code></dt>
+<dd><p>A node for <code>void</code>.
+</p>
+</dd>
+<dt><code>integer_type_node</code></dt>
+<dd><p>A node for <code>int</code>.
+</p>
+</dd>
+<dt><code>unsigned_type_node.</code></dt>
+<dd><p>A node for <code>unsigned int</code>.
+</p>
+</dd>
+<dt><code>char_type_node.</code></dt>
+<dd><p>A node for <code>char</code>.
+</p></dd>
+</dl>
+<p>It may sometimes be useful to compare one of these variables with a type
+in hand, using <code>same_type_p</code>.
+</p>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Declarations.html#Declarations" accesskey="n" rel="next">Declarations</a>, Previous: <a href="Tree-overview.html#Tree-overview" accesskey="p" rel="previous">Tree overview</a>, Up: <a href="GENERIC.html#GENERIC" accesskey="u" rel="up">GENERIC</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Unary-and-Binary-Expressions.html b/share/doc/gccint/Unary-and-Binary-Expressions.html
new file mode 100644
index 0000000..f7b5eb8
--- /dev/null
+++ b/share/doc/gccint/Unary-and-Binary-Expressions.html
@@ -0,0 +1,651 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Unary and Binary Expressions</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Unary and Binary Expressions">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Unary and Binary Expressions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Expression-trees.html#Expression-trees" rel="up" title="Expression trees">
+<link href="Vectors.html#Vectors" rel="next" title="Vectors">
+<link href="Storage-References.html#Storage-References" rel="previous" title="Storage References">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Unary-and-Binary-Expressions"></a>
+<div class="header">
+<p>
+Next: <a href="Vectors.html#Vectors" accesskey="n" rel="next">Vectors</a>, Previous: <a href="Storage-References.html#Storage-References" accesskey="p" rel="previous">Storage References</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Unary-and-Binary-Expressions-1"></a>
+<h4 class="subsection">11.6.3 Unary and Binary Expressions</h4>
+<a name="index-NEGATE_005fEXPR"></a>
+<a name="index-ABS_005fEXPR"></a>
+<a name="index-ABSU_005fEXPR"></a>
+<a name="index-BIT_005fNOT_005fEXPR"></a>
+<a name="index-TRUTH_005fNOT_005fEXPR"></a>
+<a name="index-PREDECREMENT_005fEXPR"></a>
+<a name="index-PREINCREMENT_005fEXPR"></a>
+<a name="index-POSTDECREMENT_005fEXPR"></a>
+<a name="index-POSTINCREMENT_005fEXPR"></a>
+<a name="index-FIX_005fTRUNC_005fEXPR"></a>
+<a name="index-FLOAT_005fEXPR"></a>
+<a name="index-COMPLEX_005fEXPR"></a>
+<a name="index-CONJ_005fEXPR"></a>
+<a name="index-REALPART_005fEXPR"></a>
+<a name="index-IMAGPART_005fEXPR"></a>
+<a name="index-NON_005fLVALUE_005fEXPR"></a>
+<a name="index-NOP_005fEXPR"></a>
+<a name="index-CONVERT_005fEXPR"></a>
+<a name="index-FIXED_005fCONVERT_005fEXPR"></a>
+<a name="index-THROW_005fEXPR"></a>
+<a name="index-LSHIFT_005fEXPR"></a>
+<a name="index-RSHIFT_005fEXPR"></a>
+<a name="index-BIT_005fIOR_005fEXPR"></a>
+<a name="index-BIT_005fXOR_005fEXPR"></a>
+<a name="index-BIT_005fAND_005fEXPR"></a>
+<a name="index-TRUTH_005fANDIF_005fEXPR"></a>
+<a name="index-TRUTH_005fORIF_005fEXPR"></a>
+<a name="index-TRUTH_005fAND_005fEXPR"></a>
+<a name="index-TRUTH_005fOR_005fEXPR"></a>
+<a name="index-TRUTH_005fXOR_005fEXPR"></a>
+<a name="index-POINTER_005fPLUS_005fEXPR"></a>
+<a name="index-POINTER_005fDIFF_005fEXPR"></a>
+<a name="index-PLUS_005fEXPR"></a>
+<a name="index-MINUS_005fEXPR"></a>
+<a name="index-MULT_005fEXPR"></a>
+<a name="index-WIDEN_005fMULT_005fEXPR"></a>
+<a name="index-MULT_005fHIGHPART_005fEXPR"></a>
+<a name="index-RDIV_005fEXPR"></a>
+<a name="index-TRUNC_005fDIV_005fEXPR"></a>
+<a name="index-FLOOR_005fDIV_005fEXPR"></a>
+<a name="index-CEIL_005fDIV_005fEXPR"></a>
+<a name="index-ROUND_005fDIV_005fEXPR"></a>
+<a name="index-TRUNC_005fMOD_005fEXPR"></a>
+<a name="index-FLOOR_005fMOD_005fEXPR"></a>
+<a name="index-CEIL_005fMOD_005fEXPR"></a>
+<a name="index-ROUND_005fMOD_005fEXPR"></a>
+<a name="index-EXACT_005fDIV_005fEXPR"></a>
+<a name="index-LT_005fEXPR"></a>
+<a name="index-LE_005fEXPR"></a>
+<a name="index-GT_005fEXPR"></a>
+<a name="index-GE_005fEXPR"></a>
+<a name="index-EQ_005fEXPR"></a>
+<a name="index-NE_005fEXPR"></a>
+<a name="index-ORDERED_005fEXPR"></a>
+<a name="index-UNORDERED_005fEXPR"></a>
+<a name="index-UNLT_005fEXPR"></a>
+<a name="index-UNLE_005fEXPR"></a>
+<a name="index-UNGT_005fEXPR"></a>
+<a name="index-UNGE_005fEXPR"></a>
+<a name="index-UNEQ_005fEXPR"></a>
+<a name="index-LTGT_005fEXPR"></a>
+<a name="index-MODIFY_005fEXPR"></a>
+<a name="index-INIT_005fEXPR"></a>
+<a name="index-COMPOUND_005fEXPR"></a>
+<a name="index-COND_005fEXPR"></a>
+<a name="index-CALL_005fEXPR"></a>
+<a name="index-STMT_005fEXPR"></a>
+<a name="index-BIND_005fEXPR"></a>
+<a name="index-LOOP_005fEXPR"></a>
+<a name="index-EXIT_005fEXPR"></a>
+<a name="index-CLEANUP_005fPOINT_005fEXPR"></a>
+<a name="index-CONSTRUCTOR"></a>
+<a name="index-COMPOUND_005fLITERAL_005fEXPR"></a>
+<a name="index-SAVE_005fEXPR"></a>
+<a name="index-TARGET_005fEXPR"></a>
+<a name="index-VA_005fARG_005fEXPR"></a>
+<a name="index-ANNOTATE_005fEXPR"></a>
+
+<dl compact="compact">
+<dt><code>NEGATE_EXPR</code></dt>
+<dd><p>These nodes represent unary negation of the single operand, for both
+integer and floating-point types. The type of negation can be
+determined by looking at the type of the expression.
+</p>
+<p>The behavior of this operation on signed arithmetic overflow is
+controlled by the <code>flag_wrapv</code> and <code>flag_trapv</code> variables.
+</p>
+</dd>
+<dt><code>ABS_EXPR</code></dt>
+<dd><p>These nodes represent the absolute value of the single operand, for
+both integer and floating-point types. This is typically used to
+implement the <code>abs</code>, <code>labs</code> and <code>llabs</code> builtins for
+integer types, and the <code>fabs</code>, <code>fabsf</code> and <code>fabsl</code>
+builtins for floating point types. The type of abs operation can
+be determined by looking at the type of the expression.
+</p>
+<p>This node is not used for complex types. To represent the modulus
+or complex abs of a complex value, use the <code>BUILT_IN_CABS</code>,
+<code>BUILT_IN_CABSF</code> or <code>BUILT_IN_CABSL</code> builtins, as used
+to implement the C99 <code>cabs</code>, <code>cabsf</code> and <code>cabsl</code>
+built-in functions.
+</p>
+</dd>
+<dt><code>ABSU_EXPR</code></dt>
+<dd><p>These nodes represent the absolute value of the single operand in
+equivalent unsigned type such that <code>ABSU_EXPR</code> of <code>TYPE_MIN</code>
+is well defined.
+</p>
+</dd>
+<dt><code>BIT_NOT_EXPR</code></dt>
+<dd><p>These nodes represent bitwise complement, and will always have integral
+type. The only operand is the value to be complemented.
+</p>
+</dd>
+<dt><code>TRUTH_NOT_EXPR</code></dt>
+<dd><p>These nodes represent logical negation, and will always have integral
+(or boolean) type. The operand is the value being negated. The type
+of the operand and that of the result are always of <code>BOOLEAN_TYPE</code>
+or <code>INTEGER_TYPE</code>.
+</p>
+</dd>
+<dt><code>PREDECREMENT_EXPR</code></dt>
+<dt><code>PREINCREMENT_EXPR</code></dt>
+<dt><code>POSTDECREMENT_EXPR</code></dt>
+<dt><code>POSTINCREMENT_EXPR</code></dt>
+<dd><p>These nodes represent increment and decrement expressions. The value of
+the single operand is computed, and the operand incremented or
+decremented. In the case of <code>PREDECREMENT_EXPR</code> and
+<code>PREINCREMENT_EXPR</code>, the value of the expression is the value
+resulting after the increment or decrement; in the case of
+<code>POSTDECREMENT_EXPR</code> and <code>POSTINCREMENT_EXPR</code> is the value
+before the increment or decrement occurs. The type of the operand, like
+that of the result, will be either integral, boolean, or floating-point.
+</p>
+</dd>
+<dt><code>FIX_TRUNC_EXPR</code></dt>
+<dd><p>These nodes represent conversion of a floating-point value to an
+integer. The single operand will have a floating-point type, while
+the complete expression will have an integral (or boolean) type. The
+operand is rounded towards zero.
+</p>
+</dd>
+<dt><code>FLOAT_EXPR</code></dt>
+<dd><p>These nodes represent conversion of an integral (or boolean) value to a
+floating-point value. The single operand will have integral type, while
+the complete expression will have a floating-point type.
+</p>
+<p>FIXME: How is the operand supposed to be rounded? Is this dependent on
+<samp>-mieee</samp>?
+</p>
+</dd>
+<dt><code>COMPLEX_EXPR</code></dt>
+<dd><p>These nodes are used to represent complex numbers constructed from two
+expressions of the same (integer or real) type. The first operand is the
+real part and the second operand is the imaginary part.
+</p>
+</dd>
+<dt><code>CONJ_EXPR</code></dt>
+<dd><p>These nodes represent the conjugate of their operand.
+</p>
+</dd>
+<dt><code>REALPART_EXPR</code></dt>
+<dt><code>IMAGPART_EXPR</code></dt>
+<dd><p>These nodes represent respectively the real and the imaginary parts
+of complex numbers (their sole argument).
+</p>
+</dd>
+<dt><code>NON_LVALUE_EXPR</code></dt>
+<dd><p>These nodes indicate that their one and only operand is not an lvalue.
+A back end can treat these identically to the single operand.
+</p>
+</dd>
+<dt><code>NOP_EXPR</code></dt>
+<dd><p>These nodes are used to represent conversions that do not require any
+code-generation. For example, conversion of a <code>char*</code> to an
+<code>int*</code> does not require any code be generated; such a conversion is
+represented by a <code>NOP_EXPR</code>. The single operand is the expression
+to be converted. The conversion from a pointer to a reference is also
+represented with a <code>NOP_EXPR</code>.
+</p>
+</dd>
+<dt><code>CONVERT_EXPR</code></dt>
+<dd><p>These nodes are similar to <code>NOP_EXPR</code>s, but are used in those
+situations where code may need to be generated. For example, if an
+<code>int*</code> is converted to an <code>int</code> code may need to be generated
+on some platforms. These nodes are never used for C++-specific
+conversions, like conversions between pointers to different classes in
+an inheritance hierarchy. Any adjustments that need to be made in such
+cases are always indicated explicitly. Similarly, a user-defined
+conversion is never represented by a <code>CONVERT_EXPR</code>; instead, the
+function calls are made explicit.
+</p>
+</dd>
+<dt><code>FIXED_CONVERT_EXPR</code></dt>
+<dd><p>These nodes are used to represent conversions that involve fixed-point
+values. For example, from a fixed-point value to another fixed-point value,
+from an integer to a fixed-point value, from a fixed-point value to an
+integer, from a floating-point value to a fixed-point value, or from
+a fixed-point value to a floating-point value.
+</p>
+</dd>
+<dt><code>LSHIFT_EXPR</code></dt>
+<dt><code>RSHIFT_EXPR</code></dt>
+<dd><p>These nodes represent left and right shifts, respectively. The first
+operand is the value to shift; it will always be of integral type. The
+second operand is an expression for the number of bits by which to
+shift. Right shift should be treated as arithmetic, i.e., the
+high-order bits should be zero-filled when the expression has unsigned
+type and filled with the sign bit when the expression has signed type.
+Note that the result is undefined if the second operand is larger
+than or equal to the first operand&rsquo;s type size. Unlike most nodes, these
+can have a vector as first operand and a scalar as second operand.
+</p>
+
+</dd>
+<dt><code>BIT_IOR_EXPR</code></dt>
+<dt><code>BIT_XOR_EXPR</code></dt>
+<dt><code>BIT_AND_EXPR</code></dt>
+<dd><p>These nodes represent bitwise inclusive or, bitwise exclusive or, and
+bitwise and, respectively. Both operands will always have integral
+type.
+</p>
+</dd>
+<dt><code>TRUTH_ANDIF_EXPR</code></dt>
+<dt><code>TRUTH_ORIF_EXPR</code></dt>
+<dd><p>These nodes represent logical &ldquo;and&rdquo; and logical &ldquo;or&rdquo;, respectively.
+These operators are not strict; i.e., the second operand is evaluated
+only if the value of the expression is not determined by evaluation of
+the first operand. The type of the operands and that of the result are
+always of <code>BOOLEAN_TYPE</code> or <code>INTEGER_TYPE</code>.
+</p>
+</dd>
+<dt><code>TRUTH_AND_EXPR</code></dt>
+<dt><code>TRUTH_OR_EXPR</code></dt>
+<dt><code>TRUTH_XOR_EXPR</code></dt>
+<dd><p>These nodes represent logical and, logical or, and logical exclusive or.
+They are strict; both arguments are always evaluated. There are no
+corresponding operators in C or C++, but the front end will sometimes
+generate these expressions anyhow, if it can tell that strictness does
+not matter. The type of the operands and that of the result are
+always of <code>BOOLEAN_TYPE</code> or <code>INTEGER_TYPE</code>.
+</p>
+</dd>
+<dt><code>POINTER_PLUS_EXPR</code></dt>
+<dd><p>This node represents pointer arithmetic. The first operand is always
+a pointer/reference type. The second operand is always an unsigned
+integer type compatible with sizetype. This and POINTER_DIFF_EXPR are
+the only binary arithmetic operators that can operate on pointer types.
+</p>
+</dd>
+<dt><code>POINTER_DIFF_EXPR</code></dt>
+<dd><p>This node represents pointer subtraction. The two operands always
+have pointer/reference type. It returns a signed integer of the same
+precision as the pointers. The behavior is undefined if the difference
+of the two pointers, seen as infinite precision non-negative integers,
+does not fit in the result type. The result does not depend on the
+pointer type, it is not divided by the size of the pointed-to type.
+</p>
+</dd>
+<dt><code>PLUS_EXPR</code></dt>
+<dt><code>MINUS_EXPR</code></dt>
+<dt><code>MULT_EXPR</code></dt>
+<dd><p>These nodes represent various binary arithmetic operations.
+Respectively, these operations are addition, subtraction (of the second
+operand from the first) and multiplication. Their operands may have
+either integral or floating type, but there will never be case in which
+one operand is of floating type and the other is of integral type.
+</p>
+<p>The behavior of these operations on signed arithmetic overflow is
+controlled by the <code>flag_wrapv</code> and <code>flag_trapv</code> variables.
+</p>
+</dd>
+<dt><code>WIDEN_MULT_EXPR</code></dt>
+<dd><p>This node represents a widening multiplication. The operands have
+integral types with same <var>b</var> bits of precision, producing an
+integral type result with at least <em>2<var>b</var></em> bits of precision.
+The behaviour is equivalent to extending both operands, possibly of
+different signedness, to the result type, then multiplying them.
+</p>
+</dd>
+<dt><code>MULT_HIGHPART_EXPR</code></dt>
+<dd><p>This node represents the &ldquo;high-part&rdquo; of a widening multiplication.
+For an integral type with <var>b</var> bits of precision, the result is
+the most significant <var>b</var> bits of the full <em>2<var>b</var></em> product.
+Both operands must have the same precision and same signedness.
+</p>
+</dd>
+<dt><code>RDIV_EXPR</code></dt>
+<dd><p>This node represents a floating point division operation.
+</p>
+</dd>
+<dt><code>TRUNC_DIV_EXPR</code></dt>
+<dt><code>FLOOR_DIV_EXPR</code></dt>
+<dt><code>CEIL_DIV_EXPR</code></dt>
+<dt><code>ROUND_DIV_EXPR</code></dt>
+<dd><p>These nodes represent integer division operations that return an integer
+result. <code>TRUNC_DIV_EXPR</code> rounds towards zero, <code>FLOOR_DIV_EXPR</code>
+rounds towards negative infinity, <code>CEIL_DIV_EXPR</code> rounds towards
+positive infinity and <code>ROUND_DIV_EXPR</code> rounds to the closest integer.
+Integer division in C and C++ is truncating, i.e. <code>TRUNC_DIV_EXPR</code>.
+</p>
+<p>The behavior of these operations on signed arithmetic overflow, when
+dividing the minimum signed integer by minus one, is controlled by the
+<code>flag_wrapv</code> and <code>flag_trapv</code> variables.
+</p>
+</dd>
+<dt><code>TRUNC_MOD_EXPR</code></dt>
+<dt><code>FLOOR_MOD_EXPR</code></dt>
+<dt><code>CEIL_MOD_EXPR</code></dt>
+<dt><code>ROUND_MOD_EXPR</code></dt>
+<dd><p>These nodes represent the integer remainder or modulus operation.
+The integer modulus of two operands <code>a</code> and <code>b</code> is
+defined as <code>a - (a/b)*b</code> where the division calculated using
+the corresponding division operator. Hence for <code>TRUNC_MOD_EXPR</code>
+this definition assumes division using truncation towards zero, i.e.
+<code>TRUNC_DIV_EXPR</code>. Integer remainder in C and C++ uses truncating
+division, i.e. <code>TRUNC_MOD_EXPR</code>.
+</p>
+</dd>
+<dt><code>EXACT_DIV_EXPR</code></dt>
+<dd><p>The <code>EXACT_DIV_EXPR</code> code is used to represent integer divisions where
+the numerator is known to be an exact multiple of the denominator. This
+allows the backend to choose between the faster of <code>TRUNC_DIV_EXPR</code>,
+<code>CEIL_DIV_EXPR</code> and <code>FLOOR_DIV_EXPR</code> for the current target.
+</p>
+</dd>
+<dt><code>LT_EXPR</code></dt>
+<dt><code>LE_EXPR</code></dt>
+<dt><code>GT_EXPR</code></dt>
+<dt><code>GE_EXPR</code></dt>
+<dt><code>LTGT_EXPR</code></dt>
+<dt><code>EQ_EXPR</code></dt>
+<dt><code>NE_EXPR</code></dt>
+<dd><p>These nodes represent the less than, less than or equal to, greater than,
+greater than or equal to, less or greater than, equal, and not equal
+comparison operators. The first and second operands will either be both
+of integral type, both of floating type or both of vector type, except for
+LTGT_EXPR where they will only be both of floating type. The result type
+of these expressions will always be of integral, boolean or signed integral
+vector type. These operations return the result type&rsquo;s zero value for false,
+the result type&rsquo;s one value for true, and a vector whose elements are zero
+(false) or minus one (true) for vectors.
+</p>
+<p>For floating point comparisons, if we honor IEEE NaNs and either operand
+is NaN, then <code>NE_EXPR</code> always returns true and the remaining operators
+always return false. On some targets, comparisons against an IEEE NaN,
+other than equality and inequality, may generate a floating-point exception.
+</p>
+</dd>
+<dt><code>ORDERED_EXPR</code></dt>
+<dt><code>UNORDERED_EXPR</code></dt>
+<dd><p>These nodes represent non-trapping ordered and unordered comparison
+operators. These operations take two floating point operands and
+determine whether they are ordered or unordered relative to each other.
+If either operand is an IEEE NaN, their comparison is defined to be
+unordered, otherwise the comparison is defined to be ordered. The
+result type of these expressions will always be of integral or boolean
+type. These operations return the result type&rsquo;s zero value for false,
+and the result type&rsquo;s one value for true.
+</p>
+</dd>
+<dt><code>UNLT_EXPR</code></dt>
+<dt><code>UNLE_EXPR</code></dt>
+<dt><code>UNGT_EXPR</code></dt>
+<dt><code>UNGE_EXPR</code></dt>
+<dt><code>UNEQ_EXPR</code></dt>
+<dd><p>These nodes represent the unordered comparison operators.
+These operations take two floating point operands and determine whether
+the operands are unordered or are less than, less than or equal to,
+greater than, greater than or equal to, or equal respectively. For
+example, <code>UNLT_EXPR</code> returns true if either operand is an IEEE
+NaN or the first operand is less than the second. All these operations
+are guaranteed not to generate a floating point exception. The result
+type of these expressions will always be of integral or boolean type.
+These operations return the result type&rsquo;s zero value for false,
+and the result type&rsquo;s one value for true.
+</p>
+</dd>
+<dt><code>MODIFY_EXPR</code></dt>
+<dd><p>These nodes represent assignment. The left-hand side is the first
+operand; the right-hand side is the second operand. The left-hand side
+will be a <code>VAR_DECL</code>, <code>INDIRECT_REF</code>, <code>COMPONENT_REF</code>, or
+other lvalue.
+</p>
+<p>These nodes are used to represent not only assignment with &lsquo;<samp>=</samp>&rsquo; but
+also compound assignments (like &lsquo;<samp>+=</samp>&rsquo;), by reduction to &lsquo;<samp>=</samp>&rsquo;
+assignment. In other words, the representation for &lsquo;<samp>i += 3</samp>&rsquo; looks
+just like that for &lsquo;<samp>i = i + 3</samp>&rsquo;.
+</p>
+</dd>
+<dt><code>INIT_EXPR</code></dt>
+<dd><p>These nodes are just like <code>MODIFY_EXPR</code>, but are used only when a
+variable is initialized, rather than assigned to subsequently. This
+means that we can assume that the target of the initialization is not
+used in computing its own value; any reference to the lhs in computing
+the rhs is undefined.
+</p>
+</dd>
+<dt><code>COMPOUND_EXPR</code></dt>
+<dd><p>These nodes represent comma-expressions. The first operand is an
+expression whose value is computed and thrown away prior to the
+evaluation of the second operand. The value of the entire expression is
+the value of the second operand.
+</p>
+</dd>
+<dt><code>COND_EXPR</code></dt>
+<dd><p>These nodes represent <code>?:</code> expressions. The first operand
+is of boolean or integral type. If it evaluates to a nonzero value,
+the second operand should be evaluated, and returned as the value of the
+expression. Otherwise, the third operand is evaluated, and returned as
+the value of the expression.
+</p>
+<p>The second operand must have the same type as the entire expression,
+unless it unconditionally throws an exception or calls a noreturn
+function, in which case it should have void type. The same constraints
+apply to the third operand. This allows array bounds checks to be
+represented conveniently as <code>(i &gt;= 0 &amp;&amp; i &lt; 10) ? i : abort()</code>.
+</p>
+<p>As a GNU extension, the C language front-ends allow the second
+operand of the <code>?:</code> operator may be omitted in the source.
+For example, <code>x ? : 3</code> is equivalent to <code>x ? x : 3</code>,
+assuming that <code>x</code> is an expression without side effects.
+In the tree representation, however, the second operand is always
+present, possibly protected by <code>SAVE_EXPR</code> if the first
+argument does cause side effects.
+</p>
+</dd>
+<dt><code>CALL_EXPR</code></dt>
+<dd><p>These nodes are used to represent calls to functions, including
+non-static member functions. <code>CALL_EXPR</code>s are implemented as
+expression nodes with a variable number of operands. Rather than using
+<code>TREE_OPERAND</code> to extract them, it is preferable to use the
+specialized accessor macros and functions that operate specifically on
+<code>CALL_EXPR</code> nodes.
+</p>
+<p><code>CALL_EXPR_FN</code> returns a pointer to the
+function to call; it is always an expression whose type is a
+<code>POINTER_TYPE</code>.
+</p>
+<p>The number of arguments to the call is returned by <code>call_expr_nargs</code>,
+while the arguments themselves can be accessed with the <code>CALL_EXPR_ARG</code>
+macro. The arguments are zero-indexed and numbered left-to-right.
+You can iterate over the arguments using <code>FOR_EACH_CALL_EXPR_ARG</code>, as in:
+</p>
+<div class="smallexample">
+<pre class="smallexample">tree call, arg;
+call_expr_arg_iterator iter;
+FOR_EACH_CALL_EXPR_ARG (arg, iter, call)
+ /* arg is bound to successive arguments of call. */
+ &hellip;;
+</pre></div>
+
+<p>For non-static
+member functions, there will be an operand corresponding to the
+<code>this</code> pointer. There will always be expressions corresponding to
+all of the arguments, even if the function is declared with default
+arguments and some arguments are not explicitly provided at the call
+sites.
+</p>
+<p><code>CALL_EXPR</code>s also have a <code>CALL_EXPR_STATIC_CHAIN</code> operand that
+is used to implement nested functions. This operand is otherwise null.
+</p>
+</dd>
+<dt><code>CLEANUP_POINT_EXPR</code></dt>
+<dd><p>These nodes represent full-expressions. The single operand is an
+expression to evaluate. Any destructor calls engendered by the creation
+of temporaries during the evaluation of that expression should be
+performed immediately after the expression is evaluated.
+</p>
+</dd>
+<dt><code>CONSTRUCTOR</code></dt>
+<dd><p>These nodes represent the brace-enclosed initializers for a structure or an
+array. They contain a sequence of component values made out of a vector of
+constructor_elt, which is a (<code>INDEX</code>, <code>VALUE</code>) pair.
+</p>
+<p>If the <code>TREE_TYPE</code> of the <code>CONSTRUCTOR</code> is a <code>RECORD_TYPE</code>,
+<code>UNION_TYPE</code> or <code>QUAL_UNION_TYPE</code> then the <code>INDEX</code> of each
+node in the sequence will be a <code>FIELD_DECL</code> and the <code>VALUE</code> will
+be the expression used to initialize that field.
+</p>
+<p>If the <code>TREE_TYPE</code> of the <code>CONSTRUCTOR</code> is an <code>ARRAY_TYPE</code>,
+then the <code>INDEX</code> of each node in the sequence will be an
+<code>INTEGER_CST</code> or a <code>RANGE_EXPR</code> of two <code>INTEGER_CST</code>s.
+A single <code>INTEGER_CST</code> indicates which element of the array is being
+assigned to. A <code>RANGE_EXPR</code> indicates an inclusive range of elements
+to initialize. In both cases the <code>VALUE</code> is the corresponding
+initializer. It is re-evaluated for each element of a
+<code>RANGE_EXPR</code>. If the <code>INDEX</code> is <code>NULL_TREE</code>, then
+the initializer is for the next available array element.
+</p>
+<p>In the front end, you should not depend on the fields appearing in any
+particular order. However, in the middle end, fields must appear in
+declaration order. You should not assume that all fields will be
+represented. Unrepresented fields will be cleared (zeroed), unless the
+CONSTRUCTOR_NO_CLEARING flag is set, in which case their value becomes
+undefined.
+</p>
+<a name="index-COMPOUND_005fLITERAL_005fEXPR_005fDECL_005fEXPR"></a>
+<a name="index-COMPOUND_005fLITERAL_005fEXPR_005fDECL"></a>
+</dd>
+<dt><code>COMPOUND_LITERAL_EXPR</code></dt>
+<dd><p>These nodes represent ISO C99 compound literals. The
+<code>COMPOUND_LITERAL_EXPR_DECL_EXPR</code> is a <code>DECL_EXPR</code>
+containing an anonymous <code>VAR_DECL</code> for
+the unnamed object represented by the compound literal; the
+<code>DECL_INITIAL</code> of that <code>VAR_DECL</code> is a <code>CONSTRUCTOR</code>
+representing the brace-enclosed list of initializers in the compound
+literal. That anonymous <code>VAR_DECL</code> can also be accessed directly
+by the <code>COMPOUND_LITERAL_EXPR_DECL</code> macro.
+</p>
+</dd>
+<dt><code>SAVE_EXPR</code></dt>
+<dd>
+<p>A <code>SAVE_EXPR</code> represents an expression (possibly involving
+side effects) that is used more than once. The side effects should
+occur only the first time the expression is evaluated. Subsequent uses
+should just reuse the computed value. The first operand to the
+<code>SAVE_EXPR</code> is the expression to evaluate. The side effects should
+be executed where the <code>SAVE_EXPR</code> is first encountered in a
+depth-first preorder traversal of the expression tree.
+</p>
+</dd>
+<dt><code>TARGET_EXPR</code></dt>
+<dd><p>A <code>TARGET_EXPR</code> represents a temporary object. The first operand
+is a <code>VAR_DECL</code> for the temporary variable. The second operand is
+the initializer for the temporary. The initializer is evaluated and,
+if non-void, copied (bitwise) into the temporary. If the initializer
+is void, that means that it will perform the initialization itself.
+</p>
+<p>Often, a <code>TARGET_EXPR</code> occurs on the right-hand side of an
+assignment, or as the second operand to a comma-expression which is
+itself the right-hand side of an assignment, etc. In this case, we say
+that the <code>TARGET_EXPR</code> is &ldquo;normal&rdquo;; otherwise, we say it is
+&ldquo;orphaned&rdquo;. For a normal <code>TARGET_EXPR</code> the temporary variable
+should be treated as an alias for the left-hand side of the assignment,
+rather than as a new temporary variable.
+</p>
+<p>The third operand to the <code>TARGET_EXPR</code>, if present, is a
+cleanup-expression (i.e., destructor call) for the temporary. If this
+expression is orphaned, then this expression must be executed when the
+statement containing this expression is complete. These cleanups must
+always be executed in the order opposite to that in which they were
+encountered. Note that if a temporary is created on one branch of a
+conditional operator (i.e., in the second or third operand to a
+<code>COND_EXPR</code>), the cleanup must be run only if that branch is
+actually executed.
+</p>
+</dd>
+<dt><code>VA_ARG_EXPR</code></dt>
+<dd><p>This node is used to implement support for the C/C++ variable argument-list
+mechanism. It represents expressions like <code>va_arg (ap, type)</code>.
+Its <code>TREE_TYPE</code> yields the tree representation for <code>type</code> and
+its sole argument yields the representation for <code>ap</code>.
+</p>
+</dd>
+<dt><code>ANNOTATE_EXPR</code></dt>
+<dd><p>This node is used to attach markers to an expression. The first operand
+is the annotated expression, the second is an <code>INTEGER_CST</code> with
+a value from <code>enum annot_expr_kind</code>, the third is an <code>INTEGER_CST</code>.
+</p></dd>
+</dl>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Vectors.html#Vectors" accesskey="n" rel="next">Vectors</a>, Previous: <a href="Storage-References.html#Storage-References" accesskey="p" rel="previous">Storage References</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Uninitialized-Data.html b/share/doc/gccint/Uninitialized-Data.html
new file mode 100644
index 0000000..cdaaad9
--- /dev/null
+++ b/share/doc/gccint/Uninitialized-Data.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Uninitialized Data</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Uninitialized Data">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Uninitialized Data">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Assembler-Format.html#Assembler-Format" rel="up" title="Assembler Format">
+<link href="Label-Output.html#Label-Output" rel="next" title="Label Output">
+<link href="Data-Output.html#Data-Output" rel="previous" title="Data Output">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Uninitialized-Data"></a>
+<div class="header">
+<p>
+Next: <a href="Label-Output.html#Label-Output" accesskey="n" rel="next">Label Output</a>, Previous: <a href="Data-Output.html#Data-Output" accesskey="p" rel="previous">Data Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Output-of-Uninitialized-Variables"></a>
+<h4 class="subsection">18.20.3 Output of Uninitialized Variables</h4>
+
+<p>Each of the macros in this section is used to do the whole job of
+outputting a single uninitialized variable.
+</p>
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fCOMMON"></a>Macro: <strong>ASM_OUTPUT_COMMON</strong> <em>(<var>stream</var>, <var>name</var>, <var>size</var>, <var>rounded</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> the assembler definition of a common-label named
+<var>name</var> whose size is <var>size</var> bytes. The variable <var>rounded</var>
+is the size rounded up to whatever alignment the caller wants. It is
+possible that <var>size</var> may be zero, for instance if a struct with no
+other member than a zero-length array is defined. In this case, the
+backend must output a symbol definition that allocates at least one
+byte, both so that the address of the resulting object does not compare
+equal to any other, and because some object formats cannot even express
+the concept of a zero-sized common symbol, as that is how they represent
+an ordinary undefined external.
+</p>
+<p>Use the expression <code>assemble_name (<var>stream</var>, <var>name</var>)</code> to
+output the name itself; before and after that, output the additional
+assembler syntax for defining the name, and a newline.
+</p>
+<p>This macro controls how the assembler definitions of uninitialized
+common global variables are output.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGNED_005fCOMMON"></a>Macro: <strong>ASM_OUTPUT_ALIGNED_COMMON</strong> <em>(<var>stream</var>, <var>name</var>, <var>size</var>, <var>alignment</var>)</em></dt>
+<dd><p>Like <code>ASM_OUTPUT_COMMON</code> except takes the required alignment as a
+separate, explicit argument. If you define this macro, it is used in
+place of <code>ASM_OUTPUT_COMMON</code>, and gives you more flexibility in
+handling the required alignment of the variable. The alignment is specified
+as the number of bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGNED_005fDECL_005fCOMMON"></a>Macro: <strong>ASM_OUTPUT_ALIGNED_DECL_COMMON</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>, <var>size</var>, <var>alignment</var>)</em></dt>
+<dd><p>Like <code>ASM_OUTPUT_ALIGNED_COMMON</code> except that <var>decl</var> of the
+variable to be output, if there is one, or <code>NULL_TREE</code> if there
+is no corresponding variable. If you define this macro, GCC will use it
+in place of both <code>ASM_OUTPUT_COMMON</code> and
+<code>ASM_OUTPUT_ALIGNED_COMMON</code>. Define this macro when you need to see
+the variable&rsquo;s decl in order to chose what to output.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGNED_005fBSS"></a>Macro: <strong>ASM_OUTPUT_ALIGNED_BSS</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>, <var>size</var>, <var>alignment</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> the assembler definition of uninitialized global <var>decl</var> named
+<var>name</var> whose size is <var>size</var> bytes. The variable <var>alignment</var>
+is the alignment specified as the number of bits.
+</p>
+<p>Try to use function <code>asm_output_aligned_bss</code> defined in file
+<samp>varasm.cc</samp> when defining this macro. If unable, use the expression
+<code>assemble_name (<var>stream</var>, <var>name</var>)</code> to output the name itself;
+before and after that, output the additional assembler syntax for defining
+the name, and a newline.
+</p>
+<p>There are two ways of handling global BSS. One is to define this macro.
+The other is to have <code>TARGET_ASM_SELECT_SECTION</code> return a
+switchable BSS section (see <a href="File-Framework.html#TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS">TARGET_HAVE_SWITCHABLE_BSS_SECTIONS</a>).
+You do not need to do both.
+</p>
+<p>Some languages do not have <code>common</code> data, and require a
+non-common form of global BSS in order to handle uninitialized globals
+efficiently. C++ is one example of this. However, if the target does
+not support global BSS, the front end may choose to make globals
+common in order to save space in the object file.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fLOCAL"></a>Macro: <strong>ASM_OUTPUT_LOCAL</strong> <em>(<var>stream</var>, <var>name</var>, <var>size</var>, <var>rounded</var>)</em></dt>
+<dd><p>A C statement (sans semicolon) to output to the stdio stream
+<var>stream</var> the assembler definition of a local-common-label named
+<var>name</var> whose size is <var>size</var> bytes. The variable <var>rounded</var>
+is the size rounded up to whatever alignment the caller wants.
+</p>
+<p>Use the expression <code>assemble_name (<var>stream</var>, <var>name</var>)</code> to
+output the name itself; before and after that, output the additional
+assembler syntax for defining the name, and a newline.
+</p>
+<p>This macro controls how the assembler definitions of uninitialized
+static variables are output.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGNED_005fLOCAL"></a>Macro: <strong>ASM_OUTPUT_ALIGNED_LOCAL</strong> <em>(<var>stream</var>, <var>name</var>, <var>size</var>, <var>alignment</var>)</em></dt>
+<dd><p>Like <code>ASM_OUTPUT_LOCAL</code> except takes the required alignment as a
+separate, explicit argument. If you define this macro, it is used in
+place of <code>ASM_OUTPUT_LOCAL</code>, and gives you more flexibility in
+handling the required alignment of the variable. The alignment is specified
+as the number of bits.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-ASM_005fOUTPUT_005fALIGNED_005fDECL_005fLOCAL"></a>Macro: <strong>ASM_OUTPUT_ALIGNED_DECL_LOCAL</strong> <em>(<var>stream</var>, <var>decl</var>, <var>name</var>, <var>size</var>, <var>alignment</var>)</em></dt>
+<dd><p>Like <code>ASM_OUTPUT_ALIGNED_LOCAL</code> except that <var>decl</var> of the
+variable to be output, if there is one, or <code>NULL_TREE</code> if there
+is no corresponding variable. If you define this macro, GCC will use it
+in place of both <code>ASM_OUTPUT_LOCAL</code> and
+<code>ASM_OUTPUT_ALIGNED_LOCAL</code>. Define this macro when you need to see
+the variable&rsquo;s decl in order to chose what to output.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Label-Output.html#Label-Output" accesskey="n" rel="next">Label Output</a>, Previous: <a href="Data-Output.html#Data-Output" accesskey="p" rel="previous">Data Output</a>, Up: <a href="Assembler-Format.html#Assembler-Format" accesskey="u" rel="up">Assembler Format</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/User-Experience-Guidelines.html b/share/doc/gccint/User-Experience-Guidelines.html
new file mode 100644
index 0000000..ebe2695
--- /dev/null
+++ b/share/doc/gccint/User-Experience-Guidelines.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: User Experience Guidelines</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: User Experience Guidelines">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: User Experience Guidelines">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics" rel="next" title="Guidelines for Diagnostics">
+<link href="Debugging-the-Analyzer.html#Debugging-the-Analyzer" rel="previous" title="Debugging the Analyzer">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="User-Experience-Guidelines"></a>
+<div class="header">
+<p>
+Next: <a href="Funding.html#Funding" accesskey="n" rel="next">Funding</a>, Previous: <a href="Static-Analyzer.html#Static-Analyzer" accesskey="p" rel="previous">Static Analyzer</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="User-Experience-Guidelines-1"></a>
+<h2 class="chapter">28 User Experience Guidelines</h2>
+<a name="index-user-experience-guidelines"></a>
+<a name="index-guidelines_002c-user-experience"></a>
+
+<p>To borrow a slogan from
+<a href="https://elm-lang.org/news/compilers-as-assistants">Elm</a>,
+</p>
+<blockquote>
+<p><strong>Compilers should be assistants, not adversaries.</strong> A compiler should
+not just detect bugs, it should then help you understand why there is a bug.
+It should not berate you in a robot voice, it should give you specific hints
+that help you write better code. Ultimately, a compiler should make
+programming faster and more fun!
+</p></blockquote>
+<div align="center">&mdash; <em>Evan Czaplicki</em>
+</div>
+<p>This chapter provides guidelines on how to implement diagnostics and
+command-line options in ways that we hope achieve the above ideal.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics" accesskey="1">Guidelines for Diagnostics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to implement diagnostics.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Guidelines-for-Options.html#Guidelines-for-Options" accesskey="2">Guidelines for Options</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Guidelines for command-line options.
+</td></tr>
+</table>
+
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/User-GC.html b/share/doc/gccint/User-GC.html
new file mode 100644
index 0000000..150641c
--- /dev/null
+++ b/share/doc/gccint/User-GC.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: User GC</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: User GC">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: User GC">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Type-Information.html#Type-Information" rel="up" title="Type Information">
+<link href="GGC-Roots.html#GGC-Roots" rel="next" title="GGC Roots">
+<link href="Inheritance-and-GTY.html#Inheritance-and-GTY" rel="previous" title="Inheritance and GTY">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="User-GC"></a>
+<div class="header">
+<p>
+Next: <a href="GGC-Roots.html#GGC-Roots" accesskey="n" rel="next">GGC Roots</a>, Previous: <a href="Inheritance-and-GTY.html#Inheritance-and-GTY" accesskey="p" rel="previous">Inheritance and GTY</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-user_002dprovided-GC-marking-routines"></a>
+<h3 class="section">23.3 Support for user-provided GC marking routines</h3>
+<a name="index-user-gc"></a>
+<p>The garbage collector supports types for which no automatic marking
+code is generated. For these types, the user is required to provide
+three functions: one to act as a marker for garbage collection, and
+two functions to act as marker and pointer walker for pre-compiled
+headers.
+</p>
+<p>Given a structure <code>struct GTY((user)) my_struct</code>, the following functions
+should be defined to mark <code>my_struct</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">void gt_ggc_mx (my_struct *p)
+{
+ /* This marks field 'fld'. */
+ gt_ggc_mx (p-&gt;fld);
+}
+
+void gt_pch_nx (my_struct *p)
+{
+ /* This marks field 'fld'. */
+ gt_pch_nx (tp-&gt;fld);
+}
+
+void gt_pch_nx (my_struct *p, gt_pointer_operator op, void *cookie)
+{
+ /* For every field 'fld', call the given pointer operator. */
+ op (&amp;(tp-&gt;fld), NULL, cookie);
+}
+</pre></div>
+
+<p>In general, each marker <code>M</code> should call <code>M</code> for every
+pointer field in the structure. Fields that are not allocated in GC
+or are not pointers must be ignored.
+</p>
+<p>For embedded lists (e.g., structures with a <code>next</code> or <code>prev</code>
+pointer), the marker must follow the chain and mark every element in
+it.
+</p>
+<p>Note that the rules for the pointer walker <code>gt_pch_nx (my_struct
+*, gt_pointer_operator, void *)</code> are slightly different. In this
+case, the operation <code>op</code> must be applied to the <em>address</em> of
+every pointer field.
+</p>
+<a name="User_002dprovided-marking-routines-for-template-types"></a>
+<h4 class="subsection">23.3.1 User-provided marking routines for template types</h4>
+<p>When a template type <code>TP</code> is marked with <code>GTY</code>, all
+instances of that type are considered user-provided types. This means
+that the individual instances of <code>TP</code> do not need to be marked
+with <code>GTY</code>. The user needs to provide template functions to mark
+all the fields of the type.
+</p>
+<p>The following code snippets represent all the functions that need to
+be provided. Note that type <code>TP</code> may reference to more than one
+type. In these snippets, there is only one type <code>T</code>, but there
+could be more.
+</p>
+<div class="smallexample">
+<pre class="smallexample">template&lt;typename T&gt;
+void gt_ggc_mx (TP&lt;T&gt; *tp)
+{
+ extern void gt_ggc_mx (T&amp;);
+
+ /* This marks field 'fld' of type 'T'. */
+ gt_ggc_mx (tp-&gt;fld);
+}
+
+template&lt;typename T&gt;
+void gt_pch_nx (TP&lt;T&gt; *tp)
+{
+ extern void gt_pch_nx (T&amp;);
+
+ /* This marks field 'fld' of type 'T'. */
+ gt_pch_nx (tp-&gt;fld);
+}
+
+template&lt;typename T&gt;
+void gt_pch_nx (TP&lt;T *&gt; *tp, gt_pointer_operator op, void *cookie)
+{
+ /* For every field 'fld' of 'tp' with type 'T *', call the given
+ pointer operator. */
+ op (&amp;(tp-&gt;fld), NULL, cookie);
+}
+
+template&lt;typename T&gt;
+void gt_pch_nx (TP&lt;T&gt; *tp, gt_pointer_operator, void *cookie)
+{
+ extern void gt_pch_nx (T *, gt_pointer_operator, void *);
+
+ /* For every field 'fld' of 'tp' with type 'T', call the pointer
+ walker for all the fields of T. */
+ gt_pch_nx (&amp;(tp-&gt;fld), op, cookie);
+}
+</pre></div>
+
+<p>Support for user-defined types is currently limited. The following
+restrictions apply:
+</p>
+<ol>
+<li> Type <code>TP</code> and all the argument types <code>T</code> must be
+marked with <code>GTY</code>.
+
+</li><li> Type <code>TP</code> can only have type names in its argument list.
+
+</li><li> The pointer walker functions are different for <code>TP&lt;T&gt;</code> and
+<code>TP&lt;T *&gt;</code>. In the case of <code>TP&lt;T&gt;</code>, references to
+<code>T</code> must be handled by calling <code>gt_pch_nx</code> (which
+will, in turn, walk all the pointers inside fields of <code>T</code>).
+In the case of <code>TP&lt;T *&gt;</code>, references to <code>T *</code> must be
+handled by calling the <code>op</code> function on the address of the
+pointer (see the code snippets above).
+</li></ol>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GGC-Roots.html#GGC-Roots" accesskey="n" rel="next">GGC Roots</a>, Previous: <a href="Inheritance-and-GTY.html#Inheritance-and-GTY" accesskey="p" rel="previous">Inheritance and GTY</a>, Up: <a href="Type-Information.html#Type-Information" accesskey="u" rel="up">Type Information</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Using-RTL-SSA.html b/share/doc/gccint/Using-RTL-SSA.html
new file mode 100644
index 0000000..c47aee5
--- /dev/null
+++ b/share/doc/gccint/Using-RTL-SSA.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Using RTL SSA</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Using RTL SSA">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Using RTL SSA">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL-SSA.html#RTL-SSA" rel="up" title="RTL SSA">
+<link href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" rel="next" title="RTL SSA Instructions">
+<link href="RTL-SSA.html#RTL-SSA" rel="previous" title="RTL SSA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Using-RTL-SSA"></a>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" accesskey="n" rel="next">RTL SSA Instructions</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-RTL-SSA-in-a-pass"></a>
+<h4 class="subsection">14.21.1 Using RTL SSA in a pass</h4>
+
+<p>A pass that wants to use the RTL SSA form should start with the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">#define INCLUDE_ALGORITHM
+#define INCLUDE_FUNCTIONAL
+#include &quot;config.h&quot;
+#include &quot;system.h&quot;
+#include &quot;coretypes.h&quot;
+#include &quot;backend.h&quot;
+#include &quot;rtl.h&quot;
+#include &quot;df.h&quot;
+#include &quot;rtl-ssa.h&quot;
+</pre></div>
+
+<p>All the RTL SSA code is contained in the <code>rtl_ssa</code> namespace,
+so most passes will then want to do:
+</p>
+<div class="smallexample">
+<pre class="smallexample">using namespace rtl_ssa;
+</pre></div>
+
+<p>However, this is purely a matter of taste, and the examples in the rest of
+this section do not require it.
+</p>
+<p>The RTL SSA represention is an optional on-the-side feature that applies
+on top of the normal RTL instructions. It is currently local to individual
+RTL passes and is not maintained across passes.
+</p>
+<p>However, in order to allow the RTL SSA information to be preserved across
+passes in future, &lsquo;<samp>crtl-&gt;ssa</samp>&rsquo; points to the current function&rsquo;s
+SSA form (if any). Passes that want to use the RTL SSA form should
+first do:
+</p>
+<div class="smallexample">
+<pre class="smallexample">crtl-&gt;ssa = new rtl_ssa::function_info (<var>fn</var>);
+</pre></div>
+
+<p>where <var>fn</var> is the function that the pass is processing.
+(Passes that are <code>using namespace rtl_ssa</code> do not need
+the &lsquo;<samp>rtl_ssa::</samp>&rsquo;.)
+</p>
+<p>Once the pass has finished with the SSA form, it should do the following:
+</p>
+<div class="smallexample">
+<pre class="smallexample">free_dominance_info (CDI_DOMINATORS);
+if (crtl-&gt;ssa-&gt;perform_pending_updates ())
+ cleanup_cfg (0);
+
+delete crtl-&gt;ssa;
+crtl-&gt;ssa = nullptr;
+</pre></div>
+
+<p>The <code>free_dominance_info</code> call is necessary because
+dominance information is not currently maintained between RTL passes.
+The next two lines commit any changes to the RTL instructions that
+were queued for later; see the comment above the declaration of
+<code>perform_pending_updates</code> for details. The final two lines
+discard the RTL SSA form and free the associated memory.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="RTL-SSA-Instructions.html#RTL-SSA-Instructions" accesskey="n" rel="next">RTL SSA Instructions</a>, Up: <a href="RTL-SSA.html#RTL-SSA" accesskey="u" rel="up">RTL SSA</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html b/share/doc/gccint/Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html
new file mode 100644
index 0000000..97c01ae
--- /dev/null
+++ b/share/doc/gccint/Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Using poly_int with C++ arithmetic operators</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Using poly_int with C++ arithmetic operators">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Using poly_int with C++ arithmetic operators">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="up" title="Arithmetic on poly_ints">
+<link href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints" rel="next" title="wi arithmetic on poly_ints">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="previous" title="Arithmetic on poly_ints">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Using-poly_005fint-with-C_002b_002b-arithmetic-operators"></a>
+<div class="header">
+<p>
+Next: <a href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints" accesskey="n" rel="next"><code>wi</code> arithmetic on <code>poly_int</code>s</a>, Up: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="u" rel="up">Arithmetic on <code>poly_int</code>s</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Using-poly_005fint-with-C_002b_002b-arithmetic-operators-1"></a>
+<h4 class="subsection">10.4.1 Using <code>poly_int</code> with C++ arithmetic operators</h4>
+
+<p>The following C++ expressions are supported, where <var>p1</var> and <var>p2</var>
+are <code>poly_int</code>s and where <var>c1</var> and <var>c2</var> are scalars:
+</p>
+<div class="smallexample">
+<pre class="smallexample">-<var>p1</var>
+~<var>p1</var>
+
+<var>p1</var> + <var>p2</var>
+<var>p1</var> + <var>c2</var>
+<var>c1</var> + <var>p2</var>
+
+<var>p1</var> - <var>p2</var>
+<var>p1</var> - <var>c2</var>
+<var>c1</var> - <var>p2</var>
+
+<var>c1</var> * <var>p2</var>
+<var>p1</var> * <var>c2</var>
+
+<var>p1</var> &lt;&lt; <var>c2</var>
+
+<var>p1</var> += <var>p2</var>
+<var>p1</var> += <var>c2</var>
+
+<var>p1</var> -= <var>p2</var>
+<var>p1</var> -= <var>c2</var>
+
+<var>p1</var> *= <var>c2</var>
+<var>p1</var> &lt;&lt;= <var>c2</var>
+</pre></div>
+
+<p>These arithmetic operations handle integer ranks in a similar way
+to C++. The main difference is that every coefficient narrower than
+<code>HOST_WIDE_INT</code> promotes to <code>HOST_WIDE_INT</code>, whereas in
+C++ everything narrower than <code>int</code> promotes to <code>int</code>.
+For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">poly_uint16 + int -&gt; poly_int64
+unsigned int + poly_uint16 -&gt; poly_int64
+poly_int64 + int -&gt; poly_int64
+poly_int32 + poly_uint64 -&gt; poly_uint64
+uint64 + poly_int64 -&gt; poly_uint64
+poly_offset_int + int32 -&gt; poly_offset_int
+offset_int + poly_uint16 -&gt; poly_offset_int
+</pre></div>
+
+<p>In the first two examples, both coefficients are narrower than
+<code>HOST_WIDE_INT</code>, so the result has coefficients of type
+<code>HOST_WIDE_INT</code>. In the other examples, the coefficient
+with the highest rank &ldquo;wins&rdquo;.
+</p>
+<p>If one of the operands is <code>wide_int</code> or <code>poly_wide_int</code>,
+the rules are the same as for <code>wide_int</code> arithmetic.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/VMS-Debug.html b/share/doc/gccint/VMS-Debug.html
new file mode 100644
index 0000000..5098f3b
--- /dev/null
+++ b/share/doc/gccint/VMS-Debug.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: VMS Debug</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: VMS Debug">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: VMS Debug">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging-Info.html#Debugging-Info" rel="up" title="Debugging Info">
+<link href="CTF-Debug.html#CTF-Debug" rel="next" title="CTF Debug">
+<link href="DWARF.html#DWARF" rel="previous" title="DWARF">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="VMS-Debug"></a>
+<div class="header">
+<p>
+Next: <a href="CTF-Debug.html#CTF-Debug" accesskey="n" rel="next">CTF Debug</a>, Previous: <a href="DWARF.html#DWARF" accesskey="p" rel="previous">DWARF</a>, Up: <a href="Debugging-Info.html#Debugging-Info" accesskey="u" rel="up">Debugging Info</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Macros-for-VMS-Debug-Format"></a>
+<h4 class="subsection">18.21.3 Macros for VMS Debug Format</h4>
+
+<p>Here are macros for VMS debug format.
+</p>
+<dl>
+<dt><a name="index-VMS_005fDEBUGGING_005fINFO"></a>Macro: <strong>VMS_DEBUGGING_INFO</strong></dt>
+<dd><p>Define this macro if GCC should produce debugging output for VMS
+in response to the <samp>-g</samp> option. The default behavior for VMS
+is to generate minimal debug info for a traceback in the absence of
+<samp>-g</samp> unless explicitly overridden with <samp>-g0</samp>. This
+behavior is controlled by <code>TARGET_OPTION_OPTIMIZATION</code> and
+<code>TARGET_OPTION_OVERRIDE</code>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Values-in-Registers.html b/share/doc/gccint/Values-in-Registers.html
new file mode 100644
index 0000000..346d226
--- /dev/null
+++ b/share/doc/gccint/Values-in-Registers.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Values in Registers</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Values in Registers">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Values in Registers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html#Registers" rel="up" title="Registers">
+<link href="Leaf-Functions.html#Leaf-Functions" rel="next" title="Leaf Functions">
+<link href="Allocation-Order.html#Allocation-Order" rel="previous" title="Allocation Order">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Values-in-Registers"></a>
+<div class="header">
+<p>
+Next: <a href="Leaf-Functions.html#Leaf-Functions" accesskey="n" rel="next">Leaf Functions</a>, Previous: <a href="Allocation-Order.html#Allocation-Order" accesskey="p" rel="previous">Allocation Order</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="How-Values-Fit-in-Registers"></a>
+<h4 class="subsection">18.7.3 How Values Fit in Registers</h4>
+
+<p>This section discusses the macros that describe which kinds of values
+(specifically, which machine modes) each register can hold, and how many
+consecutive registers are needed for a given mode.
+</p>
+<dl>
+<dt><a name="index-TARGET_005fHARD_005fREGNO_005fNREGS"></a>Target Hook: <em>unsigned int</em> <strong>TARGET_HARD_REGNO_NREGS</strong> <em>(unsigned int <var>regno</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook returns the number of consecutive hard registers, starting
+at register number <var>regno</var>, required to hold a value of mode
+<var>mode</var>. This hook must never return zero, even if a register
+cannot hold the requested mode - indicate that with
+<code>TARGET_HARD_REGNO_MODE_OK</code> and/or
+<code>TARGET_CAN_CHANGE_MODE_CLASS</code> instead.
+</p>
+<p>The default definition returns the number of words in <var>mode</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fREGNO_005fNREGS_005fHAS_005fPADDING"></a>Macro: <strong>HARD_REGNO_NREGS_HAS_PADDING</strong> <em>(<var>regno</var>, <var>mode</var>)</em></dt>
+<dd><p>A C expression that is nonzero if a value of mode <var>mode</var>, stored
+in memory, ends with padding that causes it to take up more space than
+in registers starting at register number <var>regno</var> (as determined by
+multiplying GCC&rsquo;s notion of the size of the register when containing
+this mode by the number of registers returned by
+<code>TARGET_HARD_REGNO_NREGS</code>). By default this is zero.
+</p>
+<p>For example, if a floating-point value is stored in three 32-bit
+registers but takes up 128 bits in memory, then this would be
+nonzero.
+</p>
+<p>This macros only needs to be defined if there are cases where
+<code>subreg_get_info</code>
+would otherwise wrongly determine that a <code>subreg</code> can be
+represented by an offset to the register number, when in fact such a
+<code>subreg</code> would contain some of the padding not stored in
+registers and so not be representable.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fREGNO_005fNREGS_005fWITH_005fPADDING"></a>Macro: <strong>HARD_REGNO_NREGS_WITH_PADDING</strong> <em>(<var>regno</var>, <var>mode</var>)</em></dt>
+<dd><p>For values of <var>regno</var> and <var>mode</var> for which
+<code>HARD_REGNO_NREGS_HAS_PADDING</code> returns nonzero, a C expression
+returning the greater number of registers required to hold the value
+including any padding. In the example above, the value would be four.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-REGMODE_005fNATURAL_005fSIZE-2"></a>Macro: <strong>REGMODE_NATURAL_SIZE</strong> <em>(<var>mode</var>)</em></dt>
+<dd><p>Define this macro if the natural size of registers that hold values
+of mode <var>mode</var> is not the word size. It is a C expression that
+should give the natural size in bytes for the specified mode. It is
+used by the register allocator to try to optimize its results. This
+happens for example on SPARC 64-bit where the natural size of
+floating-point registers is still 32-bit.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHARD_005fREGNO_005fMODE_005fOK"></a>Target Hook: <em>bool</em> <strong>TARGET_HARD_REGNO_MODE_OK</strong> <em>(unsigned int <var>regno</var>, machine_mode <var>mode</var>)</em></dt>
+<dd><p>This hook returns true if it is permissible to store a value
+of mode <var>mode</var> in hard register number <var>regno</var> (or in several
+registers starting with that one). The default definition returns true
+unconditionally.
+</p>
+<p>You need not include code to check for the numbers of fixed registers,
+because the allocation mechanism considers them to be always occupied.
+</p>
+<a name="index-register-pairs"></a>
+<p>On some machines, double-precision values must be kept in even/odd
+register pairs. You can implement that by defining this hook to reject
+odd register numbers for such modes.
+</p>
+<p>The minimum requirement for a mode to be OK in a register is that the
+&lsquo;<samp>mov<var>mode</var></samp>&rsquo; instruction pattern support moves between the
+register and other hard register in the same class and that moving a
+value into the register and back out not alter it.
+</p>
+<p>Since the same instruction used to move <code>word_mode</code> will work for
+all narrower integer modes, it is not necessary on any machine for
+this hook to distinguish between these modes, provided you define
+patterns &lsquo;<samp>movhi</samp>&rsquo;, etc., to take advantage of this. This is
+useful because of the interaction between <code>TARGET_HARD_REGNO_MODE_OK</code>
+and <code>TARGET_MODES_TIEABLE_P</code>; it is very desirable for all integer
+modes to be tieable.
+</p>
+<p>Many machines have special registers for floating point arithmetic.
+Often people assume that floating point machine modes are allowed only
+in floating point registers. This is not true. Any registers that
+can hold integers can safely <em>hold</em> a floating point machine
+mode, whether or not floating arithmetic can be done on it in those
+registers. Integer move instructions can be used to move the values.
+</p>
+<p>On some machines, though, the converse is true: fixed-point machine
+modes may not go in floating registers. This is true if the floating
+registers normalize any value stored in them, because storing a
+non-floating value there would garble it. In this case,
+<code>TARGET_HARD_REGNO_MODE_OK</code> should reject fixed-point machine modes in
+floating registers. But if the floating registers do not automatically
+normalize, if you can store any bit pattern in one and retrieve it
+unchanged without a trap, then any machine mode may go in a floating
+register, so you can define this hook to say so.
+</p>
+<p>The primary significance of special floating registers is rather that
+they are the registers acceptable in floating point arithmetic
+instructions. However, this is of no concern to
+<code>TARGET_HARD_REGNO_MODE_OK</code>. You handle it by writing the proper
+constraints for those instructions.
+</p>
+<p>On some machines, the floating registers are especially slow to access,
+so that it is better to store a value in a stack frame than in such a
+register if floating point arithmetic is not being done. As long as the
+floating registers are not in class <code>GENERAL_REGS</code>, they will not
+be used unless some pattern&rsquo;s constraint asks for one.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-HARD_005fREGNO_005fRENAME_005fOK"></a>Macro: <strong>HARD_REGNO_RENAME_OK</strong> <em>(<var>from</var>, <var>to</var>)</em></dt>
+<dd><p>A C expression that is nonzero if it is OK to rename a hard register
+<var>from</var> to another hard register <var>to</var>.
+</p>
+<p>One common use of this macro is to prevent renaming of a register to
+another register that is not saved by a prologue in an interrupt
+handler.
+</p>
+<p>The default is always nonzero.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fMODES_005fTIEABLE_005fP"></a>Target Hook: <em>bool</em> <strong>TARGET_MODES_TIEABLE_P</strong> <em>(machine_mode <var>mode1</var>, machine_mode <var>mode2</var>)</em></dt>
+<dd><p>This hook returns true if a value of mode <var>mode1</var> is accessible
+in mode <var>mode2</var> without copying.
+</p>
+<p>If <code>TARGET_HARD_REGNO_MODE_OK (<var>r</var>, <var>mode1</var>)</code> and
+<code>TARGET_HARD_REGNO_MODE_OK (<var>r</var>, <var>mode2</var>)</code> are always
+the same for any <var>r</var>, then
+<code>TARGET_MODES_TIEABLE_P (<var>mode1</var>, <var>mode2</var>)</code>
+should be true. If they differ for any <var>r</var>, you should define
+this hook to return false unless some other mechanism ensures the
+accessibility of the value in a narrower mode.
+</p>
+<p>You should define this hook to return true in as many cases as
+possible since doing so will allow GCC to perform better register
+allocation. The default definition returns true unconditionally.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fHARD_005fREGNO_005fSCRATCH_005fOK"></a>Target Hook: <em>bool</em> <strong>TARGET_HARD_REGNO_SCRATCH_OK</strong> <em>(unsigned int <var>regno</var>)</em></dt>
+<dd><p>This target hook should return <code>true</code> if it is OK to use a hard register
+<var>regno</var> as scratch reg in peephole2.
+</p>
+<p>One common use of this macro is to prevent using of a register that
+is not saved by a prologue in an interrupt handler.
+</p>
+<p>The default version of this hook always returns <code>true</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-AVOID_005fCCMODE_005fCOPIES"></a>Macro: <strong>AVOID_CCMODE_COPIES</strong></dt>
+<dd><p>Define this macro if the compiler should avoid copies to/from <code>CCmode</code>
+registers. You should only define this macro if support for copying to/from
+<code>CCmode</code> is incomplete.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Leaf-Functions.html#Leaf-Functions" accesskey="n" rel="next">Leaf Functions</a>, Previous: <a href="Allocation-Order.html#Allocation-Order" accesskey="p" rel="previous">Allocation Order</a>, Up: <a href="Registers.html#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Varargs.html b/share/doc/gccint/Varargs.html
new file mode 100644
index 0000000..da016d5
--- /dev/null
+++ b/share/doc/gccint/Varargs.html
@@ -0,0 +1,252 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Varargs</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Varargs">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Varargs">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Target-Macros.html#Target-Macros" rel="up" title="Target Macros">
+<link href="Trampolines.html#Trampolines" rel="next" title="Trampolines">
+<link href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks" rel="previous" title="Miscellaneous Register Hooks">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Varargs"></a>
+<div class="header">
+<p>
+Next: <a href="Trampolines.html#Trampolines" accesskey="n" rel="next">Trampolines</a>, Previous: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="p" rel="previous">Stack and Calling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Implementing-the-Varargs-Macros"></a>
+<h3 class="section">18.10 Implementing the Varargs Macros</h3>
+<a name="index-varargs-implementation"></a>
+
+<p>GCC comes with an implementation of <code>&lt;varargs.h&gt;</code> and
+<code>&lt;stdarg.h&gt;</code> that work without change on machines that pass arguments
+on the stack. Other machines require their own implementations of
+varargs, and the two machine independent header files must have
+conditionals to include it.
+</p>
+<p>ISO <code>&lt;stdarg.h&gt;</code> differs from traditional <code>&lt;varargs.h&gt;</code> mainly in
+the calling convention for <code>va_start</code>. The traditional
+implementation takes just one argument, which is the variable in which
+to store the argument pointer. The ISO implementation of
+<code>va_start</code> takes an additional second argument. The user is
+supposed to write the last named argument of the function here.
+</p>
+<p>However, <code>va_start</code> should not use this argument. The way to find
+the end of the named arguments is with the built-in functions described
+below.
+</p>
+<dl>
+<dt><a name="index-_005f_005fbuiltin_005fsaveregs"></a>Macro: <strong>__builtin_saveregs</strong> <em>()</em></dt>
+<dd><p>Use this built-in function to save the argument registers in memory so
+that the varargs mechanism can access them. Both ISO and traditional
+versions of <code>va_start</code> must use <code>__builtin_saveregs</code>, unless
+you use <code>TARGET_SETUP_INCOMING_VARARGS</code> (see below) instead.
+</p>
+<p>On some machines, <code>__builtin_saveregs</code> is open-coded under the
+control of the target hook <code>TARGET_EXPAND_BUILTIN_SAVEREGS</code>. On
+other machines, it calls a routine written in assembler language,
+found in <samp>libgcc2.c</samp>.
+</p>
+<p>Code generated for the call to <code>__builtin_saveregs</code> appears at the
+beginning of the function, as opposed to where the call to
+<code>__builtin_saveregs</code> is written, regardless of what the code is.
+This is because the registers must be saved before the function starts
+to use them for its own purposes.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fbuiltin_005fnext_005farg"></a>Macro: <strong>__builtin_next_arg</strong> <em>(<var>lastarg</var>)</em></dt>
+<dd><p>This builtin returns the address of the first anonymous stack
+argument, as type <code>void *</code>. If <code>ARGS_GROW_DOWNWARD</code>, it
+returns the address of the location above the first anonymous stack
+argument. Use it in <code>va_start</code> to initialize the pointer for
+fetching arguments from the stack. Also use it in <code>va_start</code> to
+verify that the second parameter <var>lastarg</var> is the last named argument
+of the current function.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-_005f_005fbuiltin_005fclassify_005ftype"></a>Macro: <strong>__builtin_classify_type</strong> <em>(<var>object</var>)</em></dt>
+<dd><p>Since each machine has its own conventions for which data types are
+passed in which kind of register, your implementation of <code>va_arg</code>
+has to embody these conventions. The easiest way to categorize the
+specified data type is to use <code>__builtin_classify_type</code> together
+with <code>sizeof</code> and <code>__alignof__</code>.
+</p>
+<p><code>__builtin_classify_type</code> ignores the value of <var>object</var>,
+considering only its data type. It returns an integer describing what
+kind of type that is&mdash;integer, floating, pointer, structure, and so on.
+</p>
+<p>The file <samp>typeclass.h</samp> defines an enumeration that you can use to
+interpret the values of <code>__builtin_classify_type</code>.
+</p></dd></dl>
+
+<p>These machine description macros help implement varargs:
+</p>
+<dl>
+<dt><a name="index-TARGET_005fEXPAND_005fBUILTIN_005fSAVEREGS"></a>Target Hook: <em>rtx</em> <strong>TARGET_EXPAND_BUILTIN_SAVEREGS</strong> <em>(void)</em></dt>
+<dd><p>If defined, this hook produces the machine-specific code for a call to
+<code>__builtin_saveregs</code>. This code will be moved to the very
+beginning of the function, before any parameter access are made. The
+return value of this function should be an RTX that contains the value
+to use as the return of <code>__builtin_saveregs</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSETUP_005fINCOMING_005fVARARGS"></a>Target Hook: <em>void</em> <strong>TARGET_SETUP_INCOMING_VARARGS</strong> <em>(cumulative_args_t <var>args_so_far</var>, const function_arg_info <var>&amp;arg</var>, int *<var>pretend_args_size</var>, int <var>second_time</var>)</em></dt>
+<dd><p>This target hook offers an alternative to using
+<code>__builtin_saveregs</code> and defining the hook
+<code>TARGET_EXPAND_BUILTIN_SAVEREGS</code>. Use it to store the anonymous
+register arguments into the stack so that all the arguments appear to
+have been passed consecutively on the stack. Once this is done, you can
+use the standard implementation of varargs that works for machines that
+pass all their arguments on the stack.
+</p>
+<p>The argument <var>args_so_far</var> points to the <code>CUMULATIVE_ARGS</code> data
+structure, containing the values that are obtained after processing the
+named arguments. The argument <var>arg</var> describes the last of these named
+arguments. The argument <var>arg</var> should not be used if the function type
+satisfies <code>TYPE_NO_NAMED_ARGS_STDARG_P</code>, since in that case there are
+no named arguments and all arguments are accessed with <code>va_arg</code>.
+</p>
+<p>The target hook should do two things: first, push onto the stack all the
+argument registers <em>not</em> used for the named arguments, and second,
+store the size of the data thus pushed into the <code>int</code>-valued
+variable pointed to by <var>pretend_args_size</var>. The value that you
+store here will serve as additional offset for setting up the stack
+frame.
+</p>
+<p>Because you must generate code to push the anonymous arguments at
+compile time without knowing their data types,
+<code>TARGET_SETUP_INCOMING_VARARGS</code> is only useful on machines that
+have just a single category of argument register and use it uniformly
+for all data types.
+</p>
+<p>If the argument <var>second_time</var> is nonzero, it means that the
+arguments of the function are being analyzed for the second time. This
+happens for an inline function, which is not actually compiled until the
+end of the source file. The hook <code>TARGET_SETUP_INCOMING_VARARGS</code> should
+not generate any instructions in this case.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fSTRICT_005fARGUMENT_005fNAMING"></a>Target Hook: <em>bool</em> <strong>TARGET_STRICT_ARGUMENT_NAMING</strong> <em>(cumulative_args_t <var>ca</var>)</em></dt>
+<dd><p>Define this hook to return <code>true</code> if the location where a function
+argument is passed depends on whether or not it is a named argument.
+</p>
+<p>This hook controls how the <var>named</var> argument to <code>TARGET_FUNCTION_ARG</code>
+is set for varargs and stdarg functions. If this hook returns
+<code>true</code>, the <var>named</var> argument is always true for named
+arguments, and false for unnamed arguments. If it returns <code>false</code>,
+but <code>TARGET_PRETEND_OUTGOING_VARARGS_NAMED</code> returns <code>true</code>,
+then all arguments are treated as named. Otherwise, all named arguments
+except the last are treated as named.
+</p>
+<p>You need not define this hook if it always returns <code>false</code>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fCALL_005fARGS"></a>Target Hook: <em>void</em> <strong>TARGET_CALL_ARGS</strong> <em>(rtx, <var>tree</var>)</em></dt>
+<dd><p>While generating RTL for a function call, this target hook is invoked once
+for each argument passed to the function, either a register returned by
+<code>TARGET_FUNCTION_ARG</code> or a memory location. It is called just
+before the point where argument registers are stored. The type of the
+function to be called is also passed as the second argument; it is
+<code>NULL_TREE</code> for libcalls. The <code>TARGET_END_CALL_ARGS</code> hook is
+invoked just after the code to copy the return reg has been emitted.
+This functionality can be used to perform special setup of call argument
+registers if a target needs it.
+For functions without arguments, the hook is called once with <code>pc_rtx</code>
+passed instead of an argument register.
+Most ports do not need to implement anything for this hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fEND_005fCALL_005fARGS"></a>Target Hook: <em>void</em> <strong>TARGET_END_CALL_ARGS</strong> <em>(void)</em></dt>
+<dd><p>This target hook is invoked while generating RTL for a function call,
+just after the point where the return reg is copied into a pseudo. It
+signals that all the call argument and return registers for the just
+emitted call are now no longer in use.
+Most ports do not need to implement anything for this hook.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-TARGET_005fPRETEND_005fOUTGOING_005fVARARGS_005fNAMED"></a>Target Hook: <em>bool</em> <strong>TARGET_PRETEND_OUTGOING_VARARGS_NAMED</strong> <em>(cumulative_args_t <var>ca</var>)</em></dt>
+<dd><p>If you need to conditionally change ABIs so that one works with
+<code>TARGET_SETUP_INCOMING_VARARGS</code>, but the other works like neither
+<code>TARGET_SETUP_INCOMING_VARARGS</code> nor <code>TARGET_STRICT_ARGUMENT_NAMING</code> was
+defined, then define this hook to return <code>true</code> if
+<code>TARGET_SETUP_INCOMING_VARARGS</code> is used, <code>false</code> otherwise.
+Otherwise, you should not define this hook.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Trampolines.html#Trampolines" accesskey="n" rel="next">Trampolines</a>, Previous: <a href="Stack-and-Calling.html#Stack-and-Calling" accesskey="p" rel="previous">Stack and Calling</a>, Up: <a href="Target-Macros.html#Target-Macros" accesskey="u" rel="up">Target Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Vector-Operations.html b/share/doc/gccint/Vector-Operations.html
new file mode 100644
index 0000000..7b0c3e2
--- /dev/null
+++ b/share/doc/gccint/Vector-Operations.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Vector Operations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Vector Operations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Vector Operations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="RTL.html#RTL" rel="up" title="RTL">
+<link href="Conversions.html#Conversions" rel="next" title="Conversions">
+<link href="Bit_002dFields.html#Bit_002dFields" rel="previous" title="Bit-Fields">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Vector-Operations"></a>
+<div class="header">
+<p>
+Next: <a href="Conversions.html#Conversions" accesskey="n" rel="next">Conversions</a>, Previous: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="p" rel="previous">Bit-Fields</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Vector-Operations-1"></a>
+<h3 class="section">14.12 Vector Operations</h3>
+<a name="index-vector-operations"></a>
+
+<p>All normal RTL expressions can be used with vector modes; they are
+interpreted as operating on each part of the vector independently.
+Additionally, there are a few new expressions to describe specific vector
+operations.
+</p>
+<dl compact="compact">
+<dd><a name="index-vec_005fmerge"></a>
+</dd>
+<dt><code>(vec_merge:<var>m</var> <var>vec1</var> <var>vec2</var> <var>items</var>)</code></dt>
+<dd><p>This describes a merge operation between two vectors. The result is a vector
+of mode <var>m</var>; its elements are selected from either <var>vec1</var> or
+<var>vec2</var>. Which elements are selected is described by <var>items</var>, which
+is a bit mask represented by a <code>const_int</code>; a zero bit indicates the
+corresponding element in the result vector is taken from <var>vec2</var> while
+a set bit indicates it is taken from <var>vec1</var>.
+</p>
+<a name="index-vec_005fselect"></a>
+</dd>
+<dt><code>(vec_select:<var>m</var> <var>vec1</var> <var>selection</var>)</code></dt>
+<dd><p>This describes an operation that selects parts of a vector. <var>vec1</var> is
+the source vector, and <var>selection</var> is a <code>parallel</code> that contains a
+<code>const_int</code> (or another expression, if the selection can be made at
+runtime) for each of the subparts of the result vector, giving the number of
+the source subpart that should be stored into it. The result mode <var>m</var> is
+either the submode for a single element of <var>vec1</var> (if only one subpart is
+selected), or another vector mode with that element submode (if multiple
+subparts are selected).
+</p>
+<a name="index-vec_005fconcat"></a>
+</dd>
+<dt><code>(vec_concat:<var>m</var> <var>x1</var> <var>x2</var>)</code></dt>
+<dd><p>Describes a vector concat operation. The result is a concatenation of the
+vectors or scalars <var>x1</var> and <var>x2</var>; its length is the sum of the
+lengths of the two inputs.
+</p>
+<a name="index-vec_005fduplicate"></a>
+</dd>
+<dt><code>(vec_duplicate:<var>m</var> <var>x</var>)</code></dt>
+<dd><p>This operation converts a scalar into a vector or a small vector into a
+larger one by duplicating the input values. The output vector mode must have
+the same submodes as the input vector mode or the scalar modes, and the
+number of output parts must be an integer multiple of the number of input
+parts.
+</p>
+<a name="index-vec_005fseries"></a>
+</dd>
+<dt><code>(vec_series:<var>m</var> <var>base</var> <var>step</var>)</code></dt>
+<dd><p>This operation creates a vector in which element <var>i</var> is equal to
+&lsquo;<samp><var>base</var> + <var>i</var>*<var>step</var></samp>&rsquo;. <var>m</var> must be a vector integer mode.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Conversions.html#Conversions" accesskey="n" rel="next">Conversions</a>, Previous: <a href="Bit_002dFields.html#Bit_002dFields" accesskey="p" rel="previous">Bit-Fields</a>, Up: <a href="RTL.html#RTL" accesskey="u" rel="up">RTL</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Vectors.html b/share/doc/gccint/Vectors.html
new file mode 100644
index 0000000..f86ca74
--- /dev/null
+++ b/share/doc/gccint/Vectors.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Vectors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Vectors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Vectors">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Expression-trees.html#Expression-trees" rel="up" title="Expression trees">
+<link href="Statements.html#Statements" rel="next" title="Statements">
+<link href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" rel="previous" title="Unary and Binary Expressions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Vectors"></a>
+<div class="header">
+<p>
+Previous: <a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" accesskey="p" rel="previous">Unary and Binary Expressions</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Vectors-1"></a>
+<h4 class="subsection">11.6.4 Vectors</h4>
+<a name="index-VEC_005fDUPLICATE_005fEXPR"></a>
+<a name="index-VEC_005fSERIES_005fEXPR"></a>
+<a name="index-VEC_005fLSHIFT_005fEXPR"></a>
+<a name="index-VEC_005fRSHIFT_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fMULT_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fMULT_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fPLUS_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fPLUS_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fMINUS_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fWIDEN_005fMINUS_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fFLOAT_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fFLOAT_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fFIX_005fTRUNC_005fHI_005fEXPR"></a>
+<a name="index-VEC_005fUNPACK_005fFIX_005fTRUNC_005fLO_005fEXPR"></a>
+<a name="index-VEC_005fPACK_005fTRUNC_005fEXPR"></a>
+<a name="index-VEC_005fPACK_005fSAT_005fEXPR"></a>
+<a name="index-VEC_005fPACK_005fFIX_005fTRUNC_005fEXPR"></a>
+<a name="index-VEC_005fPACK_005fFLOAT_005fEXPR"></a>
+<a name="index-VEC_005fCOND_005fEXPR"></a>
+<a name="index-SAD_005fEXPR"></a>
+
+<dl compact="compact">
+<dt><code>VEC_DUPLICATE_EXPR</code></dt>
+<dd><p>This node has a single operand and represents a vector in which every
+element is equal to that operand.
+</p>
+</dd>
+<dt><code>VEC_SERIES_EXPR</code></dt>
+<dd><p>This node represents a vector formed from a scalar base and step,
+given as the first and second operands respectively. Element <var>i</var>
+of the result is equal to &lsquo;<samp><var>base</var> + <var>i</var>*<var>step</var></samp>&rsquo;.
+</p>
+<p>This node is restricted to integral types, in order to avoid
+specifying the rounding behavior for floating-point types.
+</p>
+</dd>
+<dt><code>VEC_LSHIFT_EXPR</code></dt>
+<dt><code>VEC_RSHIFT_EXPR</code></dt>
+<dd><p>These nodes represent whole vector left and right shifts, respectively.
+The first operand is the vector to shift; it will always be of vector type.
+The second operand is an expression for the number of bits by which to
+shift. Note that the result is undefined if the second operand is larger
+than or equal to the first operand&rsquo;s type size.
+</p>
+</dd>
+<dt><code>VEC_WIDEN_MULT_HI_EXPR</code></dt>
+<dt><code>VEC_WIDEN_MULT_LO_EXPR</code></dt>
+<dd><p>These nodes represent widening vector multiplication of the high and low
+parts of the two input vectors, respectively. Their operands are vectors
+that contain the same number of elements (<code>N</code>) of the same integral type.
+The result is a vector that contains half as many elements, of an integral type
+whose size is twice as wide. In the case of <code>VEC_WIDEN_MULT_HI_EXPR</code> the
+high <code>N/2</code> elements of the two vector are multiplied to produce the
+vector of <code>N/2</code> products. In the case of <code>VEC_WIDEN_MULT_LO_EXPR</code> the
+low <code>N/2</code> elements of the two vector are multiplied to produce the
+vector of <code>N/2</code> products.
+</p>
+</dd>
+<dt><code>VEC_WIDEN_PLUS_HI_EXPR</code></dt>
+<dt><code>VEC_WIDEN_PLUS_LO_EXPR</code></dt>
+<dd><p>These nodes represent widening vector addition of the high and low parts of
+the two input vectors, respectively. Their operands are vectors that contain
+the same number of elements (<code>N</code>) of the same integral type. The result
+is a vector that contains half as many elements, of an integral type whose size
+is twice as wide. In the case of <code>VEC_WIDEN_PLUS_HI_EXPR</code> the high
+<code>N/2</code> elements of the two vectors are added to produce the vector of
+<code>N/2</code> products. In the case of <code>VEC_WIDEN_PLUS_LO_EXPR</code> the low
+<code>N/2</code> elements of the two vectors are added to produce the vector of
+<code>N/2</code> products.
+</p>
+</dd>
+<dt><code>VEC_WIDEN_MINUS_HI_EXPR</code></dt>
+<dt><code>VEC_WIDEN_MINUS_LO_EXPR</code></dt>
+<dd><p>These nodes represent widening vector subtraction of the high and low parts of
+the two input vectors, respectively. Their operands are vectors that contain
+the same number of elements (<code>N</code>) of the same integral type. The high/low
+elements of the second vector are subtracted from the high/low elements of the
+first. The result is a vector that contains half as many elements, of an
+integral type whose size is twice as wide. In the case of
+<code>VEC_WIDEN_MINUS_HI_EXPR</code> the high <code>N/2</code> elements of the second
+vector are subtracted from the high <code>N/2</code> of the first to produce the
+vector of <code>N/2</code> products. In the case of
+<code>VEC_WIDEN_MINUS_LO_EXPR</code> the low <code>N/2</code> elements of the second
+vector are subtracted from the low <code>N/2</code> of the first to produce the
+vector of <code>N/2</code> products.
+</p>
+</dd>
+<dt><code>VEC_UNPACK_HI_EXPR</code></dt>
+<dt><code>VEC_UNPACK_LO_EXPR</code></dt>
+<dd><p>These nodes represent unpacking of the high and low parts of the input vector,
+respectively. The single operand is a vector that contains <code>N</code> elements
+of the same integral or floating point type. The result is a vector
+that contains half as many elements, of an integral or floating point type
+whose size is twice as wide. In the case of <code>VEC_UNPACK_HI_EXPR</code> the
+high <code>N/2</code> elements of the vector are extracted and widened (promoted).
+In the case of <code>VEC_UNPACK_LO_EXPR</code> the low <code>N/2</code> elements of the
+vector are extracted and widened (promoted).
+</p>
+</dd>
+<dt><code>VEC_UNPACK_FLOAT_HI_EXPR</code></dt>
+<dt><code>VEC_UNPACK_FLOAT_LO_EXPR</code></dt>
+<dd><p>These nodes represent unpacking of the high and low parts of the input vector,
+where the values are converted from fixed point to floating point. The
+single operand is a vector that contains <code>N</code> elements of the same
+integral type. The result is a vector that contains half as many elements
+of a floating point type whose size is twice as wide. In the case of
+<code>VEC_UNPACK_FLOAT_HI_EXPR</code> the high <code>N/2</code> elements of the vector are
+extracted, converted and widened. In the case of <code>VEC_UNPACK_FLOAT_LO_EXPR</code>
+the low <code>N/2</code> elements of the vector are extracted, converted and widened.
+</p>
+</dd>
+<dt><code>VEC_UNPACK_FIX_TRUNC_HI_EXPR</code></dt>
+<dt><code>VEC_UNPACK_FIX_TRUNC_LO_EXPR</code></dt>
+<dd><p>These nodes represent unpacking of the high and low parts of the input vector,
+where the values are truncated from floating point to fixed point. The
+single operand is a vector that contains <code>N</code> elements of the same
+floating point type. The result is a vector that contains half as many
+elements of an integral type whose size is twice as wide. In the case of
+<code>VEC_UNPACK_FIX_TRUNC_HI_EXPR</code> the high <code>N/2</code> elements of the
+vector are extracted and converted with truncation. In the case of
+<code>VEC_UNPACK_FIX_TRUNC_LO_EXPR</code> the low <code>N/2</code> elements of the
+vector are extracted and converted with truncation.
+</p>
+</dd>
+<dt><code>VEC_PACK_TRUNC_EXPR</code></dt>
+<dd><p>This node represents packing of truncated elements of the two input vectors
+into the output vector. Input operands are vectors that contain the same
+number of elements of the same integral or floating point type. The result
+is a vector that contains twice as many elements of an integral or floating
+point type whose size is half as wide. The elements of the two vectors are
+demoted and merged (concatenated) to form the output vector.
+</p>
+</dd>
+<dt><code>VEC_PACK_SAT_EXPR</code></dt>
+<dd><p>This node represents packing of elements of the two input vectors into the
+output vector using saturation. Input operands are vectors that contain
+the same number of elements of the same integral type. The result is a
+vector that contains twice as many elements of an integral type whose size
+is half as wide. The elements of the two vectors are demoted and merged
+(concatenated) to form the output vector.
+</p>
+</dd>
+<dt><code>VEC_PACK_FIX_TRUNC_EXPR</code></dt>
+<dd><p>This node represents packing of elements of the two input vectors into the
+output vector, where the values are converted from floating point
+to fixed point. Input operands are vectors that contain the same number
+of elements of a floating point type. The result is a vector that contains
+twice as many elements of an integral type whose size is half as wide. The
+elements of the two vectors are merged (concatenated) to form the output
+vector.
+</p>
+</dd>
+<dt><code>VEC_PACK_FLOAT_EXPR</code></dt>
+<dd><p>This node represents packing of elements of the two input vectors into the
+output vector, where the values are converted from fixed point to floating
+point. Input operands are vectors that contain the same number of elements
+of an integral type. The result is a vector that contains twice as many
+elements of floating point type whose size is half as wide. The elements of
+the two vectors are merged (concatenated) to form the output vector.
+</p>
+</dd>
+<dt><code>VEC_COND_EXPR</code></dt>
+<dd><p>These nodes represent <code>?:</code> expressions. The three operands must be
+vectors of the same size and number of elements. The second and third
+operands must have the same type as the entire expression. The first
+operand is of signed integral vector type. If an element of the first
+operand evaluates to a zero value, the corresponding element of the
+result is taken from the third operand. If it evaluates to a minus one
+value, it is taken from the second operand. It should never evaluate to
+any other value currently, but optimizations should not rely on that
+property. In contrast with a <code>COND_EXPR</code>, all operands are always
+evaluated.
+</p>
+</dd>
+<dt><code>SAD_EXPR</code></dt>
+<dd><p>This node represents the Sum of Absolute Differences operation. The three
+operands must be vectors of integral types. The first and second operand
+must have the same type. The size of the vector element of the third
+operand must be at lease twice of the size of the vector element of the
+first and second one. The SAD is calculated between the first and second
+operands, added to the third operand, and returned.
+</p>
+</dd>
+</dl>
+
+
+
+<hr>
+<div class="header">
+<p>
+Previous: <a href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions" accesskey="p" rel="previous">Unary and Binary Expressions</a>, Up: <a href="Expression-trees.html#Expression-trees" accesskey="u" rel="up">Expression trees</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/WHOPR.html b/share/doc/gccint/WHOPR.html
new file mode 100644
index 0000000..773de6a
--- /dev/null
+++ b/share/doc/gccint/WHOPR.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: WHOPR</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: WHOPR">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: WHOPR">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="LTO.html#LTO" rel="up" title="LTO">
+<link href="Internal-flags.html#Internal-flags" rel="next" title="Internal flags">
+<link href="IPA.html#IPA" rel="previous" title="IPA">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="WHOPR"></a>
+<div class="header">
+<p>
+Next: <a href="Internal-flags.html#Internal-flags" accesskey="n" rel="next">Internal flags</a>, Previous: <a href="IPA.html#IPA" accesskey="p" rel="previous">IPA</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Whole-program-assumptions_002c-linker-plugin-and-symbol-visibilities"></a>
+<h3 class="section">25.4 Whole program assumptions, linker plugin and symbol visibilities</h3>
+
+<p>Link-time optimization gives relatively minor benefits when used
+alone. The problem is that propagation of inter-procedural
+information does not work well across functions and variables
+that are called or referenced by other compilation units (such as
+from a dynamically linked library). We say that such functions
+and variables are <em>externally visible</em>.
+</p>
+<p>To make the situation even more difficult, many applications
+organize themselves as a set of shared libraries, and the default
+ELF visibility rules allow one to overwrite any externally
+visible symbol with a different symbol at runtime. This
+basically disables any optimizations across such functions and
+variables, because the compiler cannot be sure that the function
+body it is seeing is the same function body that will be used at
+runtime. Any function or variable not declared <code>static</code> in
+the sources degrades the quality of inter-procedural
+optimization.
+</p>
+<p>To avoid this problem the compiler must assume that it sees the
+whole program when doing link-time optimization. Strictly
+speaking, the whole program is rarely visible even at link-time.
+Standard system libraries are usually linked dynamically or not
+provided with the link-time information. In GCC, the whole
+program option (<samp>-fwhole-program</samp>) asserts that every
+function and variable defined in the current compilation
+unit is static, except for function <code>main</code> (note: at
+link time, the current unit is the union of all objects compiled
+with LTO). Since some functions and variables need to
+be referenced externally, for example by another DSO or from an
+assembler file, GCC also provides the function and variable
+attribute <code>externally_visible</code> which can be used to disable
+the effect of <samp>-fwhole-program</samp> on a specific symbol.
+</p>
+<p>The whole program mode assumptions are slightly more complex in
+C++, where inline functions in headers are put into <em>COMDAT</em>
+sections. COMDAT function and variables can be defined by
+multiple object files and their bodies are unified at link-time
+and dynamic link-time. COMDAT functions are changed to local only
+when their address is not taken and thus un-sharing them with a
+library is not harmful. COMDAT variables always remain externally
+visible, however for readonly variables it is assumed that their
+initializers cannot be overwritten by a different value.
+</p>
+<p>GCC provides the function and variable attribute
+<code>visibility</code> that can be used to specify the visibility of
+externally visible symbols (or alternatively an
+<samp>-fdefault-visibility</samp> command line option). ELF defines
+the <code>default</code>, <code>protected</code>, <code>hidden</code> and
+<code>internal</code> visibilities.
+</p>
+<p>The most commonly used is visibility is <code>hidden</code>. It
+specifies that the symbol cannot be referenced from outside of
+the current shared library. Unfortunately, this information
+cannot be used directly by the link-time optimization in the
+compiler since the whole shared library also might contain
+non-LTO objects and those are not visible to the compiler.
+</p>
+<p>GCC solves this problem using linker plugins. A <em>linker
+plugin</em> is an interface to the linker that allows an external
+program to claim the ownership of a given object file. The linker
+then performs the linking procedure by querying the plugin about
+the symbol table of the claimed objects and once the linking
+decisions are complete, the plugin is allowed to provide the
+final object file before the actual linking is made. The linker
+plugin obtains the symbol resolution information which specifies
+which symbols provided by the claimed objects are bound from the
+rest of a binary being linked.
+</p>
+<p>GCC is designed to be independent of the rest of the toolchain
+and aims to support linkers without plugin support. For this
+reason it does not use the linker plugin by default. Instead,
+the object files are examined by <code>collect2</code> before being
+passed to the linker and objects found to have LTO sections are
+passed to <code>lto1</code> first. This mode does not work for
+library archives. The decision on what object files from the
+archive are needed depends on the actual linking and thus GCC
+would have to implement the linker itself. The resolution
+information is missing too and thus GCC needs to make an educated
+guess based on <samp>-fwhole-program</samp>. Without the linker
+plugin GCC also assumes that symbols are declared <code>hidden</code>
+and not referred by non-LTO code by default.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Internal-flags.html#Internal-flags" accesskey="n" rel="next">Internal flags</a>, Previous: <a href="IPA.html#IPA" accesskey="p" rel="previous">IPA</a>, Up: <a href="LTO.html#LTO" accesskey="u" rel="up">LTO</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/Working-with-declarations.html b/share/doc/gccint/Working-with-declarations.html
new file mode 100644
index 0000000..4c7fc8e
--- /dev/null
+++ b/share/doc/gccint/Working-with-declarations.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Working with declarations</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Working with declarations">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Working with declarations">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Declarations.html#Declarations" rel="up" title="Declarations">
+<link href="Internal-structure.html#Internal-structure" rel="next" title="Internal structure">
+<link href="Declarations.html#Declarations" rel="previous" title="Declarations">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="Working-with-declarations"></a>
+<div class="header">
+<p>
+Next: <a href="Internal-structure.html#Internal-structure" accesskey="n" rel="next">Internal structure</a>, Up: <a href="Declarations.html#Declarations" accesskey="u" rel="up">Declarations</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Working-with-declarations-1"></a>
+<h4 class="subsection">11.4.1 Working with declarations</h4>
+
+<p>Some macros can be used with any kind of declaration. These include:
+</p><dl compact="compact">
+<dt><code>DECL_NAME</code>
+<a name="index-DECL_005fNAME"></a>
+</dt>
+<dd><p>This macro returns an <code>IDENTIFIER_NODE</code> giving the name of the
+entity.
+</p>
+</dd>
+<dt><code>TREE_TYPE</code>
+<a name="index-TREE_005fTYPE-2"></a>
+</dt>
+<dd><p>This macro returns the type of the entity declared.
+</p>
+</dd>
+<dt><code>EXPR_FILENAME</code>
+<a name="index-EXPR_005fFILENAME"></a>
+</dt>
+<dd><p>This macro returns the name of the file in which the entity was
+declared, as a <code>char*</code>. For an entity declared implicitly by the
+compiler (like <code>__builtin_memcpy</code>), this will be the string
+<code>&quot;&lt;internal&gt;&quot;</code>.
+</p>
+</dd>
+<dt><code>EXPR_LINENO</code>
+<a name="index-EXPR_005fLINENO"></a>
+</dt>
+<dd><p>This macro returns the line number at which the entity was declared, as
+an <code>int</code>.
+</p>
+</dd>
+<dt><code>DECL_ARTIFICIAL</code>
+<a name="index-DECL_005fARTIFICIAL"></a>
+</dt>
+<dd><p>This predicate holds if the declaration was implicitly generated by the
+compiler. For example, this predicate will hold of an implicitly
+declared member function, or of the <code>TYPE_DECL</code> implicitly
+generated for a class type. Recall that in C++ code like:
+</p><div class="smallexample">
+<pre class="smallexample">struct S {};
+</pre></div>
+<p>is roughly equivalent to C code like:
+</p><div class="smallexample">
+<pre class="smallexample">struct S {};
+typedef struct S S;
+</pre></div>
+<p>The implicitly generated <code>typedef</code> declaration is represented by a
+<code>TYPE_DECL</code> for which <code>DECL_ARTIFICIAL</code> holds.
+</p>
+</dd>
+</dl>
+
+<p>The various kinds of declarations include:
+</p><dl compact="compact">
+<dt><code>LABEL_DECL</code></dt>
+<dd><p>These nodes are used to represent labels in function bodies. For more
+information, see <a href="Functions.html#Functions">Functions</a>. These nodes only appear in block
+scopes.
+</p>
+</dd>
+<dt><code>CONST_DECL</code></dt>
+<dd><p>These nodes are used to represent enumeration constants. The value of
+the constant is given by <code>DECL_INITIAL</code> which will be an
+<code>INTEGER_CST</code> with the same type as the <code>TREE_TYPE</code> of the
+<code>CONST_DECL</code>, i.e., an <code>ENUMERAL_TYPE</code>.
+</p>
+</dd>
+<dt><code>RESULT_DECL</code></dt>
+<dd><p>These nodes represent the value returned by a function. When a value is
+assigned to a <code>RESULT_DECL</code>, that indicates that the value should
+be returned, via bitwise copy, by the function. You can use
+<code>DECL_SIZE</code> and <code>DECL_ALIGN</code> on a <code>RESULT_DECL</code>, just as
+with a <code>VAR_DECL</code>.
+</p>
+</dd>
+<dt><code>TYPE_DECL</code></dt>
+<dd><p>These nodes represent <code>typedef</code> declarations. The <code>TREE_TYPE</code>
+is the type declared to have the name given by <code>DECL_NAME</code>. In
+some cases, there is no associated name.
+</p>
+</dd>
+<dt><code>VAR_DECL</code></dt>
+<dd><p>These nodes represent variables with namespace or block scope, as well
+as static data members. The <code>DECL_SIZE</code> and <code>DECL_ALIGN</code> are
+analogous to <code>TYPE_SIZE</code> and <code>TYPE_ALIGN</code>. For a declaration,
+you should always use the <code>DECL_SIZE</code> and <code>DECL_ALIGN</code> rather
+than the <code>TYPE_SIZE</code> and <code>TYPE_ALIGN</code> given by the
+<code>TREE_TYPE</code>, since special attributes may have been applied to the
+variable to give it a particular size and alignment. You may use the
+predicates <code>DECL_THIS_STATIC</code> or <code>DECL_THIS_EXTERN</code> to test
+whether the storage class specifiers <code>static</code> or <code>extern</code> were
+used to declare a variable.
+</p>
+<p>If this variable is initialized (but does not require a constructor),
+the <code>DECL_INITIAL</code> will be an expression for the initializer. The
+initializer should be evaluated, and a bitwise copy into the variable
+performed. If the <code>DECL_INITIAL</code> is the <code>error_mark_node</code>,
+there is an initializer, but it is given by an explicit statement later
+in the code; no bitwise copy is required.
+</p>
+<p>GCC provides an extension that allows either automatic variables, or
+global variables, to be placed in particular registers. This extension
+is being used for a particular <code>VAR_DECL</code> if <code>DECL_REGISTER</code>
+holds for the <code>VAR_DECL</code>, and if <code>DECL_ASSEMBLER_NAME</code> is not
+equal to <code>DECL_NAME</code>. In that case, <code>DECL_ASSEMBLER_NAME</code> is
+the name of the register into which the variable will be placed.
+</p>
+</dd>
+<dt><code>PARM_DECL</code></dt>
+<dd><p>Used to represent a parameter to a function. Treat these nodes
+similarly to <code>VAR_DECL</code> nodes. These nodes only appear in the
+<code>DECL_ARGUMENTS</code> for a <code>FUNCTION_DECL</code>.
+</p>
+<p>The <code>DECL_ARG_TYPE</code> for a <code>PARM_DECL</code> is the type that will
+actually be used when a value is passed to this function. It may be a
+wider type than the <code>TREE_TYPE</code> of the parameter; for example, the
+ordinary type might be <code>short</code> while the <code>DECL_ARG_TYPE</code> is
+<code>int</code>.
+</p>
+</dd>
+<dt><code>DEBUG_EXPR_DECL</code></dt>
+<dd><p>Used to represent an anonymous debug-information temporary created to
+hold an expression as it is optimized away, so that its value can be
+referenced in debug bind statements.
+</p>
+</dd>
+<dt><code>FIELD_DECL</code></dt>
+<dd><p>These nodes represent non-static data members. The <code>DECL_SIZE</code> and
+<code>DECL_ALIGN</code> behave as for <code>VAR_DECL</code> nodes.
+The position of the field within the parent record is specified by a
+combination of three attributes. <code>DECL_FIELD_OFFSET</code> is the position,
+counting in bytes, of the <code>DECL_OFFSET_ALIGN</code>-bit sized word containing
+the bit of the field closest to the beginning of the structure.
+<code>DECL_FIELD_BIT_OFFSET</code> is the bit offset of the first bit of the field
+within this word; this may be nonzero even for fields that are not bit-fields,
+since <code>DECL_OFFSET_ALIGN</code> may be greater than the natural alignment
+of the field&rsquo;s type.
+</p>
+<p>If <code>DECL_C_BIT_FIELD</code> holds, this field is a bit-field. In a bit-field,
+<code>DECL_BIT_FIELD_TYPE</code> also contains the type that was originally
+specified for it, while DECL_TYPE may be a modified type with lesser precision,
+according to the size of the bit field.
+</p>
+</dd>
+<dt><code>NAMESPACE_DECL</code></dt>
+<dd><p>Namespaces provide a name hierarchy for other declarations. They
+appear in the <code>DECL_CONTEXT</code> of other <code>_DECL</code> nodes.
+</p>
+</dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Internal-structure.html#Internal-structure" accesskey="n" rel="next">Internal structure</a>, Up: <a href="Declarations.html#Declarations" accesskey="u" rel="up">Declarations</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/arm_005farch_005fv8a_005fhard_005fok.html b/share/doc/gccint/arm_005farch_005fv8a_005fhard_005fok.html
new file mode 100644
index 0000000..4cf0d6b
--- /dev/null
+++ b/share/doc/gccint/arm_005farch_005fv8a_005fhard_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_arch_v8a_hard_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_arch_v8a_hard_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_arch_v8a_hard_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005farch_005fv8a_005fhard_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005farch_005fv8a_005fhard_005fok">arm_arch_v8a_hard_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fcoproc1_005fok.html b/share/doc/gccint/arm_005fcoproc1_005fok.html
new file mode 100644
index 0000000..1caee27
--- /dev/null
+++ b/share/doc/gccint/arm_005fcoproc1_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_coproc1_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_coproc1_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_coproc1_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fcoproc1_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fcoproc1_005fok">arm_coproc1_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fcoproc2_005fok.html b/share/doc/gccint/arm_005fcoproc2_005fok.html
new file mode 100644
index 0000000..74fb13e
--- /dev/null
+++ b/share/doc/gccint/arm_005fcoproc2_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_coproc2_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_coproc2_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_coproc2_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fcoproc2_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fcoproc2_005fok">arm_coproc2_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fcoproc3_005fok.html b/share/doc/gccint/arm_005fcoproc3_005fok.html
new file mode 100644
index 0000000..0b56a59
--- /dev/null
+++ b/share/doc/gccint/arm_005fcoproc3_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_coproc3_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_coproc3_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_coproc3_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fcoproc3_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fcoproc3_005fok">arm_coproc3_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fdsp_005fok.html b/share/doc/gccint/arm_005fdsp_005fok.html
new file mode 100644
index 0000000..99d83c2
--- /dev/null
+++ b/share/doc/gccint/arm_005fdsp_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_dsp_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_dsp_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_dsp_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fdsp_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fdsp_005fok">arm_dsp_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp16_005falternative.html b/share/doc/gccint/arm_005ffp16_005falternative.html
new file mode 100644
index 0000000..9fa6821
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp16_005falternative.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp16_alternative</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp16_alternative">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp16_alternative">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Add-Options.html#arm_005ffp16_005falternative">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Add-Options.html#arm_005ffp16_005falternative">arm_fp16_alternative</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp16_005fieee.html b/share/doc/gccint/arm_005ffp16_005fieee.html
new file mode 100644
index 0000000..1d7daba
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp16_005fieee.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp16_ieee</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp16_ieee">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp16_ieee">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Add-Options.html#arm_005ffp16_005fieee">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Add-Options.html#arm_005ffp16_005fieee">arm_fp16_ieee</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp16_005fok.html b/share/doc/gccint/arm_005ffp16_005fok.html
new file mode 100644
index 0000000..f5c35fa
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp16_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp16_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp16_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp16_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005ffp16_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005ffp16_005fok">arm_fp16_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp16fml_005fneon_005fok.html b/share/doc/gccint/arm_005ffp16fml_005fneon_005fok.html
new file mode 100644
index 0000000..fddbb77
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp16fml_005fneon_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp16fml_neon_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp16fml_neon_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp16fml_neon_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005ffp16fml_005fneon_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005ffp16fml_005fneon_005fok">arm_fp16fml_neon_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp_005fdp_005fok.html b/share/doc/gccint/arm_005ffp_005fdp_005fok.html
new file mode 100644
index 0000000..e49254d
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp_005fdp_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp_dp_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp_dp_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp_dp_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005ffp_005fdp_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005ffp_005fdp_005fok">arm_fp_dp_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005ffp_005fok.html b/share/doc/gccint/arm_005ffp_005fok.html
new file mode 100644
index 0000000..76ec6bf
--- /dev/null
+++ b/share/doc/gccint/arm_005ffp_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_fp_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_fp_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_fp_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005ffp_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005ffp_005fok">arm_fp_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fhard_005fok.html b/share/doc/gccint/arm_005fhard_005fok.html
new file mode 100644
index 0000000..95bab53
--- /dev/null
+++ b/share/doc/gccint/arm_005fhard_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_hard_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_hard_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_hard_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fhard_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fhard_005fok">arm_hard_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fmve.html b/share/doc/gccint/arm_005fmve.html
new file mode 100644
index 0000000..f81d29f
--- /dev/null
+++ b/share/doc/gccint/arm_005fmve.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_mve</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_mve">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_mve">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fmve">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fmve">arm_mve</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fneon_005ffp16_005fok.html b/share/doc/gccint/arm_005fneon_005ffp16_005fok.html
new file mode 100644
index 0000000..a937858
--- /dev/null
+++ b/share/doc/gccint/arm_005fneon_005ffp16_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_neon_fp16_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_neon_fp16_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_neon_fp16_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fneon_005ffp16_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fneon_005ffp16_005fok">arm_neon_fp16_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fneon_005fok.html b/share/doc/gccint/arm_005fneon_005fok.html
new file mode 100644
index 0000000..c53b826
--- /dev/null
+++ b/share/doc/gccint/arm_005fneon_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_neon_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_neon_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_neon_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fneon_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fneon_005fok">arm_neon_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fneon_005fok_005fno_005ffloat_005fabi.html b/share/doc/gccint/arm_005fneon_005fok_005fno_005ffloat_005fabi.html
new file mode 100644
index 0000000..0cd8788
--- /dev/null
+++ b/share/doc/gccint/arm_005fneon_005fok_005fno_005ffloat_005fabi.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_neon_ok_no_float_abi</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_neon_ok_no_float_abi">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_neon_ok_no_float_abi">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fneon_005fok_005fno_005ffloat_005fabi">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fneon_005fok_005fno_005ffloat_005fabi">arm_neon_ok_no_float_abi</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fneonv2_005fok.html b/share/doc/gccint/arm_005fneonv2_005fok.html
new file mode 100644
index 0000000..7c8a718
--- /dev/null
+++ b/share/doc/gccint/arm_005fneonv2_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_neonv2_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_neonv2_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_neonv2_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fneonv2_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fneonv2_005fok">arm_neonv2_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fsat_005fok.html b/share/doc/gccint/arm_005fsat_005fok.html
new file mode 100644
index 0000000..21b6c01
--- /dev/null
+++ b/share/doc/gccint/arm_005fsat_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_sat_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_sat_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_sat_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fsat_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fsat_005fok">arm_sat_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fsimd32_005fok.html b/share/doc/gccint/arm_005fsimd32_005fok.html
new file mode 100644
index 0000000..58abdf2
--- /dev/null
+++ b/share/doc/gccint/arm_005fsimd32_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_simd32_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_simd32_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_simd32_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fsimd32_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fsimd32_005fok">arm_simd32_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fsoftfp_005fok.html b/share/doc/gccint/arm_005fsoftfp_005fok.html
new file mode 100644
index 0000000..c3fd1fd
--- /dev/null
+++ b/share/doc/gccint/arm_005fsoftfp_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_softfp_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_softfp_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_softfp_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fsoftfp_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fsoftfp_005fok">arm_softfp_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fv8_005f1_005flob_005fok.html b/share/doc/gccint/arm_005fv8_005f1_005flob_005fok.html
new file mode 100644
index 0000000..44949ce
--- /dev/null
+++ b/share/doc/gccint/arm_005fv8_005f1_005flob_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_v8_1_lob_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_v8_1_lob_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_v8_1_lob_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fv8_005f1_005flob_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f1_005flob_005fok">arm_v8_1_lob_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fv8_005f1a_005fneon_005fok.html b/share/doc/gccint/arm_005fv8_005f1a_005fneon_005fok.html
new file mode 100644
index 0000000..c50495d
--- /dev/null
+++ b/share/doc/gccint/arm_005fv8_005f1a_005fneon_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_v8_1a_neon_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_v8_1a_neon_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_v8_1a_neon_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fv8_005f1a_005fneon_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f1a_005fneon_005fok">arm_v8_1a_neon_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fv8_005f2a_005fdotprod_005fneon_005fok.html b/share/doc/gccint/arm_005fv8_005f2a_005fdotprod_005fneon_005fok.html
new file mode 100644
index 0000000..a91811d
--- /dev/null
+++ b/share/doc/gccint/arm_005fv8_005f2a_005fdotprod_005fneon_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_v8_2a_dotprod_neon_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_dotprod_neon_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_dotprod_neon_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005fdotprod_005fneon_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005fdotprod_005fneon_005fok">arm_v8_2a_dotprod_neon_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html b/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html
new file mode 100644
index 0000000..2afc364
--- /dev/null
+++ b/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_neon_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_neon_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_neon_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fneon_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fneon_005fok">arm_v8_2a_fp16_neon_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fscalar_005fok.html b/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fscalar_005fok.html
new file mode 100644
index 0000000..6091e2c
--- /dev/null
+++ b/share/doc/gccint/arm_005fv8_005f2a_005ffp16_005fscalar_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_scalar_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_scalar_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_v8_2a_fp16_scalar_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fscalar_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fv8_005f2a_005ffp16_005fscalar_005fok">arm_v8_2a_fp16_scalar_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/arm_005fvfp3_005fok.html b/share/doc/gccint/arm_005fvfp3_005fok.html
new file mode 100644
index 0000000..7f3734d
--- /dev/null
+++ b/share/doc/gccint/arm_005fvfp3_005fok.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: arm_vfp3_ok</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: arm_vfp3_ok">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: arm_vfp3_ok">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#arm_005fvfp3_005fok">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#arm_005fvfp3_005fok">arm_vfp3_ok</a>.</p>
+</body>
diff --git a/share/doc/gccint/compat-Testing.html b/share/doc/gccint/compat-Testing.html
new file mode 100644
index 0000000..5fae3f9
--- /dev/null
+++ b/share/doc/gccint/compat-Testing.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: compat Testing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: compat Testing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: compat Testing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="Torture-Tests.html#Torture-Tests" rel="next" title="Torture Tests">
+<link href="profopt-Testing.html#profopt-Testing" rel="previous" title="profopt Testing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="compat-Testing"></a>
+<div class="header">
+<p>
+Next: <a href="Torture-Tests.html#Torture-Tests" accesskey="n" rel="next">Torture Tests</a>, Previous: <a href="profopt-Testing.html#profopt-Testing" accesskey="p" rel="previous">profopt Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-binary-compatibility"></a>
+<h3 class="section">7.8 Support for testing binary compatibility</h3>
+
+<p>The file <samp>compat.exp</samp> provides language-independent support for
+binary compatibility testing. It supports testing interoperability of
+two compilers that follow the same ABI, or of multiple sets of
+compiler options that should not affect binary compatibility. It is
+intended to be used for testsuites that complement ABI testsuites.
+</p>
+<p>A test supported by this framework has three parts, each in a
+separate source file: a main program and two pieces that interact
+with each other to split up the functionality being tested.
+</p>
+<dl compact="compact">
+<dt><samp><var>testname</var>_main.<var>suffix</var></samp></dt>
+<dd><p>Contains the main program, which calls a function in file
+<samp><var>testname</var>_x.<var>suffix</var></samp>.
+</p>
+</dd>
+<dt><samp><var>testname</var>_x.<var>suffix</var></samp></dt>
+<dd><p>Contains at least one call to a function in
+<samp><var>testname</var>_y.<var>suffix</var></samp>.
+</p>
+</dd>
+<dt><samp><var>testname</var>_y.<var>suffix</var></samp></dt>
+<dd><p>Shares data with, or gets arguments from,
+<samp><var>testname</var>_x.<var>suffix</var></samp>.
+</p></dd>
+</dl>
+
+<p>Within each test, the main program and one functional piece are
+compiled by the GCC under test. The other piece can be compiled by
+an alternate compiler. If no alternate compiler is specified,
+then all three source files are all compiled by the GCC under test.
+You can specify pairs of sets of compiler options. The first element
+of such a pair specifies options used with the GCC under test, and the
+second element of the pair specifies options used with the alternate
+compiler. Each test is compiled with each pair of options.
+</p>
+<p><samp>compat.exp</samp> defines default pairs of compiler options.
+These can be overridden by defining the environment variable
+<code>COMPAT_OPTIONS</code> as:
+</p>
+<div class="smallexample">
+<pre class="smallexample">COMPAT_OPTIONS=&quot;[list [list {<var>tst1</var>} {<var>alt1</var>}]
+ &hellip;[list {<var>tstn</var>} {<var>altn</var>}]]&quot;
+</pre></div>
+
+<p>where <var>tsti</var> and <var>alti</var> are lists of options, with <var>tsti</var>
+used by the compiler under test and <var>alti</var> used by the alternate
+compiler. For example, with
+<code>[list [list {-g -O0} {-O3}] [list {-fpic} {-fPIC -O2}]]</code>,
+the test is first built with <samp>-g -O0</samp> by the compiler under
+test and with <samp>-O3</samp> by the alternate compiler. The test is
+built a second time using <samp>-fpic</samp> by the compiler under test
+and <samp>-fPIC -O2</samp> by the alternate compiler.
+</p>
+<p>An alternate compiler is specified by defining an environment
+variable to be the full pathname of an installed compiler; for C
+define <code>ALT_CC_UNDER_TEST</code>, and for C++ define
+<code>ALT_CXX_UNDER_TEST</code>. These will be written to the
+<samp>site.exp</samp> file used by DejaGnu. The default is to build each
+test with the compiler under test using the first of each pair of
+compiler options from <code>COMPAT_OPTIONS</code>. When
+<code>ALT_CC_UNDER_TEST</code> or
+<code>ALT_CXX_UNDER_TEST</code> is <code>same</code>, each test is built using
+the compiler under test but with combinations of the options from
+<code>COMPAT_OPTIONS</code>.
+</p>
+<p>To run only the C++ compatibility suite using the compiler under test
+and another version of GCC using specific compiler options, do the
+following from <samp><var>objdir</var>/gcc</samp>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">rm site.exp
+make -k \
+ ALT_CXX_UNDER_TEST=${alt_prefix}/bin/g++ \
+ COMPAT_OPTIONS=&quot;<var>lists as shown above</var>&quot; \
+ check-c++ \
+ RUNTESTFLAGS=&quot;compat.exp&quot;
+</pre></div>
+
+<p>A test that fails when the source files are compiled with different
+compilers, but passes when the files are compiled with the same
+compiler, demonstrates incompatibility of the generated code or
+runtime support. A test that fails for the alternate compiler but
+passes for the compiler under test probably tests for a bug that was
+fixed in the compiler under test but is present in the alternate
+compiler.
+</p>
+<p>The binary compatibility tests support a small number of test framework
+commands that appear within comments in a test file.
+</p>
+<dl compact="compact">
+<dt><code>dg-require-*</code></dt>
+<dd><p>These commands can be used in <samp><var>testname</var>_main.<var>suffix</var></samp>
+to skip the test if specific support is not available on the target.
+</p>
+</dd>
+<dt><code>dg-options</code></dt>
+<dd><p>The specified options are used for compiling this particular source
+file, appended to the options from <code>COMPAT_OPTIONS</code>. When this
+command appears in <samp><var>testname</var>_main.<var>suffix</var></samp> the options
+are also used to link the test program.
+</p>
+</dd>
+<dt><code>dg-xfail-if</code></dt>
+<dd><p>This command can be used in a secondary source file to specify that
+compilation is expected to fail for particular options on particular
+targets.
+</p></dd>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Torture-Tests.html#Torture-Tests" accesskey="n" rel="next">Torture Tests</a>, Previous: <a href="profopt-Testing.html#profopt-Testing" accesskey="p" rel="previous">profopt Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/default_005fpacked.html b/share/doc/gccint/default_005fpacked.html
new file mode 100644
index 0000000..3a6184d
--- /dev/null
+++ b/share/doc/gccint/default_005fpacked.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: default_packed</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: default_packed">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: default_packed">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#default_005fpacked">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#default_005fpacked">default_packed</a>.</p>
+</body>
diff --git a/share/doc/gccint/define_005fenum.html b/share/doc/gccint/define_005fenum.html
new file mode 100644
index 0000000..f53c40f
--- /dev/null
+++ b/share/doc/gccint/define_005fenum.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: define_enum</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: define_enum">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: define_enum">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Constant-Definitions.html#define_005fenum">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Constant-Definitions.html#define_005fenum">define_enum</a>.</p>
+</body>
diff --git a/share/doc/gccint/define_005fenum_005fattr.html b/share/doc/gccint/define_005fenum_005fattr.html
new file mode 100644
index 0000000..4519f56
--- /dev/null
+++ b/share/doc/gccint/define_005fenum_005fattr.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: define_enum_attr</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: define_enum_attr">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: define_enum_attr">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Defining-Attributes.html#define_005fenum_005fattr">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Defining-Attributes.html#define_005fenum_005fattr">define_enum_attr</a>.</p>
+</body>
diff --git a/share/doc/gccint/define_005fpeephole.html b/share/doc/gccint/define_005fpeephole.html
new file mode 100644
index 0000000..9ba9b8b
--- /dev/null
+++ b/share/doc/gccint/define_005fpeephole.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: define_peephole</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: define_peephole">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: define_peephole">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Peephole-Definitions.html#Peephole-Definitions" rel="up" title="Peephole Definitions">
+<link href="define_005fpeephole2.html#define_005fpeephole2" rel="next" title="define_peephole2">
+<link href="Peephole-Definitions.html#Peephole-Definitions" rel="previous" title="Peephole Definitions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="define_005fpeephole"></a>
+<div class="header">
+<p>
+Next: <a href="define_005fpeephole2.html#define_005fpeephole2" accesskey="n" rel="next">define_peephole2</a>, Up: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="u" rel="up">Peephole Definitions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-to-Text-Peephole-Optimizers"></a>
+<h4 class="subsection">17.18.1 RTL to Text Peephole Optimizers</h4>
+<a name="index-define_005fpeephole"></a>
+
+<p>A definition looks like this:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole
+ [<var>insn-pattern-1</var>
+ <var>insn-pattern-2</var>
+ &hellip;]
+ &quot;<var>condition</var>&quot;
+ &quot;<var>template</var>&quot;
+ &quot;<var>optional-insn-attributes</var>&quot;)
+</pre></div>
+
+<p>The last string operand may be omitted if you are not using any
+machine-specific information in this machine description. If present,
+it must obey the same rules as in a <code>define_insn</code>.
+</p>
+<p>In this skeleton, <var>insn-pattern-1</var> and so on are patterns to match
+consecutive insns. The optimization applies to a sequence of insns when
+<var>insn-pattern-1</var> matches the first one, <var>insn-pattern-2</var> matches
+the next, and so on.
+</p>
+<p>Each of the insns matched by a peephole must also match a
+<code>define_insn</code>. Peepholes are checked only at the last stage just
+before code generation, and only optionally. Therefore, any insn which
+would match a peephole but no <code>define_insn</code> will cause a crash in code
+generation in an unoptimized compilation, or at various optimization
+stages.
+</p>
+<p>The operands of the insns are matched with <code>match_operands</code>,
+<code>match_operator</code>, and <code>match_dup</code>, as usual. What is not
+usual is that the operand numbers apply to all the insn patterns in the
+definition. So, you can check for identical operands in two insns by
+using <code>match_operand</code> in one insn and <code>match_dup</code> in the
+other.
+</p>
+<p>The operand constraints used in <code>match_operand</code> patterns do not have
+any direct effect on the applicability of the peephole, but they will
+be validated afterward, so make sure your constraints are general enough
+to apply whenever the peephole matches. If the peephole matches
+but the constraints are not satisfied, the compiler will crash.
+</p>
+<p>It is safe to omit constraints in all the operands of the peephole; or
+you can write constraints which serve as a double-check on the criteria
+previously tested.
+</p>
+<p>Once a sequence of insns matches the patterns, the <var>condition</var> is
+checked. This is a C expression which makes the final decision whether to
+perform the optimization (we do so if the expression is nonzero). If
+<var>condition</var> is omitted (in other words, the string is empty) then the
+optimization is applied to every sequence of insns that matches the
+patterns.
+</p>
+<p>The defined peephole optimizations are applied after register allocation
+is complete. Therefore, the peephole definition can check which
+operands have ended up in which kinds of registers, just by looking at
+the operands.
+</p>
+<a name="index-prev_005factive_005finsn"></a>
+<p>The way to refer to the operands in <var>condition</var> is to write
+<code>operands[<var>i</var>]</code> for operand number <var>i</var> (as matched by
+<code>(match_operand <var>i</var> &hellip;)</code>). Use the variable <code>insn</code>
+to refer to the last of the insns being matched; use
+<code>prev_active_insn</code> to find the preceding insns.
+</p>
+<a name="index-dead_005for_005fset_005fp"></a>
+<p>When optimizing computations with intermediate results, you can use
+<var>condition</var> to match only when the intermediate results are not used
+elsewhere. Use the C expression <code>dead_or_set_p (<var>insn</var>,
+<var>op</var>)</code>, where <var>insn</var> is the insn in which you expect the value
+to be used for the last time (from the value of <code>insn</code>, together
+with use of <code>prev_nonnote_insn</code>), and <var>op</var> is the intermediate
+value (from <code>operands[<var>i</var>]</code>).
+</p>
+<p>Applying the optimization means replacing the sequence of insns with one
+new insn. The <var>template</var> controls ultimate output of assembler code
+for this combined insn. It works exactly like the template of a
+<code>define_insn</code>. Operand numbers in this template are the same ones
+used in matching the original sequence of insns.
+</p>
+<p>The result of a defined peephole optimizer does not need to match any of
+the insn patterns in the machine description; it does not even have an
+opportunity to match them. The peephole optimizer definition itself serves
+as the insn pattern to control how the insn is output.
+</p>
+<p>Defined peephole optimizers are run as assembler code is being output,
+so the insns they produce are never combined or rearranged in any way.
+</p>
+<p>Here is an example, taken from the 68000 machine description:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole
+ [(set (reg:SI 15) (plus:SI (reg:SI 15) (const_int 4)))
+ (set (match_operand:DF 0 &quot;register_operand&quot; &quot;=f&quot;)
+ (match_operand:DF 1 &quot;register_operand&quot; &quot;ad&quot;))]
+ &quot;FP_REG_P (operands[0]) &amp;&amp; ! FP_REG_P (operands[1])&quot;
+{
+ rtx xoperands[2];
+ xoperands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1);
+#ifdef MOTOROLA
+ output_asm_insn (&quot;move.l %1,(sp)&quot;, xoperands);
+ output_asm_insn (&quot;move.l %1,-(sp)&quot;, operands);
+ return &quot;fmove.d (sp)+,%0&quot;;
+#else
+ output_asm_insn (&quot;movel %1,sp@&quot;, xoperands);
+ output_asm_insn (&quot;movel %1,sp@-&quot;, operands);
+ return &quot;fmoved sp@+,%0&quot;;
+#endif
+})
+</pre></div>
+
+<p>The effect of this optimization is to change
+</p>
+<div class="smallexample">
+<pre class="smallexample">jbsr _foobar
+addql #4,sp
+movel d1,sp@-
+movel d0,sp@-
+fmoved sp@+,fp0
+</pre></div>
+
+<p>into
+</p>
+<div class="smallexample">
+<pre class="smallexample">jbsr _foobar
+movel d1,sp@
+movel d0,sp@-
+fmoved sp@+,fp0
+</pre></div>
+
+
+<p><var>insn-pattern-1</var> and so on look <em>almost</em> like the second
+operand of <code>define_insn</code>. There is one important difference: the
+second operand of <code>define_insn</code> consists of one or more RTX&rsquo;s
+enclosed in square brackets. Usually, there is only one: then the same
+action can be written as an element of a <code>define_peephole</code>. But
+when there are multiple actions in a <code>define_insn</code>, they are
+implicitly enclosed in a <code>parallel</code>. Then you must explicitly
+write the <code>parallel</code>, and the square brackets within it, in the
+<code>define_peephole</code>. Thus, if an insn pattern looks like this,
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_insn &quot;divmodsi4&quot;
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=d&quot;)
+ (div:SI (match_operand:SI 1 &quot;general_operand&quot; &quot;0&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;dmsK&quot;)))
+ (set (match_operand:SI 3 &quot;general_operand&quot; &quot;=d&quot;)
+ (mod:SI (match_dup 1) (match_dup 2)))]
+ &quot;TARGET_68020&quot;
+ &quot;divsl%.l %2,%3:%0&quot;)
+</pre></div>
+
+<p>then the way to mention this insn in a peephole is as follows:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole
+ [&hellip;
+ (parallel
+ [(set (match_operand:SI 0 &quot;general_operand&quot; &quot;=d&quot;)
+ (div:SI (match_operand:SI 1 &quot;general_operand&quot; &quot;0&quot;)
+ (match_operand:SI 2 &quot;general_operand&quot; &quot;dmsK&quot;)))
+ (set (match_operand:SI 3 &quot;general_operand&quot; &quot;=d&quot;)
+ (mod:SI (match_dup 1) (match_dup 2)))])
+ &hellip;]
+ &hellip;)
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="define_005fpeephole2.html#define_005fpeephole2" accesskey="n" rel="next">define_peephole2</a>, Up: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="u" rel="up">Peephole Definitions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/define_005fpeephole2.html b/share/doc/gccint/define_005fpeephole2.html
new file mode 100644
index 0000000..1b1c8e3
--- /dev/null
+++ b/share/doc/gccint/define_005fpeephole2.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: define_peephole2</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: define_peephole2">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: define_peephole2">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Peephole-Definitions.html#Peephole-Definitions" rel="up" title="Peephole Definitions">
+<link href="Insn-Attributes.html#Insn-Attributes" rel="next" title="Insn Attributes">
+<link href="define_005fpeephole.html#define_005fpeephole" rel="previous" title="define_peephole">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="define_005fpeephole2"></a>
+<div class="header">
+<p>
+Previous: <a href="define_005fpeephole.html#define_005fpeephole" accesskey="p" rel="previous">define_peephole</a>, Up: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="u" rel="up">Peephole Definitions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="RTL-to-RTL-Peephole-Optimizers"></a>
+<h4 class="subsection">17.18.2 RTL to RTL Peephole Optimizers</h4>
+<a name="index-define_005fpeephole2"></a>
+
+<p>The <code>define_peephole2</code> definition tells the compiler how to
+substitute one sequence of instructions for another sequence,
+what additional scratch registers may be needed and what their
+lifetimes must be.
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole2
+ [<var>insn-pattern-1</var>
+ <var>insn-pattern-2</var>
+ &hellip;]
+ &quot;<var>condition</var>&quot;
+ [<var>new-insn-pattern-1</var>
+ <var>new-insn-pattern-2</var>
+ &hellip;]
+ &quot;<var>preparation-statements</var>&quot;)
+</pre></div>
+
+<p>The definition is almost identical to <code>define_split</code>
+(see <a href="Insn-Splitting.html#Insn-Splitting">Insn Splitting</a>) except that the pattern to match is not a
+single instruction, but a sequence of instructions.
+</p>
+<p>It is possible to request additional scratch registers for use in the
+output template. If appropriate registers are not free, the pattern
+will simply not match.
+</p>
+<a name="index-match_005fscratch-1"></a>
+<a name="index-match_005fdup-1"></a>
+<p>Scratch registers are requested with a <code>match_scratch</code> pattern at
+the top level of the input pattern. The allocated register (initially) will
+be dead at the point requested within the original sequence. If the scratch
+is used at more than a single point, a <code>match_dup</code> pattern at the
+top level of the input pattern marks the last position in the input sequence
+at which the register must be available.
+</p>
+<p>Here is an example from the IA-32 machine description:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole2
+ [(match_scratch:SI 2 &quot;r&quot;)
+ (parallel [(set (match_operand:SI 0 &quot;register_operand&quot; &quot;&quot;)
+ (match_operator:SI 3 &quot;arith_or_logical_operator&quot;
+ [(match_dup 0)
+ (match_operand:SI 1 &quot;memory_operand&quot; &quot;&quot;)]))
+ (clobber (reg:CC 17))])]
+ &quot;! optimize_size &amp;&amp; ! TARGET_READ_MODIFY&quot;
+ [(set (match_dup 2) (match_dup 1))
+ (parallel [(set (match_dup 0)
+ (match_op_dup 3 [(match_dup 0) (match_dup 2)]))
+ (clobber (reg:CC 17))])]
+ &quot;&quot;)
+</pre></div>
+
+<p>This pattern tries to split a load from its use in the hopes that we&rsquo;ll be
+able to schedule around the memory load latency. It allocates a single
+<code>SImode</code> register of class <code>GENERAL_REGS</code> (<code>&quot;r&quot;</code>) that needs
+to be live only at the point just before the arithmetic.
+</p>
+<p>A real example requiring extended scratch lifetimes is harder to come by,
+so here&rsquo;s a silly made-up example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">(define_peephole2
+ [(match_scratch:SI 4 &quot;r&quot;)
+ (set (match_operand:SI 0 &quot;&quot; &quot;&quot;) (match_operand:SI 1 &quot;&quot; &quot;&quot;))
+ (set (match_operand:SI 2 &quot;&quot; &quot;&quot;) (match_dup 1))
+ (match_dup 4)
+ (set (match_operand:SI 3 &quot;&quot; &quot;&quot;) (match_dup 1))]
+ &quot;/* <span class="roman">determine 1 does not overlap 0 and 2</span> */&quot;
+ [(set (match_dup 4) (match_dup 1))
+ (set (match_dup 0) (match_dup 4))
+ (set (match_dup 2) (match_dup 4))
+ (set (match_dup 3) (match_dup 4))]
+ &quot;&quot;)
+</pre></div>
+
+<p>If we had not added the <code>(match_dup 4)</code> in the middle of the input
+sequence, it might have been the case that the register we chose at the
+beginning of the sequence is killed by the first or second <code>set</code>.
+</p>
+<p>There are two special macros defined for use in the preparation statements:
+<code>DONE</code> and <code>FAIL</code>. Use them with a following semicolon,
+as a statement.
+</p>
+<dl compact="compact">
+<dd>
+<a name="index-DONE-2"></a>
+</dd>
+<dt><code>DONE</code></dt>
+<dd><p>Use the <code>DONE</code> macro to end RTL generation for the peephole. The
+only RTL insns generated as replacement for the matched input insn will
+be those already emitted by explicit calls to <code>emit_insn</code> within
+the preparation statements; the replacement pattern is not used.
+</p>
+<a name="index-FAIL-2"></a>
+</dd>
+<dt><code>FAIL</code></dt>
+<dd><p>Make the <code>define_peephole2</code> fail on this occasion. When a <code>define_peephole2</code>
+fails, it means that the replacement was not truly available for the
+particular inputs it was given. In that case, GCC may still apply a
+later <code>define_peephole2</code> that also matches the given insn pattern.
+(Note that this is different from <code>define_split</code>, where <code>FAIL</code>
+prevents the input insn from being split at all.)
+</p></dd>
+</dl>
+
+<p>If the preparation falls through (invokes neither <code>DONE</code> nor
+<code>FAIL</code>), then the <code>define_peephole2</code> uses the replacement
+template.
+</p>
+<hr>
+<div class="header">
+<p>
+Previous: <a href="define_005fpeephole.html#define_005fpeephole" accesskey="p" rel="previous">define_peephole</a>, Up: <a href="Peephole-Definitions.html#Peephole-Definitions" accesskey="u" rel="up">Peephole Definitions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/epilogue-instruction-pattern.html b/share/doc/gccint/epilogue-instruction-pattern.html
new file mode 100644
index 0000000..c27ac6a
--- /dev/null
+++ b/share/doc/gccint/epilogue-instruction-pattern.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: epilogue instruction pattern</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: epilogue instruction pattern">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: epilogue instruction pattern">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Standard-Names.html#epilogue-instruction-pattern">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Standard-Names.html#epilogue-instruction-pattern">epilogue instruction pattern</a>.</p>
+</body>
diff --git a/share/doc/gccint/gcc-Directory.html b/share/doc/gccint/gcc-Directory.html
new file mode 100644
index 0000000..9df3e3a
--- /dev/null
+++ b/share/doc/gccint/gcc-Directory.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: gcc Directory</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: gcc Directory">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: gcc Directory">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Source-Tree.html#Source-Tree" rel="up" title="Source Tree">
+<link href="Subdirectories.html#Subdirectories" rel="next" title="Subdirectories">
+<link href="Top-Level.html#Top-Level" rel="previous" title="Top Level">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="gcc-Directory"></a>
+<div class="header">
+<p>
+Previous: <a href="Top-Level.html#Top-Level" accesskey="p" rel="previous">Top Level</a>, Up: <a href="Source-Tree.html#Source-Tree" accesskey="u" rel="up">Source Tree</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="The-gcc-Subdirectory"></a>
+<h3 class="section">6.3 The <samp>gcc</samp> Subdirectory</h3>
+
+<p>The <samp>gcc</samp> directory contains many files that are part of the C
+sources of GCC, other files used as part of the configuration and
+build process, and subdirectories including documentation and a
+testsuite. The files that are sources of GCC are documented in a
+separate chapter. See <a href="Passes.html#Passes">Passes and Files of the Compiler</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Subdirectories.html#Subdirectories" accesskey="1">Subdirectories</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Subdirectories of <samp>gcc</samp>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Configuration.html#Configuration" accesskey="2">Configuration</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The configuration process, and the files it uses.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Build.html#Build" accesskey="3">Build</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The build system in the <samp>gcc</samp> directory.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Makefile.html#Makefile" accesskey="4">Makefile</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Targets in <samp>gcc/Makefile</samp>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Library-Files.html#Library-Files" accesskey="5">Library Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Library source files and headers under <samp>gcc/</samp>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Headers.html#Headers" accesskey="6">Headers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Headers installed by GCC.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Documentation.html#Documentation" accesskey="7">Documentation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Building documentation in GCC.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Front-End.html#Front-End" accesskey="8">Front End</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Anatomy of a language front end.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Back-End.html#Back-End" accesskey="9">Back End</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Anatomy of a target back end.
+</td></tr>
+</table>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/gcov-Testing.html b/share/doc/gccint/gcov-Testing.html
new file mode 100644
index 0000000..594f1fc
--- /dev/null
+++ b/share/doc/gccint/gcov-Testing.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: gcov Testing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: gcov Testing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: gcov Testing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="profopt-Testing.html#profopt-Testing" rel="next" title="profopt Testing">
+<link href="LTO-Testing.html#LTO-Testing" rel="previous" title="LTO Testing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="gcov-Testing"></a>
+<div class="header">
+<p>
+Next: <a href="profopt-Testing.html#profopt-Testing" accesskey="n" rel="next">profopt Testing</a>, Previous: <a href="LTO-Testing.html#LTO-Testing" accesskey="p" rel="previous">LTO Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-gcov"></a>
+<h3 class="section">7.6 Support for testing <code>gcov</code></h3>
+
+<p>Language-independent support for testing <code>gcov</code>, and for checking
+that branch profiling produces expected values, is provided by the
+expect file <samp>lib/gcov.exp</samp>. <code>gcov</code> tests also rely on procedures
+in <samp>lib/gcc-dg.exp</samp> to compile and run the test program. A typical
+<code>gcov</code> test contains the following DejaGnu commands within comments:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ dg-options &quot;--coverage&quot; }
+{ dg-do run { target native } }
+{ dg-final { run-gcov sourcefile } }
+</pre></div>
+
+<p>Checks of <code>gcov</code> output can include line counts, branch percentages,
+and call return percentages. All of these checks are requested via
+commands that appear in comments in the test&rsquo;s source file.
+Commands to check line counts are processed by default.
+Commands to check branch percentages and call return percentages are
+processed if the <code>run-gcov</code> command has arguments <code>branches</code>
+or <code>calls</code>, respectively. For example, the following specifies
+checking both, as well as passing <samp>-b</samp> to <code>gcov</code>:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ dg-final { run-gcov branches calls { -b sourcefile } } }
+</pre></div>
+
+<p>A line count command appears within a comment on the source line
+that is expected to get the specified count and has the form
+<code>count(<var>cnt</var>)</code>. A test should only check line counts for
+lines that will get the same count for any architecture.
+</p>
+<p>Commands to check branch percentages (<code>branch</code>) and call
+return percentages (<code>returns</code>) are very similar to each other.
+A beginning command appears on or before the first of a range of
+lines that will report the percentage, and the ending command
+follows that range of lines. The beginning command can include a
+list of percentages, all of which are expected to be found within
+the range. A range is terminated by the next command of the same
+kind. A command <code>branch(end)</code> or <code>returns(end)</code> marks
+the end of a range without starting a new one. For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">if (i &gt; 10 &amp;&amp; j &gt; i &amp;&amp; j &lt; 20) /* <span class="roman">branch(27 50 75)</span> */
+ /* <span class="roman">branch(end)</span> */
+ foo (i, j);
+</pre></div>
+
+<p>For a call return percentage, the value specified is the
+percentage of calls reported to return. For a branch percentage,
+the value is either the expected percentage or 100 minus that
+value, since the direction of a branch can differ depending on the
+target or the optimization level.
+</p>
+<p>Not all branches and calls need to be checked. A test should not
+check for branches that might be optimized away or replaced with
+predicated instructions. Don&rsquo;t check for calls inserted by the
+compiler or ones that might be inlined or optimized away.
+</p>
+<p>A single test can check for combinations of line counts, branch
+percentages, and call return percentages. The command to check a
+line count must appear on the line that will report that count, but
+commands to check branch percentages and call return percentages can
+bracket the lines that report them.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="profopt-Testing.html#profopt-Testing" accesskey="n" rel="next">profopt Testing</a>, Previous: <a href="LTO-Testing.html#LTO-Testing" accesskey="p" rel="previous">LTO Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/index.html b/share/doc/gccint/index.html
new file mode 100644
index 0000000..ab4d2e4
--- /dev/null
+++ b/share/doc/gccint/index.html
@@ -0,0 +1,937 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Top</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Top">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Top">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Contributing.html#Contributing" rel="next" title="Contributing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<h1 class="settitle" align="center">GNU Compiler Collection (GCC) Internals</h1>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<p>This file documents the internals of the GNU compilers.
+</p><br>
+<p>Copyright &copy; 1988-2023 Free Software Foundation, Inc.
+</p>
+<p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being &ldquo;Funding Free Software&rdquo;, the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+&ldquo;GNU Free Documentation License&rdquo;.
+</p>
+<p>(a) The FSF&rsquo;s Front-Cover Text is:
+</p>
+<p>A GNU Manual
+</p>
+<p>(b) The FSF&rsquo;s Back-Cover Text is:
+</p>
+<p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development.
+</p>
+<br>
+
+<a name="SEC_Overview"></a>
+<h2 class="shortcontents-heading">Short Table of Contents</h2>
+
+<div class="shortcontents">
+<ul class="no-bullet">
+<li><a name="stoc-Contributing-to-GCC-Development" href="#toc-Contributing-to-GCC-Development">1 Contributing to GCC Development</a></li>
+<li><a name="stoc-GCC-and-Portability" href="#toc-GCC-and-Portability">2 GCC and Portability</a></li>
+<li><a name="stoc-Interfacing-to-GCC-Output" href="#toc-Interfacing-to-GCC-Output">3 Interfacing to GCC Output</a></li>
+<li><a name="stoc-The-GCC-low_002dlevel-runtime-library" href="#toc-The-GCC-low_002dlevel-runtime-library">4 The GCC low-level runtime library</a></li>
+<li><a name="stoc-Language-Front-Ends-in-GCC" href="#toc-Language-Front-Ends-in-GCC">5 Language Front Ends in GCC</a></li>
+<li><a name="stoc-Source-Tree-Structure-and-Build-System" href="#toc-Source-Tree-Structure-and-Build-System">6 Source Tree Structure and Build System</a></li>
+<li><a name="stoc-Testsuites-1" href="#toc-Testsuites-1">7 Testsuites</a></li>
+<li><a name="stoc-Option-specification-files" href="#toc-Option-specification-files">8 Option specification files</a></li>
+<li><a name="stoc-Passes-and-Files-of-the-Compiler" href="#toc-Passes-and-Files-of-the-Compiler">9 Passes and Files of the Compiler</a></li>
+<li><a name="stoc-Sizes-and-offsets-as-runtime-invariants" href="#toc-Sizes-and-offsets-as-runtime-invariants">10 Sizes and offsets as runtime invariants</a></li>
+<li><a name="stoc-GENERIC-1" href="#toc-GENERIC-1">11 GENERIC</a></li>
+<li><a name="stoc-GIMPLE-1" href="#toc-GIMPLE-1">12 GIMPLE</a></li>
+<li><a name="stoc-Analysis-and-Optimization-of-GIMPLE-tuples" href="#toc-Analysis-and-Optimization-of-GIMPLE-tuples">13 Analysis and Optimization of GIMPLE tuples</a></li>
+<li><a name="stoc-RTL-Representation" href="#toc-RTL-Representation">14 RTL Representation</a></li>
+<li><a name="stoc-Control-Flow-Graph" href="#toc-Control-Flow-Graph">15 Control Flow Graph</a></li>
+<li><a name="stoc-Analysis-and-Representation-of-Loops" href="#toc-Analysis-and-Representation-of-Loops">16 Analysis and Representation of Loops</a></li>
+<li><a name="stoc-Machine-Descriptions" href="#toc-Machine-Descriptions">17 Machine Descriptions</a></li>
+<li><a name="stoc-Target-Description-Macros-and-Functions" href="#toc-Target-Description-Macros-and-Functions">18 Target Description Macros and Functions</a></li>
+<li><a name="stoc-Host-Configuration" href="#toc-Host-Configuration">19 Host Configuration</a></li>
+<li><a name="stoc-Makefile-Fragments" href="#toc-Makefile-Fragments">20 Makefile Fragments</a></li>
+<li><a name="stoc-collect2" href="#toc-collect2">21 <code>collect2</code></a></li>
+<li><a name="stoc-Standard-Header-File-Directories" href="#toc-Standard-Header-File-Directories">22 Standard Header File Directories</a></li>
+<li><a name="stoc-Memory-Management-and-Type-Information" href="#toc-Memory-Management-and-Type-Information">23 Memory Management and Type Information</a></li>
+<li><a name="stoc-Plugins-1" href="#toc-Plugins-1">24 Plugins</a></li>
+<li><a name="stoc-Link-Time-Optimization" href="#toc-Link-Time-Optimization">25 Link Time Optimization</a></li>
+<li><a name="stoc-Match-and-Simplify-1" href="#toc-Match-and-Simplify-1">26 Match and Simplify</a></li>
+<li><a name="stoc-Static-Analyzer-1" href="#toc-Static-Analyzer-1">27 Static Analyzer</a></li>
+<li><a name="stoc-User-Experience-Guidelines-1" href="#toc-User-Experience-Guidelines-1">28 User Experience Guidelines</a></li>
+<li><a name="stoc-Funding-Free-Software" href="#toc-Funding-Free-Software">Funding Free Software</a></li>
+<li><a name="stoc-The-GNU-Project-and-GNU_002fLinux" href="#toc-The-GNU-Project-and-GNU_002fLinux">The GNU Project and GNU/Linux</a></li>
+<li><a name="stoc-GNU-General-Public-License" href="#toc-GNU-General-Public-License">GNU General Public License</a></li>
+<li><a name="stoc-GNU-Free-Documentation-License-1" href="#toc-GNU-Free-Documentation-License-1">GNU Free Documentation License</a></li>
+<li><a name="stoc-Contributors-to-GCC" href="#toc-Contributors-to-GCC">Contributors to GCC</a></li>
+<li><a name="stoc-Option-Index-1" href="#toc-Option-Index-1">Option Index</a></li>
+<li><a name="stoc-Concept-Index-1" href="#toc-Concept-Index-1">Concept Index</a></li>
+</ul>
+</div>
+
+<a name="SEC_Contents"></a>
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="no-bullet">
+ <li><a name="toc-Contributing-to-GCC-Development" href="Contributing.html#Contributing">1 Contributing to GCC Development</a></li>
+ <li><a name="toc-GCC-and-Portability" href="Portability.html#Portability">2 GCC and Portability</a></li>
+ <li><a name="toc-Interfacing-to-GCC-Output" href="Interface.html#Interface">3 Interfacing to GCC Output</a></li>
+ <li><a name="toc-The-GCC-low_002dlevel-runtime-library" href="Libgcc.html#Libgcc">4 The GCC low-level runtime library</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Routines-for-integer-arithmetic" href="Integer-library-routines.html#Integer-library-routines">4.1 Routines for integer arithmetic</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Arithmetic-functions" href="Integer-library-routines.html#Arithmetic-functions">4.1.1 Arithmetic functions</a></li>
+ <li><a name="toc-Comparison-functions" href="Integer-library-routines.html#Comparison-functions">4.1.2 Comparison functions</a></li>
+ <li><a name="toc-Trapping-arithmetic-functions" href="Integer-library-routines.html#Trapping-arithmetic-functions">4.1.3 Trapping arithmetic functions</a></li>
+ <li><a name="toc-Bit-operations" href="Integer-library-routines.html#Bit-operations">4.1.4 Bit operations</a></li>
+ </ul></li>
+ <li><a name="toc-Routines-for-floating-point-emulation" href="Soft-float-library-routines.html#Soft-float-library-routines">4.2 Routines for floating point emulation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Arithmetic-functions-1" href="Soft-float-library-routines.html#Arithmetic-functions-1">4.2.1 Arithmetic functions</a></li>
+ <li><a name="toc-Conversion-functions" href="Soft-float-library-routines.html#Conversion-functions">4.2.2 Conversion functions</a></li>
+ <li><a name="toc-Comparison-functions-1" href="Soft-float-library-routines.html#Comparison-functions-1">4.2.3 Comparison functions</a></li>
+ <li><a name="toc-Other-floating_002dpoint-functions" href="Soft-float-library-routines.html#Other-floating_002dpoint-functions">4.2.4 Other floating-point functions</a></li>
+ </ul></li>
+ <li><a name="toc-Routines-for-decimal-floating-point-emulation" href="Decimal-float-library-routines.html#Decimal-float-library-routines">4.3 Routines for decimal floating point emulation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Arithmetic-functions-2" href="Decimal-float-library-routines.html#Arithmetic-functions-2">4.3.1 Arithmetic functions</a></li>
+ <li><a name="toc-Conversion-functions-1" href="Decimal-float-library-routines.html#Conversion-functions-1">4.3.2 Conversion functions</a></li>
+ <li><a name="toc-Comparison-functions-2" href="Decimal-float-library-routines.html#Comparison-functions-2">4.3.3 Comparison functions</a></li>
+ </ul></li>
+ <li><a name="toc-Routines-for-fixed_002dpoint-fractional-emulation" href="Fixed_002dpoint-fractional-library-routines.html#Fixed_002dpoint-fractional-library-routines">4.4 Routines for fixed-point fractional emulation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Arithmetic-functions-3" href="Fixed_002dpoint-fractional-library-routines.html#Arithmetic-functions-3">4.4.1 Arithmetic functions</a></li>
+ <li><a name="toc-Comparison-functions-3" href="Fixed_002dpoint-fractional-library-routines.html#Comparison-functions-3">4.4.2 Comparison functions</a></li>
+ <li><a name="toc-Conversion-functions-2" href="Fixed_002dpoint-fractional-library-routines.html#Conversion-functions-2">4.4.3 Conversion functions</a></li>
+ </ul></li>
+ <li><a name="toc-Language_002dindependent-routines-for-exception-handling" href="Exception-handling-routines.html#Exception-handling-routines">4.5 Language-independent routines for exception handling</a></li>
+ <li><a name="toc-Miscellaneous-runtime-library-routines" href="Miscellaneous-routines.html#Miscellaneous-routines">4.6 Miscellaneous runtime library routines</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Cache-control-functions" href="Miscellaneous-routines.html#Cache-control-functions">4.6.1 Cache control functions</a></li>
+ <li><a name="toc-Split-stack-functions-and-variables" href="Miscellaneous-routines.html#Split-stack-functions-and-variables">4.6.2 Split stack functions and variables</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Language-Front-Ends-in-GCC" href="Languages.html#Languages">5 Language Front Ends in GCC</a></li>
+ <li><a name="toc-Source-Tree-Structure-and-Build-System" href="Source-Tree.html#Source-Tree">6 Source Tree Structure and Build System</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Configure-Terms-and-History" href="Configure-Terms.html#Configure-Terms">6.1 Configure Terms and History</a></li>
+ <li><a name="toc-Top-Level-Source-Directory" href="Top-Level.html#Top-Level">6.2 Top Level Source Directory</a></li>
+ <li><a name="toc-The-gcc-Subdirectory" href="gcc-Directory.html#gcc-Directory">6.3 The <samp>gcc</samp> Subdirectory</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Subdirectories-of-gcc" href="Subdirectories.html#Subdirectories">6.3.1 Subdirectories of <samp>gcc</samp></a></li>
+ <li><a name="toc-Configuration-in-the-gcc-Directory" href="Configuration.html#Configuration">6.3.2 Configuration in the <samp>gcc</samp> Directory</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Scripts-Used-by-configure" href="Config-Fragments.html#Config-Fragments">6.3.2.1 Scripts Used by <samp>configure</samp></a></li>
+ <li><a name="toc-The-config_002ebuild_003b-config_002ehost_003b-and-config_002egcc-Files" href="System-Config.html#System-Config">6.3.2.2 The <samp>config.build</samp>; <samp>config.host</samp>; and <samp>config.gcc</samp> Files</a></li>
+ <li><a name="toc-Files-Created-by-configure" href="Configuration-Files.html#Configuration-Files">6.3.2.3 Files Created by <code>configure</code></a></li>
+ </ul></li>
+ <li><a name="toc-Build-System-in-the-gcc-Directory" href="Build.html#Build">6.3.3 Build System in the <samp>gcc</samp> Directory</a></li>
+ <li><a name="toc-Makefile-Targets" href="Makefile.html#Makefile">6.3.4 Makefile Targets</a></li>
+ <li><a name="toc-Library-Source-Files-and-Headers-under-the-gcc-Directory" href="Library-Files.html#Library-Files">6.3.5 Library Source Files and Headers under the <samp>gcc</samp> Directory</a></li>
+ <li><a name="toc-Headers-Installed-by-GCC" href="Headers.html#Headers">6.3.6 Headers Installed by GCC</a></li>
+ <li><a name="toc-Building-Documentation" href="Documentation.html#Documentation">6.3.7 Building Documentation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Texinfo-Manuals-1" href="Texinfo-Manuals.html#Texinfo-Manuals">6.3.7.1 Texinfo Manuals</a></li>
+ <li><a name="toc-Man-Page-Generation-1" href="Man-Page-Generation.html#Man-Page-Generation">6.3.7.2 Man Page Generation</a></li>
+ <li><a name="toc-Miscellaneous-Documentation" href="Miscellaneous-Docs.html#Miscellaneous-Docs">6.3.7.3 Miscellaneous Documentation</a></li>
+ </ul></li>
+ <li><a name="toc-Anatomy-of-a-Language-Front-End" href="Front-End.html#Front-End">6.3.8 Anatomy of a Language Front End</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Front-End-language-Directory" href="Front-End-Directory.html#Front-End-Directory">6.3.8.1 The Front End <samp><var>language</var></samp> Directory</a></li>
+ <li><a name="toc-The-Front-End-config_002dlang_002ein-File" href="Front-End-Config.html#Front-End-Config">6.3.8.2 The Front End <samp>config-lang.in</samp> File</a></li>
+ <li><a name="toc-The-Front-End-Make_002dlang_002ein-File" href="Front-End-Makefile.html#Front-End-Makefile">6.3.8.3 The Front End <samp>Make-lang.in</samp> File</a></li>
+ </ul></li>
+ <li><a name="toc-Anatomy-of-a-Target-Back-End" href="Back-End.html#Back-End">6.3.9 Anatomy of a Target Back End</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Testsuites-1" href="Testsuites.html#Testsuites">7 Testsuites</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Idioms-Used-in-Testsuite-Code" href="Test-Idioms.html#Test-Idioms">7.1 Idioms Used in Testsuite Code</a></li>
+ <li><a name="toc-Directives-used-within-DejaGnu-tests" href="Test-Directives.html#Test-Directives">7.2 Directives used within DejaGnu tests</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Syntax-and-Descriptions-of-test-directives" href="Directives.html#Directives">7.2.1 Syntax and Descriptions of test directives</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Specify-how-to-build-the-test" href="Directives.html#Specify-how-to-build-the-test">7.2.1.1 Specify how to build the test</a></li>
+ <li><a name="toc-Specify-additional-compiler-options" href="Directives.html#Specify-additional-compiler-options">7.2.1.2 Specify additional compiler options</a></li>
+ <li><a name="toc-Modify-the-test-timeout-value" href="Directives.html#Modify-the-test-timeout-value">7.2.1.3 Modify the test timeout value</a></li>
+ <li><a name="toc-Skip-a-test-for-some-targets" href="Directives.html#Skip-a-test-for-some-targets">7.2.1.4 Skip a test for some targets</a></li>
+ <li><a name="toc-Expect-a-test-to-fail-for-some-targets" href="Directives.html#Expect-a-test-to-fail-for-some-targets">7.2.1.5 Expect a test to fail for some targets</a></li>
+ <li><a name="toc-Expect-the-compiler-to-crash" href="Directives.html#Expect-the-compiler-to-crash">7.2.1.6 Expect the compiler to crash</a></li>
+ <li><a name="toc-Expect-the-test-executable-to-fail" href="Directives.html#Expect-the-test-executable-to-fail">7.2.1.7 Expect the test executable to fail</a></li>
+ <li><a name="toc-Verify-compiler-messages" href="Directives.html#Verify-compiler-messages">7.2.1.8 Verify compiler messages</a></li>
+ <li><a name="toc-Verify-output-of-the-test-executable" href="Directives.html#Verify-output-of-the-test-executable">7.2.1.9 Verify output of the test executable</a></li>
+ <li><a name="toc-Specify-environment-variables-for-a-test" href="Directives.html#Specify-environment-variables-for-a-test">7.2.1.10 Specify environment variables for a test</a></li>
+ <li><a name="toc-Specify-additional-files-for-a-test" href="Directives.html#Specify-additional-files-for-a-test">7.2.1.11 Specify additional files for a test</a></li>
+ <li><a name="toc-Add-checks-at-the-end-of-a-test" href="Directives.html#Add-checks-at-the-end-of-a-test">7.2.1.12 Add checks at the end of a test</a></li>
+ </ul></li>
+ <li><a name="toc-Selecting-targets-to-which-a-test-applies" href="Selectors.html#Selectors">7.2.2 Selecting targets to which a test applies</a></li>
+ <li><a name="toc-Keywords-describing-target-attributes" href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords">7.2.3 Keywords describing target attributes</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Endianness" href="Effective_002dTarget-Keywords.html#Endianness">7.2.3.1 Endianness</a></li>
+ <li><a name="toc-Data-type-sizes" href="Effective_002dTarget-Keywords.html#Data-type-sizes">7.2.3.2 Data type sizes</a></li>
+ <li><a name="toc-Fortran_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#Fortran_002dspecific-attributes">7.2.3.3 Fortran-specific attributes</a></li>
+ <li><a name="toc-Vector_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#Vector_002dspecific-attributes">7.2.3.4 Vector-specific attributes</a></li>
+ <li><a name="toc-Thread-Local-Storage-attributes" href="Effective_002dTarget-Keywords.html#Thread-Local-Storage-attributes">7.2.3.5 Thread Local Storage attributes</a></li>
+ <li><a name="toc-Decimal-floating-point-attributes" href="Effective_002dTarget-Keywords.html#Decimal-floating-point-attributes">7.2.3.6 Decimal floating point attributes</a></li>
+ <li><a name="toc-ARM_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#ARM_002dspecific-attributes">7.2.3.7 ARM-specific attributes</a></li>
+ <li><a name="toc-AArch64_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#AArch64_002dspecific-attributes">7.2.3.8 AArch64-specific attributes</a></li>
+ <li><a name="toc-MIPS_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#MIPS_002dspecific-attributes">7.2.3.9 MIPS-specific attributes</a></li>
+ <li><a name="toc-MSP430_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#MSP430_002dspecific-attributes">7.2.3.10 MSP430-specific attributes</a></li>
+ <li><a name="toc-PowerPC_002dspecific-attributes" href="Effective_002dTarget-Keywords.html#PowerPC_002dspecific-attributes">7.2.3.11 PowerPC-specific attributes</a></li>
+ <li><a name="toc-RISC_002dV-specific-attributes" href="Effective_002dTarget-Keywords.html#RISC_002dV-specific-attributes">7.2.3.12 RISC-V specific attributes</a></li>
+ <li><a name="toc-Other-hardware-attributes" href="Effective_002dTarget-Keywords.html#Other-hardware-attributes">7.2.3.13 Other hardware attributes</a></li>
+ <li><a name="toc-Environment-attributes" href="Effective_002dTarget-Keywords.html#Environment-attributes">7.2.3.14 Environment attributes</a></li>
+ <li><a name="toc-Other-attributes" href="Effective_002dTarget-Keywords.html#Other-attributes">7.2.3.15 Other attributes</a></li>
+ <li><a name="toc-Local-to-tests-in-gcc_002etarget_002fi386" href="Effective_002dTarget-Keywords.html#Local-to-tests-in-gcc_002etarget_002fi386">7.2.3.16 Local to tests in <code>gcc.target/i386</code></a></li>
+ <li><a name="toc-Local-to-tests-in-gcc_002etest_002dframework" href="Effective_002dTarget-Keywords.html#Local-to-tests-in-gcc_002etest_002dframework">7.2.3.17 Local to tests in <code>gcc.test-framework</code></a></li>
+ </ul></li>
+ <li><a name="toc-Features-for-dg_002dadd_002doptions" href="Add-Options.html#Add-Options">7.2.4 Features for <code>dg-add-options</code></a></li>
+ <li><a name="toc-Variants-of-dg_002drequire_002dsupport" href="Require-Support.html#Require-Support">7.2.5 Variants of <code>dg-require-<var>support</var></code></a></li>
+ <li><a name="toc-Commands-for-use-in-dg_002dfinal" href="Final-Actions.html#Final-Actions">7.2.6 Commands for use in <code>dg-final</code></a>
+ <ul class="no-bullet">
+ <li><a name="toc-Scan-a-particular-file" href="Final-Actions.html#Scan-a-particular-file">7.2.6.1 Scan a particular file</a></li>
+ <li><a name="toc-Scan-the-assembly-output" href="Final-Actions.html#Scan-the-assembly-output">7.2.6.2 Scan the assembly output</a></li>
+ <li><a name="toc-Scan-optimization-dump-files" href="Final-Actions.html#Scan-optimization-dump-files">7.2.6.3 Scan optimization dump files</a></li>
+ <li><a name="toc-Check-for-output-files" href="Final-Actions.html#Check-for-output-files">7.2.6.4 Check for output files</a></li>
+ <li><a name="toc-Checks-for-gcov-tests" href="Final-Actions.html#Checks-for-gcov-tests">7.2.6.5 Checks for <code>gcov</code> tests</a></li>
+ <li><a name="toc-Clean-up-generated-test-files" href="Final-Actions.html#Clean-up-generated-test-files">7.2.6.6 Clean up generated test files</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Ada-Language-Testsuites" href="Ada-Tests.html#Ada-Tests">7.3 Ada Language Testsuites</a></li>
+ <li><a name="toc-C-Language-Testsuites" href="C-Tests.html#C-Tests">7.4 C Language Testsuites</a></li>
+ <li><a name="toc-Support-for-testing-link_002dtime-optimizations" href="LTO-Testing.html#LTO-Testing">7.5 Support for testing link-time optimizations</a></li>
+ <li><a name="toc-Support-for-testing-gcov" href="gcov-Testing.html#gcov-Testing">7.6 Support for testing <code>gcov</code></a></li>
+ <li><a name="toc-Support-for-testing-profile_002ddirected-optimizations" href="profopt-Testing.html#profopt-Testing">7.7 Support for testing profile-directed optimizations</a></li>
+ <li><a name="toc-Support-for-testing-binary-compatibility" href="compat-Testing.html#compat-Testing">7.8 Support for testing binary compatibility</a></li>
+ <li><a name="toc-Support-for-torture-testing-using-multiple-options" href="Torture-Tests.html#Torture-Tests">7.9 Support for torture testing using multiple options</a></li>
+ <li><a name="toc-Support-for-testing-GIMPLE-passes" href="GIMPLE-Tests.html#GIMPLE-Tests">7.10 Support for testing GIMPLE passes</a></li>
+ <li><a name="toc-Support-for-testing-RTL-passes" href="RTL-Tests.html#RTL-Tests">7.11 Support for testing RTL passes</a></li>
+ </ul></li>
+ <li><a name="toc-Option-specification-files" href="Options.html#Options">8 Option specification files</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Option-file-format-1" href="Option-file-format.html#Option-file-format">8.1 Option file format</a></li>
+ <li><a name="toc-Option-properties-1" href="Option-properties.html#Option-properties">8.2 Option properties</a></li>
+ </ul></li>
+ <li><a name="toc-Passes-and-Files-of-the-Compiler" href="Passes.html#Passes">9 Passes and Files of the Compiler</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Parsing-pass-1" href="Parsing-pass.html#Parsing-pass">9.1 Parsing pass</a></li>
+ <li><a name="toc-Gimplification-pass-1" href="Gimplification-pass.html#Gimplification-pass">9.2 Gimplification pass</a></li>
+ <li><a name="toc-Pass-manager-1" href="Pass-manager.html#Pass-manager">9.3 Pass manager</a></li>
+ <li><a name="toc-Inter_002dprocedural-optimization-passes" href="IPA-passes.html#IPA-passes">9.4 Inter-procedural optimization passes</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Small-IPA-passes-1" href="Small-IPA-passes.html#Small-IPA-passes">9.4.1 Small IPA passes</a></li>
+ <li><a name="toc-Regular-IPA-passes-1" href="Regular-IPA-passes.html#Regular-IPA-passes">9.4.2 Regular IPA passes</a></li>
+ <li><a name="toc-Late-IPA-passes-1" href="Late-IPA-passes.html#Late-IPA-passes">9.4.3 Late IPA passes</a></li>
+ </ul></li>
+ <li><a name="toc-Tree-SSA-passes-1" href="Tree-SSA-passes.html#Tree-SSA-passes">9.5 Tree SSA passes</a></li>
+ <li><a name="toc-RTL-passes-1" href="RTL-passes.html#RTL-passes">9.6 RTL passes</a></li>
+ <li><a name="toc-Optimization-info-1" href="Optimization-info.html#Optimization-info">9.7 Optimization info</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Dump-setup-1" href="Dump-setup.html#Dump-setup">9.7.1 Dump setup</a></li>
+ <li><a name="toc-Optimization-groups-1" href="Optimization-groups.html#Optimization-groups">9.7.2 Optimization groups</a></li>
+ <li><a name="toc-Dump-files-and-streams-1" href="Dump-files-and-streams.html#Dump-files-and-streams">9.7.3 Dump files and streams</a></li>
+ <li><a name="toc-Dump-output-verbosity-1" href="Dump-output-verbosity.html#Dump-output-verbosity">9.7.4 Dump output verbosity</a></li>
+ <li><a name="toc-Dump-types-1" href="Dump-types.html#Dump-types">9.7.5 Dump types</a></li>
+ <li><a name="toc-Dump-examples-1" href="Dump-examples.html#Dump-examples">9.7.6 Dump examples</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Sizes-and-offsets-as-runtime-invariants" href="poly_005fint.html#poly_005fint">10 Sizes and offsets as runtime invariants</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Overview-of-poly_005fint-1" href="Overview-of-poly_005fint.html#Overview-of-poly_005fint">10.1 Overview of <code>poly_int</code></a></li>
+ <li><a name="toc-Consequences-of-using-poly_005fint-1" href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint">10.2 Consequences of using <code>poly_int</code></a></li>
+ <li><a name="toc-Comparisons-involving-poly_005fint-1" href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint">10.3 Comparisons involving <code>poly_int</code></a>
+ <ul class="no-bullet">
+ <li><a name="toc-Comparison-functions-for-poly_005fint-1" href="Comparison-functions-for-poly_005fint.html#Comparison-functions-for-poly_005fint">10.3.1 Comparison functions for <code>poly_int</code></a></li>
+ <li><a name="toc-Properties-of-the-poly_005fint-comparisons-1" href="Properties-of-the-poly_005fint-comparisons.html#Properties-of-the-poly_005fint-comparisons">10.3.2 Properties of the <code>poly_int</code> comparisons</a></li>
+ <li><a name="toc-Comparing-potentially_002dunordered-poly_005fints-1" href="Comparing-potentially_002dunordered-poly_005fints.html#Comparing-potentially_002dunordered-poly_005fints">10.3.3 Comparing potentially-unordered <code>poly_int</code>s</a></li>
+ <li><a name="toc-Comparing-ordered-poly_005fints-1" href="Comparing-ordered-poly_005fints.html#Comparing-ordered-poly_005fints">10.3.4 Comparing ordered <code>poly_int</code>s</a></li>
+ <li><a name="toc-Checking-for-a-poly_005fint-marker-value-1" href="Checking-for-a-poly_005fint-marker-value.html#Checking-for-a-poly_005fint-marker-value">10.3.5 Checking for a <code>poly_int</code> marker value</a></li>
+ <li><a name="toc-Range-checks-on-poly_005fints-1" href="Range-checks-on-poly_005fints.html#Range-checks-on-poly_005fints">10.3.6 Range checks on <code>poly_int</code>s</a></li>
+ <li><a name="toc-Sorting-poly_005fints-1" href="Sorting-poly_005fints.html#Sorting-poly_005fints">10.3.7 Sorting <code>poly_int</code>s</a></li>
+ </ul></li>
+ <li><a name="toc-Arithmetic-on-poly_005fints-1" href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints">10.4 Arithmetic on <code>poly_int</code>s</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Using-poly_005fint-with-C_002b_002b-arithmetic-operators-1" href="Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html#Using-poly_005fint-with-C_002b_002b-arithmetic-operators">10.4.1 Using <code>poly_int</code> with C++ arithmetic operators</a></li>
+ <li><a name="toc-wi-arithmetic-on-poly_005fints-1" href="wi-arithmetic-on-poly_005fints.html#wi-arithmetic-on-poly_005fints">10.4.2 <code>wi</code> arithmetic on <code>poly_int</code>s</a></li>
+ <li><a name="toc-Division-of-poly_005fints-1" href="Division-of-poly_005fints.html#Division-of-poly_005fints">10.4.3 Division of <code>poly_int</code>s</a></li>
+ <li><a name="toc-Other-poly_005fint-arithmetic-1" href="Other-poly_005fint-arithmetic.html#Other-poly_005fint-arithmetic">10.4.4 Other <code>poly_int</code> arithmetic</a></li>
+ </ul></li>
+ <li><a name="toc-Alignment-of-poly_005fints-1" href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints">10.5 Alignment of <code>poly_int</code>s</a></li>
+ <li><a name="toc-Computing-bounds-on-poly_005fints-1" href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints">10.6 Computing bounds on <code>poly_int</code>s</a></li>
+ <li><a name="toc-Converting-poly_005fints-1" href="Converting-poly_005fints.html#Converting-poly_005fints">10.7 Converting <code>poly_int</code>s</a></li>
+ <li><a name="toc-Miscellaneous-poly_005fint-routines-1" href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines">10.8 Miscellaneous <code>poly_int</code> routines</a></li>
+ <li><a name="toc-Guidelines-for-using-poly_005fint-1" href="Guidelines-for-using-poly_005fint.html#Guidelines-for-using-poly_005fint">10.9 Guidelines for using <code>poly_int</code></a></li>
+ </ul></li>
+ <li><a name="toc-GENERIC-1" href="GENERIC.html#GENERIC">11 GENERIC</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Deficiencies-1" href="Deficiencies.html#Deficiencies">11.1 Deficiencies</a></li>
+ <li><a name="toc-Overview-1" href="Tree-overview.html#Tree-overview">11.2 Overview</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Trees" href="Macros-and-Functions.html#Macros-and-Functions">11.2.1 Trees</a></li>
+ <li><a name="toc-Identifiers-1" href="Identifiers.html#Identifiers">11.2.2 Identifiers</a></li>
+ <li><a name="toc-Containers-1" href="Containers.html#Containers">11.2.3 Containers</a></li>
+ </ul></li>
+ <li><a name="toc-Types-1" href="Types.html#Types">11.3 Types</a></li>
+ <li><a name="toc-Declarations-1" href="Declarations.html#Declarations">11.4 Declarations</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Working-with-declarations-1" href="Working-with-declarations.html#Working-with-declarations">11.4.1 Working with declarations</a></li>
+ <li><a name="toc-Internal-structure-1" href="Internal-structure.html#Internal-structure">11.4.2 Internal structure</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Current-structure-hierarchy-1" href="Current-structure-hierarchy.html#Current-structure-hierarchy">11.4.2.1 Current structure hierarchy</a></li>
+ <li><a name="toc-Adding-new-DECL-node-types-1" href="Adding-new-DECL-node-types.html#Adding-new-DECL-node-types">11.4.2.2 Adding new DECL node types</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Attributes-in-trees" href="Attributes.html#Attributes">11.5 Attributes in trees</a></li>
+ <li><a name="toc-Expressions-1" href="Expression-trees.html#Expression-trees">11.6 Expressions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Constant-expressions-1" href="Constant-expressions.html#Constant-expressions">11.6.1 Constant expressions</a></li>
+ <li><a name="toc-References-to-storage" href="Storage-References.html#Storage-References">11.6.2 References to storage</a></li>
+ <li><a name="toc-Unary-and-Binary-Expressions-1" href="Unary-and-Binary-Expressions.html#Unary-and-Binary-Expressions">11.6.3 Unary and Binary Expressions</a></li>
+ <li><a name="toc-Vectors-1" href="Vectors.html#Vectors">11.6.4 Vectors</a></li>
+ </ul></li>
+ <li><a name="toc-Statements-1" href="Statements.html#Statements">11.7 Statements</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Basic-Statements-1" href="Basic-Statements.html#Basic-Statements">11.7.1 Basic Statements</a></li>
+ <li><a name="toc-Blocks-1" href="Blocks.html#Blocks">11.7.2 Blocks</a></li>
+ <li><a name="toc-Statement-Sequences-1" href="Statement-Sequences.html#Statement-Sequences">11.7.3 Statement Sequences</a></li>
+ <li><a name="toc-Empty-Statements-1" href="Empty-Statements.html#Empty-Statements">11.7.4 Empty Statements</a></li>
+ <li><a name="toc-Jumps-1" href="Jumps.html#Jumps">11.7.5 Jumps</a></li>
+ <li><a name="toc-Cleanups-1" href="Cleanups.html#Cleanups">11.7.6 Cleanups</a></li>
+ <li><a name="toc-OpenMP-1" href="OpenMP.html#OpenMP">11.7.7 OpenMP</a></li>
+ <li><a name="toc-OpenACC-1" href="OpenACC.html#OpenACC">11.7.8 OpenACC</a></li>
+ </ul></li>
+ <li><a name="toc-Functions-1" href="Functions.html#Functions">11.8 Functions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Function-Basics-1" href="Function-Basics.html#Function-Basics">11.8.1 Function Basics</a></li>
+ <li><a name="toc-Function-Properties-1" href="Function-Properties.html#Function-Properties">11.8.2 Function Properties</a></li>
+ </ul></li>
+ <li><a name="toc-Language_002ddependent-trees-1" href="Language_002ddependent-trees.html#Language_002ddependent-trees">11.9 Language-dependent trees</a></li>
+ <li><a name="toc-C-and-C_002b_002b-Trees-1" href="C-and-C_002b_002b-Trees.html#C-and-C_002b_002b-Trees">11.10 C and C++ Trees</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Types-for-C_002b_002b-1" href="Types-for-C_002b_002b.html#Types-for-C_002b_002b">11.10.1 Types for C++</a></li>
+ <li><a name="toc-Namespaces-1" href="Namespaces.html#Namespaces">11.10.2 Namespaces</a></li>
+ <li><a name="toc-Classes-1" href="Classes.html#Classes">11.10.3 Classes</a></li>
+ <li><a name="toc-Functions-for-C_002b_002b-1" href="Functions-for-C_002b_002b.html#Functions-for-C_002b_002b">11.10.4 Functions for C++</a></li>
+ <li><a name="toc-Statements-for-C-and-C_002b_002b-1" href="Statements-for-C-and-C_002b_002b.html#Statements-for-C-and-C_002b_002b">11.10.5 Statements for C and C++</a></li>
+ <li><a name="toc-C_002b_002b-Expressions-1" href="C_002b_002b-Expressions.html#C_002b_002b-Expressions">11.10.6 C++ Expressions</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-GIMPLE-1" href="GIMPLE.html#GIMPLE">12 GIMPLE</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Tuple-representation-1" href="Tuple-representation.html#Tuple-representation">12.1 Tuple representation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-gimple-_0028gsbase_0029" href="Tuple-representation.html#gimple-_0028gsbase_0029">12.1.1 <code>gimple</code> (gsbase)</a></li>
+ <li><a name="toc-gimple_005fstatement_005fwith_005fops" href="Tuple-representation.html#gimple_005fstatement_005fwith_005fops">12.1.2 <code>gimple_statement_with_ops</code></a></li>
+ <li><a name="toc-gimple_005fstatement_005fwith_005fmemory_005fops" href="Tuple-representation.html#gimple_005fstatement_005fwith_005fmemory_005fops">12.1.3 <code>gimple_statement_with_memory_ops</code></a></li>
+ </ul></li>
+ <li><a name="toc-Class-hierarchy-of-GIMPLE-statements-1" href="Class-hierarchy-of-GIMPLE-statements.html#Class-hierarchy-of-GIMPLE-statements">12.2 Class hierarchy of GIMPLE statements</a></li>
+ <li><a name="toc-GIMPLE-instruction-set-1" href="GIMPLE-instruction-set.html#GIMPLE-instruction-set">12.3 GIMPLE instruction set</a></li>
+ <li><a name="toc-Exception-Handling-1" href="GIMPLE-Exception-Handling.html#GIMPLE-Exception-Handling">12.4 Exception Handling</a></li>
+ <li><a name="toc-Temporaries-1" href="Temporaries.html#Temporaries">12.5 Temporaries</a></li>
+ <li><a name="toc-Operands-1" href="Operands.html#Operands">12.6 Operands</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Compound-Expressions-1" href="Compound-Expressions.html#Compound-Expressions">12.6.1 Compound Expressions</a></li>
+ <li><a name="toc-Compound-Lvalues-1" href="Compound-Lvalues.html#Compound-Lvalues">12.6.2 Compound Lvalues</a></li>
+ <li><a name="toc-Conditional-Expressions-1" href="Conditional-Expressions.html#Conditional-Expressions">12.6.3 Conditional Expressions</a></li>
+ <li><a name="toc-Logical-Operators-1" href="Logical-Operators.html#Logical-Operators">12.6.4 Logical Operators</a></li>
+ <li><a name="toc-Manipulating-operands" href="Logical-Operators.html#Manipulating-operands">12.6.5 Manipulating operands</a></li>
+ <li><a name="toc-Operand-vector-allocation" href="Logical-Operators.html#Operand-vector-allocation">12.6.6 Operand vector allocation</a></li>
+ <li><a name="toc-Operand-validation" href="Logical-Operators.html#Operand-validation">12.6.7 Operand validation</a></li>
+ <li><a name="toc-Statement-validation" href="Logical-Operators.html#Statement-validation">12.6.8 Statement validation</a></li>
+ </ul></li>
+ <li><a name="toc-Manipulating-GIMPLE-statements-1" href="Manipulating-GIMPLE-statements.html#Manipulating-GIMPLE-statements">12.7 Manipulating GIMPLE statements</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Common-accessors" href="Manipulating-GIMPLE-statements.html#Common-accessors">12.7.1 Common accessors</a></li>
+ </ul></li>
+ <li><a name="toc-Tuple-specific-accessors-1" href="Tuple-specific-accessors.html#Tuple-specific-accessors">12.8 Tuple specific accessors</a>
+ <ul class="no-bullet">
+ <li><a name="toc-GIMPLE_005fASM-1" href="GIMPLE_005fASM.html#GIMPLE_005fASM">12.8.1 <code>GIMPLE_ASM</code></a></li>
+ <li><a name="toc-GIMPLE_005fASSIGN-1" href="GIMPLE_005fASSIGN.html#GIMPLE_005fASSIGN">12.8.2 <code>GIMPLE_ASSIGN</code></a></li>
+ <li><a name="toc-GIMPLE_005fBIND-1" href="GIMPLE_005fBIND.html#GIMPLE_005fBIND">12.8.3 <code>GIMPLE_BIND</code></a></li>
+ <li><a name="toc-GIMPLE_005fCALL-1" href="GIMPLE_005fCALL.html#GIMPLE_005fCALL">12.8.4 <code>GIMPLE_CALL</code></a></li>
+ <li><a name="toc-GIMPLE_005fCATCH-1" href="GIMPLE_005fCATCH.html#GIMPLE_005fCATCH">12.8.5 <code>GIMPLE_CATCH</code></a></li>
+ <li><a name="toc-GIMPLE_005fCOND-1" href="GIMPLE_005fCOND.html#GIMPLE_005fCOND">12.8.6 <code>GIMPLE_COND</code></a></li>
+ <li><a name="toc-GIMPLE_005fDEBUG-1" href="GIMPLE_005fDEBUG.html#GIMPLE_005fDEBUG">12.8.7 <code>GIMPLE_DEBUG</code></a></li>
+ <li><a name="toc-GIMPLE_005fEH_005fFILTER-1" href="GIMPLE_005fEH_005fFILTER.html#GIMPLE_005fEH_005fFILTER">12.8.8 <code>GIMPLE_EH_FILTER</code></a></li>
+ <li><a name="toc-GIMPLE_005fLABEL-1" href="GIMPLE_005fLABEL.html#GIMPLE_005fLABEL">12.8.9 <code>GIMPLE_LABEL</code></a></li>
+ <li><a name="toc-GIMPLE_005fGOTO-1" href="GIMPLE_005fGOTO.html#GIMPLE_005fGOTO">12.8.10 <code>GIMPLE_GOTO</code></a></li>
+ <li><a name="toc-GIMPLE_005fNOP-1" href="GIMPLE_005fNOP.html#GIMPLE_005fNOP">12.8.11 <code>GIMPLE_NOP</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fATOMIC_005fLOAD-1" href="GIMPLE_005fOMP_005fATOMIC_005fLOAD.html#GIMPLE_005fOMP_005fATOMIC_005fLOAD">12.8.12 <code>GIMPLE_OMP_ATOMIC_LOAD</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fATOMIC_005fSTORE-1" href="GIMPLE_005fOMP_005fATOMIC_005fSTORE.html#GIMPLE_005fOMP_005fATOMIC_005fSTORE">12.8.13 <code>GIMPLE_OMP_ATOMIC_STORE</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fCONTINUE-1" href="GIMPLE_005fOMP_005fCONTINUE.html#GIMPLE_005fOMP_005fCONTINUE">12.8.14 <code>GIMPLE_OMP_CONTINUE</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fCRITICAL-1" href="GIMPLE_005fOMP_005fCRITICAL.html#GIMPLE_005fOMP_005fCRITICAL">12.8.15 <code>GIMPLE_OMP_CRITICAL</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fFOR-1" href="GIMPLE_005fOMP_005fFOR.html#GIMPLE_005fOMP_005fFOR">12.8.16 <code>GIMPLE_OMP_FOR</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fMASTER-1" href="GIMPLE_005fOMP_005fMASTER.html#GIMPLE_005fOMP_005fMASTER">12.8.17 <code>GIMPLE_OMP_MASTER</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fORDERED-1" href="GIMPLE_005fOMP_005fORDERED.html#GIMPLE_005fOMP_005fORDERED">12.8.18 <code>GIMPLE_OMP_ORDERED</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fPARALLEL-1" href="GIMPLE_005fOMP_005fPARALLEL.html#GIMPLE_005fOMP_005fPARALLEL">12.8.19 <code>GIMPLE_OMP_PARALLEL</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fRETURN-1" href="GIMPLE_005fOMP_005fRETURN.html#GIMPLE_005fOMP_005fRETURN">12.8.20 <code>GIMPLE_OMP_RETURN</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fSECTION-1" href="GIMPLE_005fOMP_005fSECTION.html#GIMPLE_005fOMP_005fSECTION">12.8.21 <code>GIMPLE_OMP_SECTION</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fSECTIONS-1" href="GIMPLE_005fOMP_005fSECTIONS.html#GIMPLE_005fOMP_005fSECTIONS">12.8.22 <code>GIMPLE_OMP_SECTIONS</code></a></li>
+ <li><a name="toc-GIMPLE_005fOMP_005fSINGLE-1" href="GIMPLE_005fOMP_005fSINGLE.html#GIMPLE_005fOMP_005fSINGLE">12.8.23 <code>GIMPLE_OMP_SINGLE</code></a></li>
+ <li><a name="toc-GIMPLE_005fPHI-1" href="GIMPLE_005fPHI.html#GIMPLE_005fPHI">12.8.24 <code>GIMPLE_PHI</code></a></li>
+ <li><a name="toc-GIMPLE_005fRESX-1" href="GIMPLE_005fRESX.html#GIMPLE_005fRESX">12.8.25 <code>GIMPLE_RESX</code></a></li>
+ <li><a name="toc-GIMPLE_005fRETURN-1" href="GIMPLE_005fRETURN.html#GIMPLE_005fRETURN">12.8.26 <code>GIMPLE_RETURN</code></a></li>
+ <li><a name="toc-GIMPLE_005fSWITCH-1" href="GIMPLE_005fSWITCH.html#GIMPLE_005fSWITCH">12.8.27 <code>GIMPLE_SWITCH</code></a></li>
+ <li><a name="toc-GIMPLE_005fTRY-1" href="GIMPLE_005fTRY.html#GIMPLE_005fTRY">12.8.28 <code>GIMPLE_TRY</code></a></li>
+ <li><a name="toc-GIMPLE_005fWITH_005fCLEANUP_005fEXPR-1" href="GIMPLE_005fWITH_005fCLEANUP_005fEXPR.html#GIMPLE_005fWITH_005fCLEANUP_005fEXPR">12.8.29 <code>GIMPLE_WITH_CLEANUP_EXPR</code></a></li>
+ </ul></li>
+ <li><a name="toc-GIMPLE-sequences-1" href="GIMPLE-sequences.html#GIMPLE-sequences">12.9 GIMPLE sequences</a></li>
+ <li><a name="toc-Sequence-iterators-1" href="Sequence-iterators.html#Sequence-iterators">12.10 Sequence iterators</a></li>
+ <li><a name="toc-Adding-a-new-GIMPLE-statement-code-1" href="Adding-a-new-GIMPLE-statement-code.html#Adding-a-new-GIMPLE-statement-code">12.11 Adding a new GIMPLE statement code</a></li>
+ <li><a name="toc-Statement-and-operand-traversals-1" href="Statement-and-operand-traversals.html#Statement-and-operand-traversals">12.12 Statement and operand traversals</a></li>
+ </ul></li>
+ <li><a name="toc-Analysis-and-Optimization-of-GIMPLE-tuples" href="Tree-SSA.html#Tree-SSA">13 Analysis and Optimization of GIMPLE tuples</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Annotations-1" href="Annotations.html#Annotations">13.1 Annotations</a></li>
+ <li><a name="toc-SSA-Operands-1" href="SSA-Operands.html#SSA-Operands">13.2 SSA Operands</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Operand-Iterators-And-Access-Routines" href="SSA-Operands.html#Operand-Iterators-And-Access-Routines">13.2.1 Operand Iterators And Access Routines</a></li>
+ <li><a name="toc-Immediate-Uses" href="SSA-Operands.html#Immediate-Uses">13.2.2 Immediate Uses</a></li>
+ </ul></li>
+ <li><a name="toc-Static-Single-Assignment" href="SSA.html#SSA">13.3 Static Single Assignment</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Preserving-the-SSA-form" href="SSA.html#Preserving-the-SSA-form">13.3.1 Preserving the SSA form</a></li>
+ <li><a name="toc-Examining-SSA_005fNAME-nodes" href="SSA.html#Examining-SSA_005fNAME-nodes">13.3.2 Examining <code>SSA_NAME</code> nodes</a></li>
+ <li><a name="toc-Walking-the-dominator-tree" href="SSA.html#Walking-the-dominator-tree">13.3.3 Walking the dominator tree</a></li>
+ </ul></li>
+ <li><a name="toc-Alias-analysis-1" href="Alias-analysis.html#Alias-analysis">13.4 Alias analysis</a></li>
+ <li><a name="toc-Memory-model-1" href="Memory-model.html#Memory-model">13.5 Memory model</a></li>
+ </ul></li>
+ <li><a name="toc-RTL-Representation" href="RTL.html#RTL">14 RTL Representation</a>
+ <ul class="no-bullet">
+ <li><a name="toc-RTL-Object-Types" href="RTL-Objects.html#RTL-Objects">14.1 RTL Object Types</a></li>
+ <li><a name="toc-RTL-Classes-and-Formats" href="RTL-Classes.html#RTL-Classes">14.2 RTL Classes and Formats</a></li>
+ <li><a name="toc-Access-to-Operands" href="Accessors.html#Accessors">14.3 Access to Operands</a></li>
+ <li><a name="toc-Access-to-Special-Operands" href="Special-Accessors.html#Special-Accessors">14.4 Access to Special Operands</a></li>
+ <li><a name="toc-Flags-in-an-RTL-Expression" href="Flags.html#Flags">14.5 Flags in an RTL Expression</a></li>
+ <li><a name="toc-Machine-Modes-1" href="Machine-Modes.html#Machine-Modes">14.6 Machine Modes</a></li>
+ <li><a name="toc-Constant-Expression-Types" href="Constants.html#Constants">14.7 Constant Expression Types</a></li>
+ <li><a name="toc-Registers-and-Memory" href="Regs-and-Memory.html#Regs-and-Memory">14.8 Registers and Memory</a></li>
+ <li><a name="toc-RTL-Expressions-for-Arithmetic" href="Arithmetic.html#Arithmetic">14.9 RTL Expressions for Arithmetic</a></li>
+ <li><a name="toc-Comparison-Operations" href="Comparisons.html#Comparisons">14.10 Comparison Operations</a></li>
+ <li><a name="toc-Bit_002dFields-1" href="Bit_002dFields.html#Bit_002dFields">14.11 Bit-Fields</a></li>
+ <li><a name="toc-Vector-Operations-1" href="Vector-Operations.html#Vector-Operations">14.12 Vector Operations</a></li>
+ <li><a name="toc-Conversions-1" href="Conversions.html#Conversions">14.13 Conversions</a></li>
+ <li><a name="toc-Declarations-2" href="RTL-Declarations.html#RTL-Declarations">14.14 Declarations</a></li>
+ <li><a name="toc-Side-Effect-Expressions" href="Side-Effects.html#Side-Effects">14.15 Side Effect Expressions</a></li>
+ <li><a name="toc-Embedded-Side_002dEffects-on-Addresses" href="Incdec.html#Incdec">14.16 Embedded Side-Effects on Addresses</a></li>
+ <li><a name="toc-Assembler-Instructions-as-Expressions" href="Assembler.html#Assembler">14.17 Assembler Instructions as Expressions</a></li>
+ <li><a name="toc-Variable-Location-Debug-Information-in-RTL" href="Debug-Information.html#Debug-Information">14.18 Variable Location Debug Information in RTL</a></li>
+ <li><a name="toc-Insns-1" href="Insns.html#Insns">14.19 Insns</a></li>
+ <li><a name="toc-RTL-Representation-of-Function_002dCall-Insns" href="Calls.html#Calls">14.20 RTL Representation of Function-Call Insns</a></li>
+ <li><a name="toc-On_002dthe_002dSide-SSA-Form-for-RTL" href="RTL-SSA.html#RTL-SSA">14.21 On-the-Side SSA Form for RTL</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Using-RTL-SSA-in-a-pass" href="Using-RTL-SSA.html#Using-RTL-SSA">14.21.1 Using RTL SSA in a pass</a></li>
+ <li><a name="toc-RTL-SSA-Instructions-1" href="RTL-SSA-Instructions.html#RTL-SSA-Instructions">14.21.2 RTL SSA Instructions</a></li>
+ <li><a name="toc-RTL-SSA-Basic-Blocks-1" href="RTL-SSA-Basic-Blocks.html#RTL-SSA-Basic-Blocks">14.21.3 RTL SSA Basic Blocks</a></li>
+ <li><a name="toc-RTL-SSA-Resources-1" href="RTL-SSA-Resources.html#RTL-SSA-Resources">14.21.4 RTL SSA Resources</a></li>
+ <li><a name="toc-RTL-SSA-Register-and-Memory-Accesses" href="RTL-SSA-Accesses.html#RTL-SSA-Accesses">14.21.5 RTL SSA Register and Memory Accesses</a></li>
+ <li><a name="toc-RTL-SSA-Phi-Nodes-1" href="RTL-SSA-Phi-Nodes.html#RTL-SSA-Phi-Nodes">14.21.6 RTL SSA Phi Nodes</a></li>
+ <li><a name="toc-RTL-SSA-Access-Lists-1" href="RTL-SSA-Access-Lists.html#RTL-SSA-Access-Lists">14.21.7 RTL SSA Access Lists</a></li>
+ <li><a name="toc-Using-the-RTL-SSA-framework-to-change-instructions" href="Changing-RTL-Instructions.html#Changing-RTL-Instructions">14.21.8 Using the RTL SSA framework to change instructions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Changing-One-RTL-SSA-Instruction-1" href="Changing-One-RTL-SSA-Instruction.html#Changing-One-RTL-SSA-Instruction">14.21.8.1 Changing One RTL SSA Instruction</a></li>
+ <li><a name="toc-Changing-Multiple-RTL-SSA-Instructions-1" href="Changing-Multiple-RTL-SSA-Instructions.html#Changing-Multiple-RTL-SSA-Instructions">14.21.8.2 Changing Multiple RTL SSA Instructions</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Structure-Sharing-Assumptions" href="Sharing.html#Sharing">14.22 Structure Sharing Assumptions</a></li>
+ <li><a name="toc-Reading-RTL-1" href="Reading-RTL.html#Reading-RTL">14.23 Reading RTL</a></li>
+ </ul></li>
+ <li><a name="toc-Control-Flow-Graph" href="Control-Flow.html#Control-Flow">15 Control Flow Graph</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Basic-Blocks-1" href="Basic-Blocks.html#Basic-Blocks">15.1 Basic Blocks</a></li>
+ <li><a name="toc-Edges-1" href="Edges.html#Edges">15.2 Edges</a></li>
+ <li><a name="toc-Profile-information-1" href="Profile-information.html#Profile-information">15.3 Profile information</a></li>
+ <li><a name="toc-Maintaining-the-CFG-1" href="Maintaining-the-CFG.html#Maintaining-the-CFG">15.4 Maintaining the CFG</a></li>
+ <li><a name="toc-Liveness-information-1" href="Liveness-information.html#Liveness-information">15.5 Liveness information</a></li>
+ </ul></li>
+ <li><a name="toc-Analysis-and-Representation-of-Loops" href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation">16 Analysis and Representation of Loops</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Loop-representation-1" href="Loop-representation.html#Loop-representation">16.1 Loop representation</a></li>
+ <li><a name="toc-Loop-querying-1" href="Loop-querying.html#Loop-querying">16.2 Loop querying</a></li>
+ <li><a name="toc-Loop-manipulation-1" href="Loop-manipulation.html#Loop-manipulation">16.3 Loop manipulation</a></li>
+ <li><a name="toc-Loop_002dclosed-SSA-form" href="LCSSA.html#LCSSA">16.4 Loop-closed SSA form</a></li>
+ <li><a name="toc-Scalar-evolutions-1" href="Scalar-evolutions.html#Scalar-evolutions">16.5 Scalar evolutions</a></li>
+ <li><a name="toc-IV-analysis-on-RTL" href="loop_002div.html#loop_002div">16.6 IV analysis on RTL</a></li>
+ <li><a name="toc-Number-of-iterations-analysis" href="Number-of-iterations.html#Number-of-iterations">16.7 Number of iterations analysis</a></li>
+ <li><a name="toc-Data-Dependency-Analysis" href="Dependency-analysis.html#Dependency-analysis">16.8 Data Dependency Analysis</a></li>
+ </ul></li>
+ <li><a name="toc-Machine-Descriptions" href="Machine-Desc.html#Machine-Desc">17 Machine Descriptions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Overview-of-How-the-Machine-Description-is-Used" href="Overview.html#Overview">17.1 Overview of How the Machine Description is Used</a></li>
+ <li><a name="toc-Everything-about-Instruction-Patterns" href="Patterns.html#Patterns">17.2 Everything about Instruction Patterns</a></li>
+ <li><a name="toc-Example-of-define_005finsn" href="Example.html#Example">17.3 Example of <code>define_insn</code></a></li>
+ <li><a name="toc-RTL-Template-1" href="RTL-Template.html#RTL-Template">17.4 RTL Template</a></li>
+ <li><a name="toc-Output-Templates-and-Operand-Substitution" href="Output-Template.html#Output-Template">17.5 Output Templates and Operand Substitution</a></li>
+ <li><a name="toc-C-Statements-for-Assembler-Output" href="Output-Statement.html#Output-Statement">17.6 C Statements for Assembler Output</a></li>
+ <li><a name="toc-Predicates-1" href="Predicates.html#Predicates">17.7 Predicates</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Machine_002dIndependent-Predicates-1" href="Machine_002dIndependent-Predicates.html#Machine_002dIndependent-Predicates">17.7.1 Machine-Independent Predicates</a></li>
+ <li><a name="toc-Defining-Machine_002dSpecific-Predicates" href="Defining-Predicates.html#Defining-Predicates">17.7.2 Defining Machine-Specific Predicates</a></li>
+ </ul></li>
+ <li><a name="toc-Operand-Constraints" href="Constraints.html#Constraints">17.8 Operand Constraints</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Simple-Constraints-1" href="Simple-Constraints.html#Simple-Constraints">17.8.1 Simple Constraints</a></li>
+ <li><a name="toc-Multiple-Alternative-Constraints" href="Multi_002dAlternative.html#Multi_002dAlternative">17.8.2 Multiple Alternative Constraints</a></li>
+ <li><a name="toc-Register-Class-Preferences" href="Class-Preferences.html#Class-Preferences">17.8.3 Register Class Preferences</a></li>
+ <li><a name="toc-Constraint-Modifier-Characters" href="Modifiers.html#Modifiers">17.8.4 Constraint Modifier Characters</a></li>
+ <li><a name="toc-Constraints-for-Particular-Machines" href="Machine-Constraints.html#Machine-Constraints">17.8.5 Constraints for Particular Machines</a></li>
+ <li><a name="toc-Disable-insn-alternatives-using-the-enabled-attribute" href="Disable-Insn-Alternatives.html#Disable-Insn-Alternatives">17.8.6 Disable insn alternatives using the <code>enabled</code> attribute</a></li>
+ <li><a name="toc-Defining-Machine_002dSpecific-Constraints" href="Define-Constraints.html#Define-Constraints">17.8.7 Defining Machine-Specific Constraints</a></li>
+ <li><a name="toc-Testing-constraints-from-C" href="C-Constraint-Interface.html#C-Constraint-Interface">17.8.8 Testing constraints from C</a></li>
+ </ul></li>
+ <li><a name="toc-Standard-Pattern-Names-For-Generation" href="Standard-Names.html#Standard-Names">17.9 Standard Pattern Names For Generation</a></li>
+ <li><a name="toc-When-the-Order-of-Patterns-Matters" href="Pattern-Ordering.html#Pattern-Ordering">17.10 When the Order of Patterns Matters</a></li>
+ <li><a name="toc-Interdependence-of-Patterns" href="Dependent-Patterns.html#Dependent-Patterns">17.11 Interdependence of Patterns</a></li>
+ <li><a name="toc-Defining-Jump-Instruction-Patterns" href="Jump-Patterns.html#Jump-Patterns">17.12 Defining Jump Instruction Patterns</a></li>
+ <li><a name="toc-Defining-Looping-Instruction-Patterns" href="Looping-Patterns.html#Looping-Patterns">17.13 Defining Looping Instruction Patterns</a></li>
+ <li><a name="toc-Canonicalization-of-Instructions" href="Insn-Canonicalizations.html#Insn-Canonicalizations">17.14 Canonicalization of Instructions</a></li>
+ <li><a name="toc-Defining-RTL-Sequences-for-Code-Generation" href="Expander-Definitions.html#Expander-Definitions">17.15 Defining RTL Sequences for Code Generation</a></li>
+ <li><a name="toc-Defining-How-to-Split-Instructions" href="Insn-Splitting.html#Insn-Splitting">17.16 Defining How to Split Instructions</a></li>
+ <li><a name="toc-Including-Patterns-in-Machine-Descriptions_002e" href="Including-Patterns.html#Including-Patterns">17.17 Including Patterns in Machine Descriptions.</a>
+ <ul class="no-bullet">
+ <li><a name="toc-RTL-Generation-Tool-Options-for-Directory-Search" href="Including-Patterns.html#RTL-Generation-Tool-Options-for-Directory-Search">17.17.1 RTL Generation Tool Options for Directory Search</a></li>
+ </ul></li>
+ <li><a name="toc-Machine_002dSpecific-Peephole-Optimizers" href="Peephole-Definitions.html#Peephole-Definitions">17.18 Machine-Specific Peephole Optimizers</a>
+ <ul class="no-bullet">
+ <li><a name="toc-RTL-to-Text-Peephole-Optimizers" href="define_005fpeephole.html#define_005fpeephole">17.18.1 RTL to Text Peephole Optimizers</a></li>
+ <li><a name="toc-RTL-to-RTL-Peephole-Optimizers" href="define_005fpeephole2.html#define_005fpeephole2">17.18.2 RTL to RTL Peephole Optimizers</a></li>
+ </ul></li>
+ <li><a name="toc-Instruction-Attributes" href="Insn-Attributes.html#Insn-Attributes">17.19 Instruction Attributes</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Defining-Attributes-and-their-Values" href="Defining-Attributes.html#Defining-Attributes">17.19.1 Defining Attributes and their Values</a></li>
+ <li><a name="toc-Attribute-Expressions" href="Expressions.html#Expressions">17.19.2 Attribute Expressions</a></li>
+ <li><a name="toc-Assigning-Attribute-Values-to-Insns" href="Tagging-Insns.html#Tagging-Insns">17.19.3 Assigning Attribute Values to Insns</a></li>
+ <li><a name="toc-Example-of-Attribute-Specifications" href="Attr-Example.html#Attr-Example">17.19.4 Example of Attribute Specifications</a></li>
+ <li><a name="toc-Computing-the-Length-of-an-Insn" href="Insn-Lengths.html#Insn-Lengths">17.19.5 Computing the Length of an Insn</a></li>
+ <li><a name="toc-Constant-Attributes-1" href="Constant-Attributes.html#Constant-Attributes">17.19.6 Constant Attributes</a></li>
+ <li><a name="toc-Mnemonic-Attribute-1" href="Mnemonic-Attribute.html#Mnemonic-Attribute">17.19.7 Mnemonic Attribute</a></li>
+ <li><a name="toc-Delay-Slot-Scheduling" href="Delay-Slots.html#Delay-Slots">17.19.8 Delay Slot Scheduling</a></li>
+ <li><a name="toc-Specifying-processor-pipeline-description" href="Processor-pipeline-description.html#Processor-pipeline-description">17.19.9 Specifying processor pipeline description</a></li>
+ </ul></li>
+ <li><a name="toc-Conditional-Execution-1" href="Conditional-Execution.html#Conditional-Execution">17.20 Conditional Execution</a></li>
+ <li><a name="toc-RTL-Templates-Transformations" href="Define-Subst.html#Define-Subst">17.21 RTL Templates Transformations</a>
+ <ul class="no-bullet">
+ <li><a name="toc-define_005fsubst-Example" href="Define-Subst-Example.html#Define-Subst-Example">17.21.1 <code>define_subst</code> Example</a></li>
+ <li><a name="toc-Pattern-Matching-in-define_005fsubst" href="Define-Subst-Pattern-Matching.html#Define-Subst-Pattern-Matching">17.21.2 Pattern Matching in <code>define_subst</code></a></li>
+ <li><a name="toc-Generation-of-output-template-in-define_005fsubst" href="Define-Subst-Output-Template.html#Define-Subst-Output-Template">17.21.3 Generation of output template in <code>define_subst</code></a></li>
+ </ul></li>
+ <li><a name="toc-Constant-Definitions-1" href="Constant-Definitions.html#Constant-Definitions">17.22 Constant Definitions</a></li>
+ <li><a name="toc-Iterators-1" href="Iterators.html#Iterators">17.23 Iterators</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Mode-Iterators-1" href="Mode-Iterators.html#Mode-Iterators">17.23.1 Mode Iterators</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Defining-Mode-Iterators-1" href="Defining-Mode-Iterators.html#Defining-Mode-Iterators">17.23.1.1 Defining Mode Iterators</a></li>
+ <li><a name="toc-Substitution-in-Mode-Iterators" href="Substitutions.html#Substitutions">17.23.1.2 Substitution in Mode Iterators</a></li>
+ <li><a name="toc-Mode-Iterator-Examples" href="Examples.html#Examples">17.23.1.3 Mode Iterator Examples</a></li>
+ </ul></li>
+ <li><a name="toc-Code-Iterators-1" href="Code-Iterators.html#Code-Iterators">17.23.2 Code Iterators</a></li>
+ <li><a name="toc-Int-Iterators-1" href="Int-Iterators.html#Int-Iterators">17.23.3 Int Iterators</a></li>
+ <li><a name="toc-Subst-Iterators-1" href="Subst-Iterators.html#Subst-Iterators">17.23.4 Subst Iterators</a></li>
+ <li><a name="toc-Parameterized-Names-1" href="Parameterized-Names.html#Parameterized-Names">17.23.5 Parameterized Names</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Target-Description-Macros-and-Functions" href="Target-Macros.html#Target-Macros">18 Target Description Macros and Functions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Global-targetm-Variable" href="Target-Structure.html#Target-Structure">18.1 The Global <code>targetm</code> Variable</a></li>
+ <li><a name="toc-Controlling-the-Compilation-Driver_002c-gcc" href="Driver.html#Driver">18.2 Controlling the Compilation Driver, <samp>gcc</samp></a></li>
+ <li><a name="toc-Run_002dtime-Target-Specification" href="Run_002dtime-Target.html#Run_002dtime-Target">18.3 Run-time Target Specification</a></li>
+ <li><a name="toc-Defining-data-structures-for-per_002dfunction-information_002e" href="Per_002dFunction-Data.html#Per_002dFunction-Data">18.4 Defining data structures for per-function information.</a></li>
+ <li><a name="toc-Storage-Layout-1" href="Storage-Layout.html#Storage-Layout">18.5 Storage Layout</a></li>
+ <li><a name="toc-Layout-of-Source-Language-Data-Types" href="Type-Layout.html#Type-Layout">18.6 Layout of Source Language Data Types</a></li>
+ <li><a name="toc-Register-Usage" href="Registers.html#Registers">18.7 Register Usage</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Basic-Characteristics-of-Registers" href="Register-Basics.html#Register-Basics">18.7.1 Basic Characteristics of Registers</a></li>
+ <li><a name="toc-Order-of-Allocation-of-Registers" href="Allocation-Order.html#Allocation-Order">18.7.2 Order of Allocation of Registers</a></li>
+ <li><a name="toc-How-Values-Fit-in-Registers" href="Values-in-Registers.html#Values-in-Registers">18.7.3 How Values Fit in Registers</a></li>
+ <li><a name="toc-Handling-Leaf-Functions" href="Leaf-Functions.html#Leaf-Functions">18.7.4 Handling Leaf Functions</a></li>
+ <li><a name="toc-Registers-That-Form-a-Stack" href="Stack-Registers.html#Stack-Registers">18.7.5 Registers That Form a Stack</a></li>
+ </ul></li>
+ <li><a name="toc-Register-Classes-1" href="Register-Classes.html#Register-Classes">18.8 Register Classes</a></li>
+ <li><a name="toc-Stack-Layout-and-Calling-Conventions" href="Stack-and-Calling.html#Stack-and-Calling">18.9 Stack Layout and Calling Conventions</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Basic-Stack-Layout" href="Frame-Layout.html#Frame-Layout">18.9.1 Basic Stack Layout</a></li>
+ <li><a name="toc-Exception-Handling-Support" href="Exception-Handling.html#Exception-Handling">18.9.2 Exception Handling Support</a></li>
+ <li><a name="toc-Specifying-How-Stack-Checking-is-Done" href="Stack-Checking.html#Stack-Checking">18.9.3 Specifying How Stack Checking is Done</a></li>
+ <li><a name="toc-Registers-That-Address-the-Stack-Frame" href="Frame-Registers.html#Frame-Registers">18.9.4 Registers That Address the Stack Frame</a></li>
+ <li><a name="toc-Eliminating-Frame-Pointer-and-Arg-Pointer" href="Elimination.html#Elimination">18.9.5 Eliminating Frame Pointer and Arg Pointer</a></li>
+ <li><a name="toc-Passing-Function-Arguments-on-the-Stack" href="Stack-Arguments.html#Stack-Arguments">18.9.6 Passing Function Arguments on the Stack</a></li>
+ <li><a name="toc-Passing-Arguments-in-Registers" href="Register-Arguments.html#Register-Arguments">18.9.7 Passing Arguments in Registers</a></li>
+ <li><a name="toc-How-Scalar-Function-Values-Are-Returned" href="Scalar-Return.html#Scalar-Return">18.9.8 How Scalar Function Values Are Returned</a></li>
+ <li><a name="toc-How-Large-Values-Are-Returned" href="Aggregate-Return.html#Aggregate-Return">18.9.9 How Large Values Are Returned</a></li>
+ <li><a name="toc-Caller_002dSaves-Register-Allocation" href="Caller-Saves.html#Caller-Saves">18.9.10 Caller-Saves Register Allocation</a></li>
+ <li><a name="toc-Function-Entry-and-Exit" href="Function-Entry.html#Function-Entry">18.9.11 Function Entry and Exit</a></li>
+ <li><a name="toc-Generating-Code-for-Profiling" href="Profiling.html#Profiling">18.9.12 Generating Code for Profiling</a></li>
+ <li><a name="toc-Permitting-tail-calls" href="Tail-Calls.html#Tail-Calls">18.9.13 Permitting tail calls</a></li>
+ <li><a name="toc-Shrink_002dwrapping-separate-components-1" href="Shrink_002dwrapping-separate-components.html#Shrink_002dwrapping-separate-components">18.9.14 Shrink-wrapping separate components</a></li>
+ <li><a name="toc-Stack-smashing-protection" href="Stack-Smashing-Protection.html#Stack-Smashing-Protection">18.9.15 Stack smashing protection</a></li>
+ <li><a name="toc-Miscellaneous-register-hooks" href="Miscellaneous-Register-Hooks.html#Miscellaneous-Register-Hooks">18.9.16 Miscellaneous register hooks</a></li>
+ </ul></li>
+ <li><a name="toc-Implementing-the-Varargs-Macros" href="Varargs.html#Varargs">18.10 Implementing the Varargs Macros</a></li>
+ <li><a name="toc-Support-for-Nested-Functions" href="Trampolines.html#Trampolines">18.11 Support for Nested Functions</a></li>
+ <li><a name="toc-Implicit-Calls-to-Library-Routines" href="Library-Calls.html#Library-Calls">18.12 Implicit Calls to Library Routines</a></li>
+ <li><a name="toc-Addressing-Modes-1" href="Addressing-Modes.html#Addressing-Modes">18.13 Addressing Modes</a></li>
+ <li><a name="toc-Anchored-Addresses-1" href="Anchored-Addresses.html#Anchored-Addresses">18.14 Anchored Addresses</a></li>
+ <li><a name="toc-Condition-Code-Status" href="Condition-Code.html#Condition-Code">18.15 Condition Code Status</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Representation-of-condition-codes-using-registers" href="MODE_005fCC-Condition-Codes.html#MODE_005fCC-Condition-Codes">18.15.1 Representation of condition codes using registers</a></li>
+ </ul></li>
+ <li><a name="toc-Describing-Relative-Costs-of-Operations" href="Costs.html#Costs">18.16 Describing Relative Costs of Operations</a></li>
+ <li><a name="toc-Adjusting-the-Instruction-Scheduler" href="Scheduling.html#Scheduling">18.17 Adjusting the Instruction Scheduler</a></li>
+ <li><a name="toc-Dividing-the-Output-into-Sections-_0028Texts_002c-Data_002c-_2026_0029" href="Sections.html#Sections">18.18 Dividing the Output into Sections (Texts, Data, &hellip;)</a></li>
+ <li><a name="toc-Position-Independent-Code" href="PIC.html#PIC">18.19 Position Independent Code</a></li>
+ <li><a name="toc-Defining-the-Output-Assembler-Language" href="Assembler-Format.html#Assembler-Format">18.20 Defining the Output Assembler Language</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Overall-Framework-of-an-Assembler-File" href="File-Framework.html#File-Framework">18.20.1 The Overall Framework of an Assembler File</a></li>
+ <li><a name="toc-Output-of-Data" href="Data-Output.html#Data-Output">18.20.2 Output of Data</a></li>
+ <li><a name="toc-Output-of-Uninitialized-Variables" href="Uninitialized-Data.html#Uninitialized-Data">18.20.3 Output of Uninitialized Variables</a></li>
+ <li><a name="toc-Output-and-Generation-of-Labels" href="Label-Output.html#Label-Output">18.20.4 Output and Generation of Labels</a></li>
+ <li><a name="toc-How-Initialization-Functions-Are-Handled" href="Initialization.html#Initialization">18.20.5 How Initialization Functions Are Handled</a></li>
+ <li><a name="toc-Macros-Controlling-Initialization-Routines" href="Macros-for-Initialization.html#Macros-for-Initialization">18.20.6 Macros Controlling Initialization Routines</a></li>
+ <li><a name="toc-Output-of-Assembler-Instructions" href="Instruction-Output.html#Instruction-Output">18.20.7 Output of Assembler Instructions</a></li>
+ <li><a name="toc-Output-of-Dispatch-Tables" href="Dispatch-Tables.html#Dispatch-Tables">18.20.8 Output of Dispatch Tables</a></li>
+ <li><a name="toc-Assembler-Commands-for-Exception-Regions" href="Exception-Region-Output.html#Exception-Region-Output">18.20.9 Assembler Commands for Exception Regions</a></li>
+ <li><a name="toc-Assembler-Commands-for-Alignment" href="Alignment-Output.html#Alignment-Output">18.20.10 Assembler Commands for Alignment</a></li>
+ </ul></li>
+ <li><a name="toc-Controlling-Debugging-Information-Format" href="Debugging-Info.html#Debugging-Info">18.21 Controlling Debugging Information Format</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Macros-Affecting-All-Debugging-Formats" href="All-Debuggers.html#All-Debuggers">18.21.1 Macros Affecting All Debugging Formats</a></li>
+ <li><a name="toc-Macros-for-DWARF-Output" href="DWARF.html#DWARF">18.21.2 Macros for DWARF Output</a></li>
+ <li><a name="toc-Macros-for-VMS-Debug-Format" href="VMS-Debug.html#VMS-Debug">18.21.3 Macros for VMS Debug Format</a></li>
+ <li><a name="toc-Macros-for-CTF-Debug-Format" href="CTF-Debug.html#CTF-Debug">18.21.4 Macros for CTF Debug Format</a></li>
+ <li><a name="toc-Macros-for-BTF-Debug-Format" href="BTF-Debug.html#BTF-Debug">18.21.5 Macros for BTF Debug Format</a></li>
+ </ul></li>
+ <li><a name="toc-Cross-Compilation-and-Floating-Point" href="Floating-Point.html#Floating-Point">18.22 Cross Compilation and Floating Point</a></li>
+ <li><a name="toc-Mode-Switching-Instructions" href="Mode-Switching.html#Mode-Switching">18.23 Mode Switching Instructions</a></li>
+ <li><a name="toc-Defining-target_002dspecific-uses-of-_005f_005fattribute_005f_005f" href="Target-Attributes.html#Target-Attributes">18.24 Defining target-specific uses of <code>__attribute__</code></a></li>
+ <li><a name="toc-Emulating-TLS" href="Emulated-TLS.html#Emulated-TLS">18.25 Emulating TLS</a></li>
+ <li><a name="toc-Defining-coprocessor-specifics-for-MIPS-targets_002e" href="MIPS-Coprocessors.html#MIPS-Coprocessors">18.26 Defining coprocessor specifics for MIPS targets.</a></li>
+ <li><a name="toc-Parameters-for-Precompiled-Header-Validity-Checking" href="PCH-Target.html#PCH-Target">18.27 Parameters for Precompiled Header Validity Checking</a></li>
+ <li><a name="toc-C_002b_002b-ABI-parameters" href="C_002b_002b-ABI.html#C_002b_002b-ABI">18.28 C++ ABI parameters</a></li>
+ <li><a name="toc-D-ABI-parameters" href="D-Language-and-ABI.html#D-Language-and-ABI">18.29 D ABI parameters</a></li>
+ <li><a name="toc-Adding-support-for-named-address-spaces" href="Named-Address-Spaces.html#Named-Address-Spaces">18.30 Adding support for named address spaces</a></li>
+ <li><a name="toc-Miscellaneous-Parameters" href="Misc.html#Misc">18.31 Miscellaneous Parameters</a></li>
+ </ul></li>
+ <li><a name="toc-Host-Configuration" href="Host-Config.html#Host-Config">19 Host Configuration</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Host-Common-1" href="Host-Common.html#Host-Common">19.1 Host Common</a></li>
+ <li><a name="toc-Host-Filesystem" href="Filesystem.html#Filesystem">19.2 Host Filesystem</a></li>
+ <li><a name="toc-Host-Misc-1" href="Host-Misc.html#Host-Misc">19.3 Host Misc</a></li>
+ </ul></li>
+ <li><a name="toc-Makefile-Fragments" href="Fragments.html#Fragments">20 Makefile Fragments</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Target-Makefile-Fragments" href="Target-Fragment.html#Target-Fragment">20.1 Target Makefile Fragments</a></li>
+ <li><a name="toc-Host-Makefile-Fragments" href="Host-Fragment.html#Host-Fragment">20.2 Host Makefile Fragments</a></li>
+ </ul></li>
+ <li><a name="toc-collect2" href="Collect2.html#Collect2">21 <code>collect2</code></a></li>
+ <li><a name="toc-Standard-Header-File-Directories" href="Header-Dirs.html#Header-Dirs">22 Standard Header File Directories</a></li>
+ <li><a name="toc-Memory-Management-and-Type-Information" href="Type-Information.html#Type-Information">23 Memory Management and Type Information</a>
+ <ul class="no-bullet">
+ <li><a name="toc-The-Inside-of-a-GTY_0028_0028_0029_0029" href="GTY-Options.html#GTY-Options">23.1 The Inside of a <code>GTY(())</code></a></li>
+ <li><a name="toc-Support-for-inheritance" href="Inheritance-and-GTY.html#Inheritance-and-GTY">23.2 Support for inheritance</a></li>
+ <li><a name="toc-Support-for-user_002dprovided-GC-marking-routines" href="User-GC.html#User-GC">23.3 Support for user-provided GC marking routines</a>
+ <ul class="no-bullet">
+ <li><a name="toc-User_002dprovided-marking-routines-for-template-types" href="User-GC.html#User_002dprovided-marking-routines-for-template-types">23.3.1 User-provided marking routines for template types</a></li>
+ </ul></li>
+ <li><a name="toc-Marking-Roots-for-the-Garbage-Collector" href="GGC-Roots.html#GGC-Roots">23.4 Marking Roots for the Garbage Collector</a></li>
+ <li><a name="toc-Source-Files-Containing-Type-Information" href="Files.html#Files">23.5 Source Files Containing Type Information</a></li>
+ <li><a name="toc-How-to-invoke-the-garbage-collector" href="Invoking-the-garbage-collector.html#Invoking-the-garbage-collector">23.6 How to invoke the garbage collector</a></li>
+ <li><a name="toc-Troubleshooting-the-garbage-collector" href="Troubleshooting.html#Troubleshooting">23.7 Troubleshooting the garbage collector</a></li>
+ </ul></li>
+ <li><a name="toc-Plugins-1" href="Plugins.html#Plugins">24 Plugins</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Loading-Plugins" href="Plugins-loading.html#Plugins-loading">24.1 Loading Plugins</a></li>
+ <li><a name="toc-Plugin-API-1" href="Plugin-API.html#Plugin-API">24.2 Plugin API</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Plugin-license-check" href="Plugin-API.html#Plugin-license-check">24.2.1 Plugin license check</a></li>
+ <li><a name="toc-Plugin-initialization" href="Plugin-API.html#Plugin-initialization">24.2.2 Plugin initialization</a></li>
+ <li><a name="toc-Plugin-callbacks" href="Plugin-API.html#Plugin-callbacks">24.2.3 Plugin callbacks</a></li>
+ </ul></li>
+ <li><a name="toc-Interacting-with-the-pass-manager" href="Plugins-pass.html#Plugins-pass">24.3 Interacting with the pass manager</a></li>
+ <li><a name="toc-Interacting-with-the-GCC-Garbage-Collector" href="Plugins-GC.html#Plugins-GC">24.4 Interacting with the GCC Garbage Collector</a></li>
+ <li><a name="toc-Giving-information-about-a-plugin" href="Plugins-description.html#Plugins-description">24.5 Giving information about a plugin</a></li>
+ <li><a name="toc-Registering-custom-attributes-or-pragmas" href="Plugins-attr.html#Plugins-attr">24.6 Registering custom attributes or pragmas</a></li>
+ <li><a name="toc-Recording-information-about-pass-execution" href="Plugins-recording.html#Plugins-recording">24.7 Recording information about pass execution</a></li>
+ <li><a name="toc-Controlling-which-passes-are-being-run" href="Plugins-gate.html#Plugins-gate">24.8 Controlling which passes are being run</a></li>
+ <li><a name="toc-Keeping-track-of-available-passes" href="Plugins-tracking.html#Plugins-tracking">24.9 Keeping track of available passes</a></li>
+ <li><a name="toc-Building-GCC-plugins" href="Plugins-building.html#Plugins-building">24.10 Building GCC plugins</a></li>
+ </ul></li>
+ <li><a name="toc-Link-Time-Optimization" href="LTO.html#LTO">25 Link Time Optimization</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Design-Overview" href="LTO-Overview.html#LTO-Overview">25.1 Design Overview</a>
+ <ul class="no-bullet">
+ <li><a name="toc-LTO-modes-of-operation" href="LTO-Overview.html#LTO-modes-of-operation">25.1.1 LTO modes of operation</a></li>
+ </ul></li>
+ <li><a name="toc-LTO-file-sections" href="LTO-object-file-layout.html#LTO-object-file-layout">25.2 LTO file sections</a></li>
+ <li><a name="toc-Using-summary-information-in-IPA-passes" href="IPA.html#IPA">25.3 Using summary information in IPA passes</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Virtual-clones" href="IPA.html#Virtual-clones">25.3.1 Virtual clones</a></li>
+ <li><a name="toc-IPA-references" href="IPA.html#IPA-references">25.3.2 IPA references</a></li>
+ <li><a name="toc-Jump-functions" href="IPA.html#Jump-functions">25.3.3 Jump functions</a></li>
+ </ul></li>
+ <li><a name="toc-Whole-program-assumptions_002c-linker-plugin-and-symbol-visibilities" href="WHOPR.html#WHOPR">25.4 Whole program assumptions, linker plugin and symbol visibilities</a></li>
+ <li><a name="toc-Internal-flags-controlling-lto1" href="Internal-flags.html#Internal-flags">25.5 Internal flags controlling <code>lto1</code></a></li>
+ </ul></li>
+ <li><a name="toc-Match-and-Simplify-1" href="Match-and-Simplify.html#Match-and-Simplify">26 Match and Simplify</a>
+ <ul class="no-bullet">
+ <li><a name="toc-GIMPLE-API-1" href="GIMPLE-API.html#GIMPLE-API">26.1 GIMPLE API</a></li>
+ <li><a name="toc-The-Language-1" href="The-Language.html#The-Language">26.2 The Language</a></li>
+ </ul></li>
+ <li><a name="toc-Static-Analyzer-1" href="Static-Analyzer.html#Static-Analyzer">27 Static Analyzer</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Analyzer-Internals-1" href="Analyzer-Internals.html#Analyzer-Internals">27.1 Analyzer Internals</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Overview-2" href="Analyzer-Internals.html#Overview-2">27.1.1 Overview</a></li>
+ <li><a name="toc-Graphs" href="Analyzer-Internals.html#Graphs">27.1.2 Graphs</a></li>
+ <li><a name="toc-State-Tracking" href="Analyzer-Internals.html#State-Tracking">27.1.3 State Tracking</a></li>
+ <li><a name="toc-Region-Model" href="Analyzer-Internals.html#Region-Model">27.1.4 Region Model</a></li>
+ <li><a name="toc-Analyzer-Paths" href="Analyzer-Internals.html#Analyzer-Paths">27.1.5 Analyzer Paths</a></li>
+ <li><a name="toc-Limitations" href="Analyzer-Internals.html#Limitations">27.1.6 Limitations</a></li>
+ </ul></li>
+ <li><a name="toc-Debugging-the-Analyzer-1" href="Debugging-the-Analyzer.html#Debugging-the-Analyzer">27.2 Debugging the Analyzer</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Special-Functions-for-Debugging-the-Analyzer" href="Debugging-the-Analyzer.html#Special-Functions-for-Debugging-the-Analyzer">27.2.1 Special Functions for Debugging the Analyzer</a></li>
+ <li><a name="toc-Other-Debugging-Techniques" href="Debugging-the-Analyzer.html#Other-Debugging-Techniques">27.2.2 Other Debugging Techniques</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-User-Experience-Guidelines-1" href="User-Experience-Guidelines.html#User-Experience-Guidelines">28 User Experience Guidelines</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Guidelines-for-Diagnostics-1" href="Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics">28.1 Guidelines for Diagnostics</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Talk-in-terms-of-the-user_0027s-code" href="Guidelines-for-Diagnostics.html#Talk-in-terms-of-the-user_0027s-code">28.1.1 Talk in terms of the user&rsquo;s code</a></li>
+ <li><a name="toc-Diagnostics-are-actionable" href="Guidelines-for-Diagnostics.html#Diagnostics-are-actionable">28.1.2 Diagnostics are actionable</a></li>
+ <li><a name="toc-The-user_0027s-attention-is-important" href="Guidelines-for-Diagnostics.html#The-user_0027s-attention-is-important">28.1.3 The user&rsquo;s attention is important</a></li>
+ <li><a name="toc-Sometimes-the-user-didn_0027t-write-the-code" href="Guidelines-for-Diagnostics.html#Sometimes-the-user-didn_0027t-write-the-code">28.1.4 Sometimes the user didn&rsquo;t write the code</a></li>
+ <li><a name="toc-Precision-of-Wording" href="Guidelines-for-Diagnostics.html#Precision-of-Wording">28.1.5 Precision of Wording</a></li>
+ <li><a name="toc-Try-the-diagnostic-on-real_002dworld-code" href="Guidelines-for-Diagnostics.html#Try-the-diagnostic-on-real_002dworld-code">28.1.6 Try the diagnostic on real-world code</a></li>
+ <li><a name="toc-Make-mismatches-clear" href="Guidelines-for-Diagnostics.html#Make-mismatches-clear">28.1.7 Make mismatches clear</a></li>
+ <li><a name="toc-Location-Information" href="Guidelines-for-Diagnostics.html#Location-Information">28.1.8 Location Information</a></li>
+ <li><a name="toc-Coding-Conventions" href="Guidelines-for-Diagnostics.html#Coding-Conventions">28.1.9 Coding Conventions</a></li>
+ <li><a name="toc-Group-logically_002drelated-diagnostics" href="Guidelines-for-Diagnostics.html#Group-logically_002drelated-diagnostics">28.1.10 Group logically-related diagnostics</a></li>
+ <li><a name="toc-Quoting" href="Guidelines-for-Diagnostics.html#Quoting">28.1.11 Quoting</a></li>
+ <li><a name="toc-Spelling-and-Terminology" href="Guidelines-for-Diagnostics.html#Spelling-and-Terminology">28.1.12 Spelling and Terminology</a></li>
+ <li><a name="toc-Fix_002dit-hints" href="Guidelines-for-Diagnostics.html#Fix_002dit-hints">28.1.13 Fix-it hints</a>
+ <ul class="no-bullet">
+ <li><a name="toc-Fix_002dit-hints-should-work" href="Guidelines-for-Diagnostics.html#Fix_002dit-hints-should-work">28.1.13.1 Fix-it hints should work</a></li>
+ <li><a name="toc-Express-deletion-in-terms-of-deletion_002c-not-replacement" href="Guidelines-for-Diagnostics.html#Express-deletion-in-terms-of-deletion_002c-not-replacement">28.1.13.2 Express deletion in terms of deletion, not replacement</a></li>
+ <li><a name="toc-Multiple-suggestions" href="Guidelines-for-Diagnostics.html#Multiple-suggestions">28.1.13.3 Multiple suggestions</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a name="toc-Guidelines-for-Options-1" href="Guidelines-for-Options.html#Guidelines-for-Options">28.2 Guidelines for Options</a></li>
+ </ul></li>
+ <li><a name="toc-Funding-Free-Software" href="Funding.html#Funding">Funding Free Software</a></li>
+ <li><a name="toc-The-GNU-Project-and-GNU_002fLinux" href="GNU-Project.html#GNU-Project">The GNU Project and GNU/Linux</a></li>
+ <li><a name="toc-GNU-General-Public-License" href="Copying.html#Copying">GNU General Public License</a></li>
+ <li><a name="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>
+ <ul class="no-bullet">
+ <li><a name="toc-ADDENDUM_003a-How-to-use-this-License-for-your-documents" href="GNU-Free-Documentation-License.html#ADDENDUM_003a-How-to-use-this-License-for-your-documents">ADDENDUM: How to use this License for your documents</a></li>
+ </ul></li>
+ <li><a name="toc-Contributors-to-GCC" href="Contributors.html#Contributors">Contributors to GCC</a></li>
+ <li><a name="toc-Option-Index-1" href="Option-Index.html#Option-Index">Option Index</a></li>
+ <li><a name="toc-Concept-Index-1" href="Concept-Index.html#Concept-Index">Concept Index</a></li>
+</ul>
+</div>
+
+
+<a name="Top"></a>
+<div class="header">
+<p>
+Next: <a href="Contributing.html#Contributing" accesskey="n" rel="next">Contributing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Introduction"></a>
+<h1 class="top">Introduction</h1>
+<a name="index-introduction"></a>
+
+<p>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 the compilers
+(Arm GNU Toolchain 13.2.rel1 (Build arm-13.7))
+version 13.2.1. The use of the GNU compilers is documented in a
+separate manual. See <a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#Top">Introduction</a> in <cite>Using the GNU
+Compiler Collection (GCC)</cite>.
+</p>
+<p>This manual is mainly a reference manual rather than a tutorial. It
+discusses how to contribute to GCC (see <a href="Contributing.html#Contributing">Contributing</a>), the
+characteristics of the machines supported by GCC as hosts and targets
+(see <a href="Portability.html#Portability">Portability</a>), how GCC relates to the ABIs on such systems
+(see <a href="Interface.html#Interface">Interface</a>), and the characteristics of the languages for
+which GCC front ends are written (see <a href="Languages.html#Languages">Languages</a>). It then
+describes the GCC source tree structure and build system, some of the
+interfaces to GCC front ends, and how support for a target system is
+implemented in GCC.
+</p>
+<p>Additional tutorial information is linked to from
+<a href="https://gcc.gnu.org/readings.html">https://gcc.gnu.org/readings.html</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Contributing.html#Contributing" accesskey="1">Contributing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to contribute to testing and developing GCC.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Portability.html#Portability" accesskey="2">Portability</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Goals of GCC&rsquo;s portability features.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Interface.html#Interface" accesskey="3">Interface</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Function-call interface of GCC output.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Libgcc.html#Libgcc" accesskey="4">Libgcc</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Low-level runtime library used by GCC.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Languages.html#Languages" accesskey="5">Languages</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Languages for which GCC front ends are written.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Source-Tree.html#Source-Tree" accesskey="6">Source Tree</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GCC source tree structure and build system.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Testsuites.html#Testsuites" accesskey="7">Testsuites</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GCC testsuites.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Options.html#Options" accesskey="8">Options</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Option specification files.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Passes.html#Passes" accesskey="9">Passes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Order of passes, what they do, and what each file is for.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="poly_005fint.html#poly_005fint">poly_int</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representation of runtime sizes and offsets.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GENERIC.html#GENERIC">GENERIC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Language-independent representation generated by Front Ends
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GIMPLE.html#GIMPLE">GIMPLE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Tuple representation used by Tree SSA optimizers
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Tree-SSA.html#Tree-SSA">Tree SSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Analysis and optimization of GIMPLE
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="RTL.html#RTL">RTL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Machine-dependent low-level intermediate representation.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Control-Flow.html#Control-Flow">Control Flow</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Maintaining and manipulating the control flow graph.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation">Loop Analysis and Representation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Analysis and representation of loops
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Machine-Desc.html#Machine-Desc">Machine Desc</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to write machine description instruction patterns.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Target-Macros.html#Target-Macros">Target Macros</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to write the machine description C macros and functions.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Host-Config.html#Host-Config">Host Config</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the <samp>xm-<var>machine</var>.h</samp> file.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Fragments.html#Fragments">Fragments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the <samp>t-<var>target</var></samp> and <samp>x-<var>host</var></samp> files.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Collect2.html#Collect2">Collect2</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How <code>collect2</code> works; how it finds <code>ld</code>.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Header-Dirs.html#Header-Dirs">Header Dirs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Understanding the standard header file directories.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Type-Information.html#Type-Information">Type Information</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GCC&rsquo;s memory management; generating type information.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Plugins.html#Plugins">Plugins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Extending the compiler with plugins.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="LTO.html#LTO">LTO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using Link-Time Optimization.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Match-and-Simplify.html#Match-and-Simplify">Match and Simplify</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to write expression simplification patterns for GIMPLE and GENERIC
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Static-Analyzer.html#Static-Analyzer">Static Analyzer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Working with the static analyzer.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="User-Experience-Guidelines.html#User-Experience-Guidelines">User Experience Guidelines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Guidelines for implementing diagnostics and options.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Funding.html#Funding">Funding</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to help assure funding for free software.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GNU-Project.html#GNU-Project">GNU Project</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The GNU Project and GNU/Linux.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Copying.html#Copying">Copying</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GNU General Public License says
+ how you can copy and share GCC.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How you can copy and share this manual.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Contributors.html#Contributors">Contributors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">People who have contributed to GCC.
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Option-Index.html#Option-Index">Option Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index to command line options.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Concept-Index.html#Concept-Index">Concept Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of concepts and symbol names.
+</td></tr>
+</table>
+
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Contributing.html#Contributing" accesskey="n" rel="next">Contributing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/input_005flocation_005fexample.html b/share/doc/gccint/input_005flocation_005fexample.html
new file mode 100644
index 0000000..36a64d9
--- /dev/null
+++ b/share/doc/gccint/input_005flocation_005fexample.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: input_location_example</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: input_location_example">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: input_location_example">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Guidelines-for-Diagnostics.html#input_005flocation_005fexample">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Guidelines-for-Diagnostics.html#input_005flocation_005fexample">input_location_example</a>.</p>
+</body>
diff --git a/share/doc/gccint/loop_002div.html b/share/doc/gccint/loop_002div.html
new file mode 100644
index 0000000..735c4d3
--- /dev/null
+++ b/share/doc/gccint/loop_002div.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: loop-iv</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: loop-iv">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: loop-iv">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" rel="up" title="Loop Analysis and Representation">
+<link href="Number-of-iterations.html#Number-of-iterations" rel="next" title="Number of iterations">
+<link href="Scalar-evolutions.html#Scalar-evolutions" rel="previous" title="Scalar evolutions">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="loop_002div"></a>
+<div class="header">
+<p>
+Next: <a href="Number-of-iterations.html#Number-of-iterations" accesskey="n" rel="next">Number of iterations</a>, Previous: <a href="Scalar-evolutions.html#Scalar-evolutions" accesskey="p" rel="previous">Scalar evolutions</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="IV-analysis-on-RTL"></a>
+<h3 class="section">16.6 IV analysis on RTL</h3>
+<a name="index-IV-analysis-on-RTL"></a>
+
+<p>The induction variable on RTL is simple and only allows analysis of
+affine induction variables, and only in one loop at once. The interface
+is declared in <samp>cfgloop.h</samp>. Before analyzing induction variables
+in a loop L, <code>iv_analysis_loop_init</code> function must be called on L.
+After the analysis (possibly calling <code>iv_analysis_loop_init</code> for
+several loops) is finished, <code>iv_analysis_done</code> should be called.
+The following functions can be used to access the results of the
+analysis:
+</p>
+<ul>
+<li> <code>iv_analyze</code>: Analyzes a single register used in the given
+insn. If no use of the register in this insn is found, the following
+insns are scanned, so that this function can be called on the insn
+returned by get_condition.
+</li><li> <code>iv_analyze_result</code>: Analyzes result of the assignment in the
+given insn.
+</li><li> <code>iv_analyze_expr</code>: Analyzes a more complicated expression.
+All its operands are analyzed by <code>iv_analyze</code>, and hence they must
+be used in the specified insn or one of the following insns.
+</li></ul>
+
+<p>The description of the induction variable is provided in <code>struct
+rtx_iv</code>. In order to handle subregs, the representation is a bit
+complicated; if the value of the <code>extend</code> field is not
+<code>UNKNOWN</code>, the value of the induction variable in the i-th
+iteration is
+</p>
+<div class="smallexample">
+<pre class="smallexample">delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)),
+</pre></div>
+
+<p>with the following exception: if <code>first_special</code> is true, then the
+value in the first iteration (when <code>i</code> is zero) is <code>delta +
+mult * base</code>. However, if <code>extend</code> is equal to <code>UNKNOWN</code>,
+then <code>first_special</code> must be false, <code>delta</code> 0, <code>mult</code> 1
+and the value in the i-th iteration is
+</p>
+<div class="smallexample">
+<pre class="smallexample">subreg_{mode} (base + i * step)
+</pre></div>
+
+<p>The function <code>get_iv_value</code> can be used to perform these
+calculations.
+</p>
+<hr>
+<div class="header">
+<p>
+Next: <a href="Number-of-iterations.html#Number-of-iterations" accesskey="n" rel="next">Number of iterations</a>, Previous: <a href="Scalar-evolutions.html#Scalar-evolutions" accesskey="p" rel="previous">Scalar evolutions</a>, Up: <a href="Loop-Analysis-and-Representation.html#Loop-Analysis-and-Representation" accesskey="u" rel="up">Loop Analysis and Representation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/poly_005fint.html b/share/doc/gccint/poly_005fint.html
new file mode 100644
index 0000000..bfdba80
--- /dev/null
+++ b/share/doc/gccint/poly_005fint.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: poly_int</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: poly_int">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: poly_int">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html#Top" rel="up" title="Top">
+<link href="Overview-of-poly_005fint.html#Overview-of-poly_005fint" rel="next" title="Overview of poly_int">
+<link href="Dump-examples.html#Dump-examples" rel="previous" title="Dump examples">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="poly_005fint"></a>
+<div class="header">
+<p>
+Next: <a href="GENERIC.html#GENERIC" accesskey="n" rel="next">GENERIC</a>, Previous: <a href="Passes.html#Passes" accesskey="p" rel="previous">Passes</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Sizes-and-offsets-as-runtime-invariants"></a>
+<h2 class="chapter">10 Sizes and offsets as runtime invariants</h2>
+<a name="index-polynomial-integers"></a>
+<a name="index-poly_005fint"></a>
+
+<p>GCC allows the size of a hardware register to be a runtime invariant
+rather than a compile-time constant. This in turn means that various
+sizes and offsets must also be runtime invariants rather than
+compile-time constants, such as:
+</p>
+<ul>
+<li> the size of a general <code>machine_mode</code> (see <a href="Machine-Modes.html#Machine-Modes">Machine Modes</a>);
+
+</li><li> the size of a spill slot;
+
+</li><li> the offset of something within a stack frame;
+
+</li><li> the number of elements in a vector;
+
+</li><li> the size and offset of a <code>mem</code> rtx (see <a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a>); and
+
+</li><li> the byte offset in a <code>subreg</code> rtx (see <a href="Regs-and-Memory.html#Regs-and-Memory">Regs and Memory</a>).
+</li></ul>
+
+<p>The motivating example is the Arm SVE ISA, whose vector registers can be
+any multiple of 128 bits between 128 and 2048 inclusive. The compiler
+normally produces code that works for all SVE register sizes, with the
+actual size only being known at runtime.
+</p>
+<p>GCC&rsquo;s main representation of such runtime invariants is the
+<code>poly_int</code> class. This chapter describes what <code>poly_int</code>
+does, lists the available operations, and gives some general
+usage guidelines.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Overview-of-poly_005fint.html#Overview-of-poly_005fint" accesskey="1">Overview of <code>poly_int</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Consequences-of-using-poly_005fint.html#Consequences-of-using-poly_005fint" accesskey="2">Consequences of using <code>poly_int</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Comparisons-involving-poly_005fint.html#Comparisons-involving-poly_005fint" accesskey="3">Comparisons involving <code>poly_int</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="4">Arithmetic on <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Alignment-of-poly_005fints.html#Alignment-of-poly_005fints" accesskey="5">Alignment of <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Computing-bounds-on-poly_005fints.html#Computing-bounds-on-poly_005fints" accesskey="6">Computing bounds on <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Converting-poly_005fints.html#Converting-poly_005fints" accesskey="7">Converting <code>poly_int</code>s</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Miscellaneous-poly_005fint-routines.html#Miscellaneous-poly_005fint-routines" accesskey="8">Miscellaneous <code>poly_int</code> routines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Guidelines-for-using-poly_005fint.html#Guidelines-for-using-poly_005fint" accesskey="9">Guidelines for using <code>poly_int</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="GENERIC.html#GENERIC" accesskey="n" rel="next">GENERIC</a>, Previous: <a href="Passes.html#Passes" accesskey="p" rel="previous">Passes</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/profopt-Testing.html b/share/doc/gccint/profopt-Testing.html
new file mode 100644
index 0000000..c2767a3
--- /dev/null
+++ b/share/doc/gccint/profopt-Testing.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: profopt Testing</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: profopt Testing">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: profopt Testing">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Testsuites.html#Testsuites" rel="up" title="Testsuites">
+<link href="compat-Testing.html#compat-Testing" rel="next" title="compat Testing">
+<link href="gcov-Testing.html#gcov-Testing" rel="previous" title="gcov Testing">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="profopt-Testing"></a>
+<div class="header">
+<p>
+Next: <a href="compat-Testing.html#compat-Testing" accesskey="n" rel="next">compat Testing</a>, Previous: <a href="gcov-Testing.html#gcov-Testing" accesskey="p" rel="previous">gcov Testing</a>, Up: <a href="Testsuites.html#Testsuites" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Support-for-testing-profile_002ddirected-optimizations"></a>
+<h3 class="section">7.7 Support for testing profile-directed optimizations</h3>
+
+<p>The file <samp>profopt.exp</samp> provides language-independent support for
+checking correct execution of a test built with profile-directed
+optimization. This testing requires that a test program be built and
+executed twice. The first time it is compiled to generate profile
+data, and the second time it is compiled to use the data that was
+generated during the first execution. The second execution is to
+verify that the test produces the expected results.
+</p>
+<p>To check that the optimization actually generated better code, a
+test can be built and run a third time with normal optimizations to
+verify that the performance is better with the profile-directed
+optimizations. <samp>profopt.exp</samp> has the beginnings of this kind
+of support.
+</p>
+<p><samp>profopt.exp</samp> provides generic support for profile-directed
+optimizations. Each set of tests that uses it provides information
+about a specific optimization:
+</p>
+<dl compact="compact">
+<dt><code>tool</code></dt>
+<dd><p>tool being tested, e.g., <code>gcc</code>
+</p>
+</dd>
+<dt><code>profile_option</code></dt>
+<dd><p>options used to generate profile data
+</p>
+</dd>
+<dt><code>feedback_option</code></dt>
+<dd><p>options used to optimize using that profile data
+</p>
+</dd>
+<dt><code>prof_ext</code></dt>
+<dd><p>suffix of profile data files
+</p>
+</dd>
+<dt><code>PROFOPT_OPTIONS</code></dt>
+<dd><p>list of options with which to run each test, similar to the lists for
+torture tests
+</p>
+</dd>
+<dt><code>{ dg-final-generate { <var>local-directive</var> } }</code></dt>
+<dd><p>This directive is similar to <code>dg-final</code>, but the
+<var>local-directive</var> is run after the generation of profile data.
+</p>
+</dd>
+<dt><code>{ dg-final-use { <var>local-directive</var> } }</code></dt>
+<dd><p>The <var>local-directive</var> is run after the profile data have been
+used.
+</p></dd>
+</dl>
+
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/prologue-instruction-pattern.html b/share/doc/gccint/prologue-instruction-pattern.html
new file mode 100644
index 0000000..6476097
--- /dev/null
+++ b/share/doc/gccint/prologue-instruction-pattern.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: prologue instruction pattern</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: prologue instruction pattern">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: prologue instruction pattern">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Standard-Names.html#prologue-instruction-pattern">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Standard-Names.html#prologue-instruction-pattern">prologue instruction pattern</a>.</p>
+</body>
diff --git a/share/doc/gccint/real-RTL-SSA-insns.html b/share/doc/gccint/real-RTL-SSA-insns.html
new file mode 100644
index 0000000..ae15f08
--- /dev/null
+++ b/share/doc/gccint/real-RTL-SSA-insns.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: real RTL SSA insns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: real RTL SSA insns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: real RTL SSA insns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=RTL-SSA-Basic-Blocks.html#real-RTL-SSA-insns">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="RTL-SSA-Basic-Blocks.html#real-RTL-SSA-insns">real RTL SSA insns</a>.</p>
+</body>
diff --git a/share/doc/gccint/shift-patterns.html b/share/doc/gccint/shift-patterns.html
new file mode 100644
index 0000000..d45efcd
--- /dev/null
+++ b/share/doc/gccint/shift-patterns.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: shift patterns</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: shift patterns">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: shift patterns">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Standard-Names.html#shift-patterns">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Standard-Names.html#shift-patterns">shift patterns</a>.</p>
+</body>
diff --git a/share/doc/gccint/stack_005fsize_005fao.html b/share/doc/gccint/stack_005fsize_005fao.html
new file mode 100644
index 0000000..c8bcdcb
--- /dev/null
+++ b/share/doc/gccint/stack_005fsize_005fao.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: stack_size_ao</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: stack_size_ao">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: stack_size_ao">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Add-Options.html#stack_005fsize_005fao">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Add-Options.html#stack_005fsize_005fao">stack_size_ao</a>.</p>
+</body>
diff --git a/share/doc/gccint/stack_005fsize_005fet.html b/share/doc/gccint/stack_005fsize_005fet.html
new file mode 100644
index 0000000..3d84721
--- /dev/null
+++ b/share/doc/gccint/stack_005fsize_005fet.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: stack_size_et</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: stack_size_et">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: stack_size_et">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Effective_002dTarget-Keywords.html#stack_005fsize_005fet">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Effective_002dTarget-Keywords.html#stack_005fsize_005fet">stack_size_et</a>.</p>
+</body>
diff --git a/share/doc/gccint/wi-arithmetic-on-poly_005fints.html b/share/doc/gccint/wi-arithmetic-on-poly_005fints.html
new file mode 100644
index 0000000..0659d58
--- /dev/null
+++ b/share/doc/gccint/wi-arithmetic-on-poly_005fints.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: wi arithmetic on poly_ints</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: wi arithmetic on poly_ints">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: wi arithmetic on poly_ints">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" rel="up" title="Arithmetic on poly_ints">
+<link href="Division-of-poly_005fints.html#Division-of-poly_005fints" rel="next" title="Division of poly_ints">
+<link href="Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html#Using-poly_005fint-with-C_002b_002b-arithmetic-operators" rel="previous" title="Using poly_int with C++ arithmetic operators">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a name="wi-arithmetic-on-poly_005fints"></a>
+<div class="header">
+<p>
+Next: <a href="Division-of-poly_005fints.html#Division-of-poly_005fints" accesskey="n" rel="next">Division of <code>poly_int</code>s</a>, Previous: <a href="Using-poly_005fint-with-C_002b_002b-arithmetic-operators.html#Using-poly_005fint-with-C_002b_002b-arithmetic-operators" accesskey="p" rel="previous">Using <code>poly_int</code> with C++ arithmetic operators</a>, Up: <a href="Arithmetic-on-poly_005fints.html#Arithmetic-on-poly_005fints" accesskey="u" rel="up">Arithmetic on <code>poly_int</code>s</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="wi-arithmetic-on-poly_005fints-1"></a>
+<h4 class="subsection">10.4.2 <code>wi</code> arithmetic on <code>poly_int</code>s</h4>
+
+<p>As well as the C++ operators, <code>poly_int</code> supports the following
+<code>wi</code> routines:
+</p>
+<div class="smallexample">
+<pre class="smallexample">wi::neg (<var>p1</var>, &amp;<var>overflow</var>)
+
+wi::add (<var>p1</var>, <var>p2</var>)
+wi::add (<var>p1</var>, <var>c2</var>)
+wi::add (<var>c1</var>, <var>p1</var>)
+wi::add (<var>p1</var>, <var>p2</var>, <var>sign</var>, &amp;<var>overflow</var>)
+
+wi::sub (<var>p1</var>, <var>p2</var>)
+wi::sub (<var>p1</var>, <var>c2</var>)
+wi::sub (<var>c1</var>, <var>p1</var>)
+wi::sub (<var>p1</var>, <var>p2</var>, <var>sign</var>, &amp;<var>overflow</var>)
+
+wi::mul (<var>p1</var>, <var>c2</var>)
+wi::mul (<var>c1</var>, <var>p1</var>)
+wi::mul (<var>p1</var>, <var>c2</var>, <var>sign</var>, &amp;<var>overflow</var>)
+
+wi::lshift (<var>p1</var>, <var>c2</var>)
+</pre></div>
+
+<p>These routines just check whether overflow occurs on any individual
+coefficient; it is not possible to know at compile time whether the
+final runtime value would overflow.
+</p>
+
+
+
+</body>
+</html>
diff --git a/share/doc/gccint/window_005fsave-instruction-pattern.html b/share/doc/gccint/window_005fsave-instruction-pattern.html
new file mode 100644
index 0000000..fb6b183
--- /dev/null
+++ b/share/doc/gccint/window_005fsave-instruction-pattern.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The FSF's Front-Cover Text is:
+
+A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development. -->
+<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: window_save instruction pattern</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: window_save instruction pattern">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: window_save instruction pattern">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style:oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+<meta http-equiv="Refresh" content="0; url=Standard-Names.html#window_005fsave-instruction-pattern">
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<p>The node you are looking for is at <a href="Standard-Names.html#window_005fsave-instruction-pattern">window_save instruction pattern</a>.</p>
+</body>