legalize. It seems plausible that this knowledge would let it simplify other
stuff too.
+//===---------------------------------------------------------------------===//
+
+The loop unroller should be enhanced to be able to unroll loops that aren't
+single basic blocks. It should be able to handle stuff like this:
+
+ for (i = 0; i < c1; ++i)
+ if (c2 & (1 << i))
+ foo
+
+where c1/c2 are constants.
+
+//===---------------------------------------------------------------------===//
+
+For packed types, TargetData.cpp::getTypeInfo() returns alignment that is equal
+to the type size. It works but can be overly conservative as the alignment of
+specific packed types are target dependent.
+
+//===---------------------------------------------------------------------===//
+
+We should add 'unaligned load/store' nodes, and produce them from code like
+this:
+
+v4sf example(float *P) {
+ return (v4sf){P[0], P[1], P[2], P[3] };
+}
+
+//===---------------------------------------------------------------------===//
+
+We should constant fold packed type casts at the LLVM level, regardless of the
+cast. Currently we cannot fold some casts because we don't have TargetData
+information in the constant folder, so we don't know the endianness of the
+target!
+
+//===---------------------------------------------------------------------===//