calls can be supported.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57428 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-10-13 01:59:13 +00:00
parent cdb0e4caff
commit 44d2a983b7

View File

@ -11,30 +11,30 @@
// //
// "Fast" instruction selection is designed to emit very poor code quickly. // "Fast" instruction selection is designed to emit very poor code quickly.
// Also, it is not designed to be able to do much lowering, so most illegal // Also, it is not designed to be able to do much lowering, so most illegal
// types (e.g. i64 on 32-bit targets) and operations (e.g. calls) are not // types (e.g. i64 on 32-bit targets) and operations are not supported. It is
// supported. It is also not intended to be able to do much optimization, // also not intended to be able to do much optimization, except in a few cases
// except in a few cases where doing optimizations reduces overall compile // where doing optimizations reduces overall compile time. For example, folding
// time (e.g. folding constants into immediate fields, because it's cheap // constants into immediate fields is often done, because it's cheap and it
// and it reduces the number of instructions later phases have to examine). // reduces the number of instructions later phases have to examine.
// //
// "Fast" instruction selection is able to fail gracefully and transfer // "Fast" instruction selection is able to fail gracefully and transfer
// control to the SelectionDAG selector for operations that it doesn't // control to the SelectionDAG selector for operations that it doesn't
// support. In many cases, this allows us to avoid duplicating a lot of // support. In many cases, this allows us to avoid duplicating a lot of
// the complicated lowering logic that SelectionDAG currently has. // the complicated lowering logic that SelectionDAG currently has.
// //
// The intended use for "fast" instruction selection is "-O0" mode // The intended use for "fast" instruction selection is "-O0" mode
// compilation, where the quality of the generated code is irrelevant when // compilation, where the quality of the generated code is irrelevant when
// weighed against the speed at which the code can be generated. Also, // weighed against the speed at which the code can be generated. Also,
// at -O0, the LLVM optimizers are not running, and this makes the // at -O0, the LLVM optimizers are not running, and this makes the
// compile time of codegen a much higher portion of the overall compile // compile time of codegen a much higher portion of the overall compile
// time. Despite its limitations, "fast" instruction selection is able to // time. Despite its limitations, "fast" instruction selection is able to
// handle enough code on its own to provide noticeable overall speedups // handle enough code on its own to provide noticeable overall speedups
// in -O0 compiles. // in -O0 compiles.
// //
// Basic operations are supported in a target-independent way, by reading // Basic operations are supported in a target-independent way, by reading
// the same instruction descriptions that the SelectionDAG selector reads, // the same instruction descriptions that the SelectionDAG selector reads,
// and identifying simple arithmetic operations that can be directly selected // and identifying simple arithmetic operations that can be directly selected
// from simple operators. More complicated operations currently require // from simple operators. More complicated operations currently require
// target-specific code. // target-specific code.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//