Home

Condensed overview

image

Contents

1. Base offset associated to aggregate refs Memory symbols Tracking of memory addresses by propagating values through registers Each pass is responsible for querying the alias system with pairs of addresses November 27 2007 GCC Internals 55 Alias analysis in RTL Problems Google Big impedance between GIMPLE and RTL Nollittle information transfer Producers and consumers use different models GIMPLE gt explicit representation in IL RIL gt query based disambiguation 2 Work underway to resolve this mismatch Results of alias analysis exported from GIMPLE Adapt explicit representation to query system November 27 2007 GCC Internals 56 3 Internal architecture cose gt Compiler pipeline gt Intermediate representations gt Control data structures gt Alias analysis gt Code generation November 27 2007 GCC Internals 57 SSA Form Google Static Single Assignment SSA we Versioning representation to expose data flow explicitly Assignments generate new med m versions of symbols M ga AK KA 4 2 3 i E Be 4 Convergence of multiple versions n generates new one functions TE 6 3 b b 7 4 2 ie N b November 27 2007 GCC Internals 58 SSA Form Google Rewriting or standard SSA form Used for real operands Different names for the same symbol are disti
2. Stage 2 compiler builds Stage 3 compiler Stage 2 and Stage 3 compilers must be binary identical November 27 2007 GCC Internals 22 Common configuration options Google prefix Installation root directory enable languages Comma separated list of language front ends to build Possible values ada CyCrtry fortran JEV OBJE OGJ CETT trea lang Default values Gg tt Lore rn 1 701 06 1c November 27 2007 GCC Internals 23 Common configuration options Google disable bootstrap Build stage 1 compiler only target Specify target architecture for building a cross compiler Target specification form is roughly cpu manufacturer os cpu manufacturer kernel os e g x86 64 unknown linux gnu arm unknown elf All possible values in lt src gt config sub November 27 2007 GCC Internals 24 Common configuration options Google enable checking list Perform compile time consistency checks List of checks assert fold gc gcac misc rtl rtlflag runtime tree valgrind Global values yes gt assert misc tree gc rtlflag runtime no gt Same as disable checking release gt Cheap checks assert runtime 2 gt Everything except valgrind SLOW November 27 2007 GCC Internals 25 Common build options Google j N Usually scales up to 1 5x to 2x number of processors all Default make target Knows whether to bootstrap or not install
3. Use src trunk contrib compare tests to compare individual sum files S cd bld gcc testsuite gcc compare tests bld pristine gcc testsuite gcc gcc sum gcc sum Tests that now fail but worked before gcc c torture compile 20000403 2 c Os test for excess errors Tests that now work but didn t before gcc c torture compile 20000120 2 c 00 test for excess errors gcc c torture compile 20000405 2 c Os test for excess errors November 27 2007 GCC Internals 30 gt Source tree organization gt Configure build test November 27 2007 GCC Internals 31 Patch submission Google Non trivial contributions require copyright assignment Code should follow the GNU coding conventions http www gnu org prep standards toc html http gcc gnu org codingconventions html 2 Submission should include ChangeLog describing what changed not how nor why Test case if applicable Patch itself generated with svn diff context or unified November 27 2007 GCC Internals 32 Patch submission Google When testing a patch 1 Disable bootstrap 2 Build C front end only 1 4 not strictly i i __w necessary but 3 Run regression testsuite di recommended 4 Once all failures have been fixed Enable all languages Run regression testsuite again 5 Enable bootstrap 6 Run regression testsuite Patches are only accepted after 5 and 6 work on 1 major platform
4. 600 000 N 400 000 200 000 0 LOC libstdc Java Google OpenMP Eclipse parser Objective C p 4 N Y I Tree SSA Fortran 95 gt Total Runtime Front Ends 4 IM Compiler Ports 1 21 1988 1 38 1990 2 0 2 6 1 1992 1998 EGCS 2 95 1998 3 0 3 1 4 0 4 1 4 2 1999 2001 2002 2005 2006 2007 Releases 4 3 2008 generated using David A Wheeler s SLOCCount November 27 2007 GCC Internals 11 1 Overview Google gt Major features gt Brief history November 27 2007 GCC Internals 12 Development Model Google 2 Project organization Steering Committee gt Administrative political Release Manager gt Release coordination Maintainers 2 Design implementation Three main stages 2 months each Stage 1 gt Big disruptive changes Stage 2 gt Stabilization minor features Stage 3 gt Bug fixes only bugzilla November 27 2007 GCC Internals 13 Development Model Google Major development is done in branches Design implementation discussion on public lists Frequent merges from mainline Final contribution into mainline only at stage 1 and approved by maintainers Anyone with SVN write access may create a development branch 2 Vendors create own branc
5. Not necessary but useful to test installed compiler Set LD LIBRARY PATH afterward check Use with k to prevent stopping when some tests fail November 27 2007 GCC Internals 26 Build results Google Staged compiler binaries lt bld gt stagel gcec intl libcpp libdecnumber libiberty lt bld gt prev gcec intl libcpp libdecnumber libiberty lt bld gt gcc intl libcpp libdecnumber libiberty Runtime libraries are not staged except 1ibgcc lt bld gt lt target triplet gt lib Testsuite results lt bld gt gcc testsuite f log sum lt bld gt lt target triplet gt lib testsuite log sum November 27 2007 GCC Internals 27 Build results Google Compiler is split in several binaries bld goc67xgo6o Main driver piety OOo C compiler sbid oce cclp plus C compiler ble SEC el Java compiler blade oeces T951 Fortran compiler lt bld gt gcc gnatl Ada compiler Main driver forks one of the 1 binaries pld gcc xgcc v shows what compiler is used November 27 2007 GCC Internals 28 Analyzing test results Google The best way is to have two trees built pristine pristine patch e Pristine tree can be recreated with o Co a trunk trunk pristine S cd trunk pristine 5 svn revert R Configure and build both compilers with the exact same flags November 27 2007 GCC Internals 29 Analyzing test results Google
6. 37 gt Compiler pipeline gt Intermediate representations gt CFG statements operands gt Alias analysis gt SSA forms gt Code generation November 27 200 GCC Internals 38 GENERIC and GIMPLE Google GENERIC is a common representation shared by all front ends Parsers may build their own representation for convenience Once parsing is complete they emit GENERIC GIMPLE is a simplified version of GENERIC 3 address representation Restricted grammar to facilitate the job of optimizers November 27 2007 GCC Internals 39 GENERIC and GIMPLE GENERIC 1f foo a b c c bt a endif return Cc November 27 2007 High GIMPLE tl a b t2 foo tl Cc if t2 0 t3 b b b 1 c t3 a endif return Cc Google Low GIMPLE tl a b t2 foo tl if t2 0 lt L1 L2 gt L1 t3 b b b 1 c t3 a goto L3 L2 L3 return GCC Internals 40 RTL Google Register Transfer Language assembler for an abstract machine with infinite registers It represents low level features Register classes Memory addressing modes Word sizes and types Compare and branch instructions Calling conventions Bitfield operations Type and sign conversions November 27 2007 GCC Internals 41 RTL Google b a l set reg v SI 59 b plus SI reg v SI 60 a const int 1 Oxffffffff gt It is commonly repre
7. d ne Ir epdsscpesrILaglep Leg za E ipa e details stats blocks a a11 enables all flags Possible values taken from array dump_options inline ACE allas combine i e a11 to enable all dumps e Possible values taken from name field in struct tree opt pass November 27 2007 GCC Internals 76 Debugging dumps Google Adding dumps to your pass Specify a name for the dump in struct tree opt pass To request a dump at the end of the pass add TODO dump func INtodo_flags_finish field gt To emit debugging information during the pass Variable dump file is set if dumps are enabled Variable dump flags is a bitmask that specifies what flags were selected Some common useful flags TDF DETAILS SDE STATS November 27 2007 GCC Internals 77 Using gdb Google Never debug the gcc binary that is only the driver The real compiler is one of cc1 jc1 951 bld bin gcc 02 v save temps c a c Using built in specs Target x86 64 unknown linux gnu Configured with szw End of search list lt path gt ccl fpreprocessed a i quiet dumpbase a c mtune generic auxbase a 02 version o a s S gdb args lt path gt ccl fpreprocessed a i quiet dumpbase a c mtune generic auxbase a O2 version o a s November 27 2007 GCC Internals 78 Using gdb Google The build directory contains a gdbinit file with many useful wrappers around debugging func
8. more than one sometimes November 27 2007 GCC Internals 33 KV l ABBA Z IA NZIII IN gt ntermediate representations gt CFG statements operands gt Alias analysis gt SSA forms gt Code generation November27 2007 GCC Internals 34 Compiler pipeline m en omm November 27 2007 Front End Middle End Back End Inter RTL Procedural CINE Optimizer Y Y SSA Final Code Optimizer Generation Call Graph Manager ZN Pass Manager Google Zi GCC Internals 35 SSA Optimizers Google Operate on GIMPLE Around 100 passes Vectorization Various loop optimizations Traditional scalar optimizations CCP DCE DSE FRE PRE VRP SRA jump threading forward propagation Field sensitive points to alias analysis Pointer checking instrumentation for C C Interprocedural analysis and optimizations CCP inlining points to analysis pure const and type escape analysis November 27 2007 GCC Internals 36 RTL Optimizers Google Around 70 passes Operate closer to the target Register allocation Scheduling Software pipelining Common subexpression elimination Instruction recombination Mode switching reduction Peephole optimizations Machine specific reorganization November 27 2007 GCC Internals
9. 007 GCC Internals 86 Incremental Compilation Google 2 Speed up edit compile debug cycle 2 Speeds up ordinary compiles by compiling a given header file once Incremental changes fed to compiler daemon Incremental linking as well Side effects Refactoring Cross referencing Compile while you type e g Eclipse November 27 2007 GCC Internals 87 Dynamic Optimization Pipeline Google Phase ordering not optimal for every case Current static ordering difficult to change Allow external re ordering Ultimate control Allow experimenting with different orderings Define On based on common orderings Problems Probability of finding bugs increases Enormous search space November 27 2007 GCC Internals 88 Contacts Home page Wiki Mailing lists 2 IRC November 27 2007 Google http gcc gnu org http gcc gnu org wiki gcc gcc gnu org gcc patches gcc gnu org irc oft net gcc GCC Internals 89
10. GCC Internals Google Diego Novillo dnovillo google com November 2007 Outline Google 1 Overview Features history development model 2 Source code organization Files building patch submission 3 Internal architecture Pipeline representations data structures alias analysis data flow code generation 4 Passes Adding debugging Internal information valid for GCC mainline as of 2007 11 20 November 27 2007 GCC Internals 2 Overview cw gt Brief history gt Development model November 27 2007 GCC Internals 3 Major Features Google Availability Free software GPL Open and distributed development process System compiler for popular UNIX variants Large number of platforms deeply embedded to big iron Supports all major languages C C Java Fortran 95 Ada Objective C Objective C etc November 27 2007 GCC Internals 4 Major Features Google Code quality Bootstraps on native platforms Warning free Extensive regression testsuite Widely deployed in industrial and research projects Merit based maintainership appointed by steering committee Peer review by maintainers Strict coding standards and patch reversion policy November 27 2007 GCC Internals 5 Major Features Google Analysis Optimization SSA based high level global optimizer Constraint based points to alias analysis Data dependency ana
11. Protection runtime Pointer memory check runtime Decimal arithmetic library GCC Internals 18 Source code SETE lt November 27 2007 gt gcc ada config Cp m gt doc m fortran gt ginclude java obje objcp po testsuite treelang Google Core compiler and C front end Ada front end Architecture specific codegen ports C front end User manual and internal documentation Fortran front end System headers mainly freestanding support Java front end Objective C front end Objective C front end Portable object files for 118N Regression tests Toy language front end GCC Internals 19 Core compiler files lt src gt gcc Google Alias analysis Build support C front end 2 CFG and callgraph Code generation Diagnostics Driver November 27 2007 Profiling Internal data structures Mudflap OpenMP Option handling RTL optimizations Tree SSA optimizations GCC Internals 20 2 Source code Google gt Source tree organization Patch submission November 27 2007 GCC Internals 21 Configuring and Building Google gt svi Go SvU t goc onu org svn gcoco truuk S mkdir bld amp amp cd bld trunk configure prefix pwd S make all install 2 Bootstrap is a 3 stage process Stage 0 host compiler builds Stage 1 compiler Stage 1 compiler builds Stage 2 compiler
12. emplate set attr length 4 m m 5 Attributes associated set attr type int with this pattern optional November 27 2007 GCC Internals 65 Code generation Google defines inon adds Named patterns Used to generate RTL Some standard names are used by code generator Some missing standard names are replaced with library calls e g divsi3 for targets with no division operation Some pattern names are mandatory e g move operations gt Unnamed anonymous patterns do not generate RTL but can be used in insn combination November 27 2007 GCC Internals 66 Code generation Google set match_operand SI 0 integer_register_operand d d plus SI match_operand SI 1 integer_register_operand d m match operand SI 2 gpr_or_int12_operand dNOPQ m N A Matching uses Machine mode SI DI HI SF etc Predicate a C function Both operands and operators can be matched Constraints provide second level of matching Select best operand among the set of allowed operands Letters describe kinds of operands Multiple alternatives separated by commas November 27 2007 GCC Internals 67 Code generation Google adudelz ely 92 olo u Code is generated by emitting strings of target assembly Operands in the insn pattern are replaced in the n placeholders If constraints list multiple alternatives multiple output strings must be used Ou
13. g 2 Superblock scheduling Improvements to swing modulo scheduling November 27 2007 GCC Internals 83 Register Allocation Google 2 Several efforts over the years Complex problem Many different targets to handle Interactions with reload and scheduling YARA Yet Another Register Allocator Experimented with several algorithms IRA Integrated Register Allocator Priority coloring Chaitin Briggs and region based Expected in 4 4 Currently works on x86 x86 64 ppc IA64 sparc s390 November 27 2007 GCC Internals 84 Register pressure reduction Google 2 SSA may cause excessive register pressure Pathological cases gt 800 live registers RA battle lost before it begins 2 Short term project to cope with RA deficiencies Implement register pressure reduction in GIMPLE before going to RTL Pre spilling combined with live range splitting Load rematerialization Tie RTL generation into out of ssa to allow better instruction selection for spills and rematerialization November 27 2007 GCC Internals 85 Dynamic compilation Google Delay compilation until runtime JIT Emit bytecodes Implement virtual machine with optimizing transformations Leverage on existing infrastructure LLVM LTO Not appropriate for every case Challenges Still active research Different models costs for static and dynamic compilers November 27 2
14. hes from FSF release branches November 27 2007 GCC Internals 14 Development Model Google gt All contributors must sign FSF copyright release Even when working on branches Three levels of access Snapshots weekly Anonymous SVN Read write SVN Two main discussion lists gcc gcc gnu org gcc patches gcc gnu org November 27 2007 GCC Internals 15 2 Source code X cow gt Configure build test Patch submission November 27 2007 GCC Internals 16 Source code Google Getting the code for mainline or trunk gt avn co Svni Zgecgnu ortdg svu gco rtrunk Build requirements http gcc gnu org install ISO C90 compiler GMP library MPFR library GNAT only if building Ada u precision floating point libraries 2 Source code includes runtimes for all languages and extensive regression testsuite November 27 2007 GCC Internals 17 Source code gt gcc libgcc libcpp gt libada rc I1bDSLPOCTLP v3 gt libgfortran libobjc SERIEM boehm gc libffi libjava zlib xd libiberty gt libgomp libssp ibmudflap libdecnumber November 27 2007 Google Front middle back ends Internal library for missing target features Pre processor Ada runtime C runtime Fortran runtime Objective C runtime Java runtime Utility functions and generic data structures OpenMP runtime Stack Smash
15. lysis based on chains of recurrences Feedback directed optimization Inter procedural optimization Automatic pointer checking instrumentation Automatic loop vectorization OpenMP support November 27 2007 GCC Internals 6 Overview gt Major features gt Development model November 27 2007 GCC Internals 7 Brief History Google GCC 1 1987 Inspired on Pastel compiler Lawrence Livermore Labs Only C Translation done one statement at a time GCC 2 1992 Added C Added RISC architecture support Closed development model challenged New features difficult to add November 27 2007 GCC Internals 8 Brief History Google EGCS 1997 Fork from GCC 2 x Many new features Java Chill numerous embedded ports new scheduler new optimizations integrated libstdc GCC 2 95 1999 EGCS and GCC2 merge into GCC Type based alias analysis Chill front end ISO C99 support November 27 2007 GCC Internals 9 Brief History Google GCC 3 2001 Integrated libjava Experimental SSA form on RTL Functions as trees GCC 4 2005 Internal architecture overhaul Tree SSA Fortran 95 Automatic vectorization November 27 2007 GCC Internals 10 GCC Growth 3 000 000 2 800 000 2 600 000 2 400 000 2 200 000 2 000 000 1 800 000 1 600 000 1 400 000 1 200 000 1 000 000 800 000
16. nct objects overlapping live ranges OLR are allowed Program is taken out of SSA form for RTL generation new symbols are created to fix OLR LE 4 gt ad 1 x gt 2 i i ee m TF x 1 gt 4 Z x 1 3 7 X 1 5 3 7 gt 7 5 b Conversion to normal form November 27 2007 GCC Internals 59 SSA Form Google Factored Use Def Chains FUD Chains Also known as Virtual SSA Form Used for virtual operands All names refer to the same object Optimizers may not produce OLR for virtual operands PAM LE x 2 gt 4 8 gt X DX if m z x 5 1 3 SCE 5 gt Conversion to normal form November 27 2007 GCC Internals 60 Virtual SSA Form amp VDEF operand needed to maintain DEF DEF links They also prevent code movement that would cross stores after loads When alias sets grow too big static grouping heuristic reduces number of virtual operators in aliased references November 27 2007 Google foo ie d Dy FR p Z2 2 1 10 7 amp a z amp b wk _a_4 VDEF a 11 Fas VDEF a 4 ki b 7 VDEF b 6 SEZ Ji VOSE t1 8 a t2 10 C18 57 return c3 10 GCC Internals 61 Incremental SSA form Google SSA forms are kept up to date incrementally Manually As long as SSA property is maintained passes may introduce new SSA names and PHI nodes on their own Often this is the quickest way A
17. s 50 Alias Analysis Google Two kinds of pointers are considered Symbols Points to is flow insensitive Associated to Symbol Memory Tags SMT SSA names Points to is flow sensitive e Associated to Name Memory Tags NMT Given pointer dereference pt en lf ptr has NMT use it f not fall back to SMT associated with ptr November 27 2007 GCC Internals 51 Structural Analysis Google 2 Separate structure fields are assigned distinct symbols struct A i IDE X e Variable a will have 3 sub variables fede yi SFT 1 SFT 2 SFT 3 int Z c T e References to each field are mapped to the corresponding sub struct A a variable November 27 2007 GCC Internals 52 IL Representation foo i Gy b p p 1 gt 10 Ga z amp b i em a3 return a b November 27 2007 Google 166 iy dy D KO p 1 gt 10 amp a amp b a VDEF a b VDEF lt b gt dp 5 VUSE lt a gt tl a VUSE lt b gt E D t3 tl t2 return t3 GCC Internals 53 Alias analysis in RTL Google Pure query system Pairwise disambiguation of memory references Does store to A affect load from B Mostly type based same predicates used in GIMPLE s TBAA 2 Very little information passed on from GIMPLE November 27 2007 GCC Internals 54 Alias analysis in RTL Google Some symbolic information preserved in RTL memory expressions
18. sented in LISP like form Operands do not have types but type modes In this case they are all SImode 4 byte integers November 27 2007 GCC Internals 42 gt Compiler pipeline gt Intermediate representations gt Alias analysis gt SSA forms gt Code generation November 27 2007 GCC Internals 43 Callgraph Google Every internal external function is a node of type struct cgraph_node Call sites represented with edges of type struct cgraph edge Every cgraph node contains Pointer to function declaration List of callers List of callees Nested functions if any Indirect calls are not represented November 27 2007 GCC Internals 44 Callgraph Google Callgraph manager drives intraprocedural optimization passes For every node in the callgraph it sets cfun and current function decl IPA passes must traverse callgraph on their own Given a cgraph node DECL STRUCT FUNCTION node gt decl points to the struct function instance that contains all the necessary control and data flow information for the function November 27 2007 GCC Internals 45 Control Flow Graph Google Built early during lowering Survives until late in RTL Right before machine dependent transformations pass_machine_reorg gt In GIMPLE instruction stream is physically split into blocks All jump instructions replaced with edges In RTL the CFG is laid o
19. tions When debugging a bootstrapped compiler try to use the stage 1 compiler The stage 2 and stage 3 compilers are built with optimizations enabled may confuse debugging To recreate testsuite failures cut and paste command line from lt bld gt gcec testsuite gcec gfortran g java log November 27 2007 GCC Internals 79 Google Current and Future Projects November 27 2007 GCC Internals 80 Link Time Optimization Google Delay optimization until link time IR for each compilation unit CU is streamed out Multiple CUs are read and combined together Enables whole program mode optimization Increased optimization opportunities Challenges Compile time Memory consumption Combining CUs from different languages November 5 2007 81 Plug in Support Google e Extensibility mechanism to allow 3 party tools Wrap some internal APIs for external use Allow loading of external shared modules Loaded module becomes another pass Compiler flag determines location Versioning scheme prevents mismatching Useful for Static analysis Experimenting with new transformations November 27 2007 GCC Internals 82 scheduling Google Several concurrent efforts targetting 4 3 and 4 4 Schedule over larger regions for increased parallelism Most target IA64 but benefit all architectures Enhanced selective scheduling Treegion schedulin
20. tput may be a simple string or a C function that builds the output string November 27 2007 GCC Internals 68 Pattern expansion Google Some standard patterns cannot be used to produce final target code Two ways to handle it Do nothing Some patterns can be expanded to libcalls Use define_expand to generate matchable RTL Four elements The name of a standard insn Vector of RTL expressions to generate for this insn A C expression acting as predicate to express availability of this instruction A C expression used to generate operands or more RTL November 27 2007 GCC Internals 69 Pattern expansion Google define_expand ashlsi3 set match_operand SI 0 register_operand ashift SI match_operand SI 1 register_operand match_operand SI 2 nonmemory operand W if GET CODE operands 2 CONST INT unsigned INTVAL operands 2 gt 3 FAIL 1 Generate a left shift only when the shift count is 0 3 FAIL indicates that expansion did not succeed and a different expansion should be tried e g a library call DONE is used to prevent emitting the RTL pattern C fragment responsible for emitting all insns November 27 2007 GCC Internals 70 Google gt Debugging dumps November 27 2007 GCC Internals 71 Adding a new pass Google gt To implement a new pass Add a new file to t runk gcc or edit an existing pass Add a ne
21. ut over the double linked instruction stream Jump instructions preserved November 27 2007 GCC Internals 46 Using the CFG Google Every CFG accessor requires a struct function argument In intraprocedural mode accessors have shorthand aliases that use cfun by default CFG is an array of double linked blocks The same data structures are used for GIMPLE and RTL Manipulation functions are callbacks that point to the appropriate RTL or GIMPLE versions November 27 2007 GCC Internals 47 gt Compiler pipeline gt Intermediate representations gt Control data structures gt SSA forms gt Code generation November 27 200 GCC Internals 48 Overview Google GIMPLE represents alias information explicitly Alias analysis is just another pass Artificial symbols represent memory expressions virtual operands FUD chains computed on virtual operands gt Virtual SSA Transformations may prove a symbol non addressable Promoted to GIMPLE register Requires another aliasing pass November 27 2007 GCC Internals 49 Alias Analysis Google Points to alias analysis PTAA Based on constraint graphs Field and flow sensitive context insensitive ntra procedural inter procedural in 4 2 Fairly precise Type based analysis TBAA Based on input language rules Field sensitive flow insensitive Very imprecise November 27 2007 GCC Internal
22. utomatically using update_ssa Marking individual symbols mark_sym_for_renaming name gt name mappings register new name mapping Passes that invalidate SSA form must set TODO update ssa November 27 2007 GCC Internals 62 gt Compiler pipeline gt Intermediate representations gt Control data structures gt Alias analysis gt SSA forms November 27 2007 GCC Internals 63 Code generation Google Code is generated using a rewriting system Target specific configuration files in gaoo gonftio ssrdme Three main target specific files arch md Code generation patterns for RTL insns lt arch gt h Definition of target capabilities register classes calling conventions type sizes etc arch c Support functions for code generation predicates and target variants November 27 2007 GCC Internals 64 Code generation Google Two main types of rewriting schemes supported Simple mappings from RTL to assembly Ge ine insn Complex mappings from RTL to RTL de ine expand define insn patterns have five elements r1 Pattern name optional define insn addsi3 2 RTL set match operand SI 0 integer register operand zd P d template plus SI match operand SI 1 integer register operand d d match operand SI 2 gpr or intl2 operand dNOPQ 3 Additional matching predicate add4I2 1 932 830 Assembly output t
23. w target rule in Makefile in If a flag is required to trigger the pass add it to common opt Create an instance of struct tree opt pass Declare itin tree pass h Sequence itin init optimization passes Add a gate function to read the new flag Document pass in trunk gcc doc invoke texi November 27 2007 GCC Internals 72 Available features Google APIs available for CFG block edge insertion removal dominance information block iterators dominance tree walker Statements insertion in block and edge removal iterators replacement Operands iterators replacement Loop discovery and manipulation Data dependency information scalar evolutions framework November 27 2007 GCC Internals 73 Available features Google Other available infrastructure Debugging dumps dump tree Timers for profiling passes ftime report CFG GIMPLE SSA verification enable checking Generic value propagation engine with callbacks for statement and node visits Generic use def chain walker Support in test harness for scanning dump files looking for specific transformations Pass manager for scheduling passes and describing interdependencies attributes required and attributes provided November 27 2007 GCC Internals 74 November 27 2007 GCC Internals 75 Debugging dumps Google Most passes understand the dump switches T

Download Pdf Manuals

image

Related Search

Related Contents

Adobe Acrobat 4.0 User Guide - CIHR Group in Sensory      ODYS Fino+ 21.5" 21.5" Full HD Black  Matrox_Mojito 4K_Installation_and_User_Guide  Cleaning & Usage instrUCtions regUlatory information    Instructions d`installation 2-700/701/702 Shiloh 2  Eizo FX2431  

Copyright © All rights reserved.
Failed to retrieve file