⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 problems

📁 这是完整的gcc源代码
💻
字号:
3. When find_reloads is used to count number of spills neededit does not take into account the fact that a reload mayturn out to be a dummy.I'm not sure this really happens any more.  Doesn't it findall the dummies on both passes?10.     movl a3@,a0	movl a3@(16),a1	clrb a0@(a1:l)is generated and may be worse than	movl a3@,a0	addl a3@(16),a0	clrb a0@If ordering of operands is improved, many moresuch cases will be generated from typical array accesses.23. (memory >> 24) and (memory >> 24) == CONST  optimizationsought to be done machine independently.38. Hack expand_mult so that if there is no same-modes multiplyit will use a widening multiply and then truncate rather thancalling the library.39. Hack expanding of division to notice cases forlong -> short division.40. Represent divide insns as (DIV:SI ...) followed bya separate lowpart extract.  Represent remainder insns as DIV:SIfollowed by a separate highpart extract.  Then cse can work onthe DIV:SI part.  Problem is, this may not be desirable on machineswhere computing the quotient alone does not necessarily givea remainder--such as the 68020 for long operands.42. In subst in combine.c at line 704 or so, a reg that reallywants an areg gets a dreg.  It is i*4, for indexing.  Why?52. Reloading can look at how reload_contents got set up.If it was copied from a register, just reload from that register.Otherwise, perhaps can change the previous insn to move thedata via the reload reg, thus avoiding one memory ref.53. Know that certain library routines do not clobber memory.63. Potential problem in cc_status.value2, if it ever activates itselfafter a two-address subtraction (which currently cannot happen).It is supposed to compare the current value of the destinationbut eliminating it would use the results of the subtraction, equivalentto comparing the previous value of the destination.65. Should loops that neither start nor end with a breakbe rearranged to end with the last break?69. Define the floating point converting arithmetic instructionsfor the 68881.74. Combine loop opt with cse opt in one pass.  Do cse on each loop,then loop opt on that loop, and go from innermost loops outward.Make loop invariants available for cse at end of loop.85. pea can force a value to be reloaded into an aregwhich can make it worse than separate adding and pushing.This can only happen for adding something within addql rangeand it only loses if the qty becomes dead at that pointso it can be added to with no copying.93. If a pseudo doesn't get a hard reg everywhere,can it get one during a loop?95. Can simplify shift of result of a bfextu.  See testunsfld.c.Likewise and of result of a bfextu.  See hyph.c.96. Can do SImode bitfield insns without reloading, but mustalter the operands in special ways.99. final could check loop-entry branches to see if theyscrew up deletion of a test instruction.  If they do,can put another test instruction before the branch andmake it conditional and redirect it.106. Aliasing may be impossible if data types of refs differand data type of containing objects also differ.(But check this wrt unions.)108. Can speed up flow analysis by making a table saying whichregister is set and which registers are used by each instruction thatonly sets one register and only uses two.  This way avoid the treewalk for such instructions (most instructions).109. It is desirable to avoid converting INDEX to SImode if anarrower mode suffices, as HImode does on the 68000.How can this be done?110. Possible special combination pattern:If the two operands to a comparison die there and both come from insnsthat are identical except for replacing one operand with the other,throw away those insns.  Ok if insns being discarded are known 1 to 1.An andl #1 after a seq is 1 to 1, but how should compiler know that?112. Can convert float to unsigned int by subtracting a constant,converting to signed int, and changing the sign bit.117. Any number of slow zero-extensions in one loop, that havetheir clr insns moved out of the loop, can share one registerif their original life spans are disjoint.But it may be hard to be sure of this sincethe life span data that regscan produces may be hard to interpretvalidly or may be incorrect after cse.118. In cse, when a bfext insn refers to a register, if the fieldcorresponds to a halfword or a byte and the register is equivalentto a memory location, it would be possible to detect this andreplace it with a simple memory reference.121. Insns that store two values cannot be moved out of loops.The code in scan_loop doesn't even try to deal with them.122. When insn-output.c turns a bit-test into a sign-test,it should see whether the cc is already set up with that sign.123. When a conditional expression is used as a function arg, it wouldbe faster (and in some cases shorter) to push each alternative ratherthan compute in a register and push that.  This would requirebeing able to specify "push this" as a target for expand_expr.124. On the 386, bad code results from foo (bar ()) when barreturns a double, because the pseudo used fails to get preferencedinto an fp reg because of the distinction between regs 8 and 9.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -