diff --git a/include/llvm/Target/TargetData.h b/include/llvm/Target/TargetData.h
index 9b5aa99bde6..aaae41c17c6 100644
--- a/include/llvm/Target/TargetData.h
+++ b/include/llvm/Target/TargetData.h
@@ -81,8 +81,38 @@ public:
~TargetData(); // Not virtual, do not subclass this class
- /// init - Specify configuration if not available at ctor time.
+ /// Parse a target data layout string and initialize TargetData members.
///
+ /// Parse a target data layout string, initializing the various TargetData
+ /// members along the way. A TargetData specification string looks like
+ /// "E-p:64:64-d:64-f:32-l:64-i:32-s:16-b:8-B:8" and specifies the
+ /// target's endianess, the alignments of various data types and
+ /// the size of pointers. The "-" is used as a separator and ":"
+ /// separates a token from its argument. Alignment is indicated in bits
+ /// and internally converted to the appropriate number of bytes.
+ ///
+ /// Valid tokens:
+ ///
+ /// E specifies big endian architecture (1234) [default]
+ /// e specifies little endian architecture (4321)
+ /// p:[ptr size]:[ptr align] specifies pointer size and alignment
+ /// [default = 64:64]
+ /// d:[align] specifies double floating point alignment
+ /// [default = 64]
+ /// f:[align] specifies single floating point alignment
+ /// [default = 32]
+ /// l:[align] specifies long integer alignment
+ /// [default = 64]
+ /// i:[align] specifies integer alignment
+ /// [default = 32]
+ /// s:[align] specifies short integer alignment
+ /// [default = 16]
+ /// b:[align] specifies byte data type alignment
+ /// [default = 8]
+ /// B:[align] specifies boolean data type alignment
+ /// [default = 8]
+ ///
+ /// All other token types are silently ignored.
void init(const std::string &TargetDescription);