aboutsummaryrefslogtreecommitdiff
path: root/gcc/NOTES
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/NOTES')
-rw-r--r--gcc/NOTES47
1 files changed, 47 insertions, 0 deletions
diff --git a/gcc/NOTES b/gcc/NOTES
new file mode 100644
index 00000000000..7da5cf391ac
--- /dev/null
+++ b/gcc/NOTES
@@ -0,0 +1,47 @@
+ * Need to use process_bb_node_lives rather than our own conflict
+ building routines. Our current approach is slow (not using DF) and
+ naive/inaccurate. Our current approach also doesn't get hard register
+ conflicts which are copied from the original pseudo (which is
+ horribly conservative and the cause of most of our regressions).
+
+ * In general, we need to be using DF rather than note_{stores,uses}.
+
+ * Need to rewrite the local allocator/spiller.
+
+ * How to tune when we're choosing between replacing an operand with a
+ MEM or emitting distinct load/store insns.
+
+ * Should we be working with EBBs and reverse EBBs?
+
+ * Is it really necessary to remove the conflicts when we localize a
+ pseudo? We might get away with just ignoring it. However, we're
+ probably still going to need the conflict removal bits so we can
+ "spill" by clearing key conflicts and calling back into IRA.
+
+ * ira-costs.c has a twiddle to slightly prefer aligned groups of hard
+ regs. This should generally help, but needs serious benchmarking.
+
+ * Put all the reg_XXX bits into a structure and expand the structure
+ rather than expanding each array individually. Also helps as we can
+ dump everything we know about a reg with a single gdb statement rather
+ than a dozen of them.
+
+ * Break ira_reassign_pseudos into two parts, once which just assigns
+ the given pseudo array the other which does that plus reassignment of
+ conflicting pseudos. The former is all we care about for ira-reload.c.
+
+ * SUBREG handling is probably not correct and certainly not efficient
+ yet. We want to be able to track which subregs are live and emit code
+ appropriately. We also want to narrow operands when opportunities
+ present themselves. Also would like to identify these at kill the
+ first statement and avoid unncessary conflicts
+
+ (set (reg) (whatever))
+ (set (subreg (reg 0)) (something))
+ (set (subreg (reg 4)) (something else))
+
+ * Need to find an efficient way to determine range transparency.
+
+ * Need to find a way to update ranges for newly created pseudos so
+ that slots can be shared more effectively.
+