[LangRef] Correct value ranges for address space, vector, and float bit sizes.
authorMichael Liao <michael.hliao@gmail.com>
Fri, 17 Feb 2023 20:58:23 +0000 (15:58 -0500)
committerMichael Liao <michael.hliao@gmail.com>
Fri, 24 Feb 2023 02:54:50 +0000 (21:54 -0500)
- The current implementation checks them for 24-bit inegers but the
  document says 23-bit one effectively by listing the range as [1,2^23).
- Minor error message correction.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D144685

llvm/docs/LangRef.rst
llvm/lib/IR/DataLayout.cpp
llvm/test/Assembler/invalid-datalayout17.ll
llvm/test/Assembler/invalid-datalayout4.ll

index b4c9cff..2ba5fba 100644 (file)
@@ -2770,23 +2770,23 @@ as follows:
     specified, the default index size is equal to the pointer size. All sizes
     are in bits. The address space, ``n``, is optional, and if not specified,
     denotes the default address space 0. The value of ``n`` must be
-    in the range [1,2^23).
+    in the range [1,2^24).
 ``i<size>:<abi>[:<pref>]``
     This specifies the alignment for an integer type of a given bit
-    ``<size>``. The value of ``<size>`` must be in the range [1,2^23).
+    ``<size>``. The value of ``<size>`` must be in the range [1,2^24).
     ``<pref>`` is optional and defaults to ``<abi>``.
     For ``i8``, the ``<abi>`` value must equal 8,
     that is, ``i8`` must be naturally aligned.
 ``v<size>:<abi>[:<pref>]``
     This specifies the alignment for a vector type of a given bit
-    ``<size>``. The value of ``<size>`` must be in the range [1,2^23).
+    ``<size>``. The value of ``<size>`` must be in the range [1,2^24).
     ``<pref>`` is optional and defaults to ``<abi>``.
 ``f<size>:<abi>[:<pref>]``
     This specifies the alignment for a floating-point type of a given bit
     ``<size>``. Only values of ``<size>`` that are supported by the target
     will work. 32 (float) and 64 (double) are supported on all targets; 80
     or 128 (different flavors of long double) are also supported on some
-    targets. The value of ``<size>`` must be in the range [1,2^23).
+    targets. The value of ``<size>`` must be in the range [1,2^24).
     ``<pref>`` is optional and defaults to ``<abi>``.
 ``a:<abi>[:<pref>]``
     This specifies the alignment for an object of aggregate type.
index ae248e9..444630d 100644 (file)
@@ -305,7 +305,7 @@ Error DataLayout::parseSpecifier(StringRef Desc) {
         if (Error Err = getInt(Tok, AddrSpace))
           return Err;
       if (!isUInt<24>(AddrSpace))
-        return reportError("Invalid address space, must be a 24bit integer");
+        return reportError("Invalid address space, must be a 24-bit integer");
 
       // Size.
       if (Rest.empty())
@@ -571,7 +571,7 @@ Error DataLayout::setAlignment(AlignTypeEnum AlignType, Align ABIAlign,
   // an assert. See D67400 for context.
   assert(Log2(ABIAlign) < 16 && Log2(PrefAlign) < 16 && "Alignment too big");
   if (!isUInt<24>(BitWidth))
-    return reportError("Invalid bit width, must be a 24bit integer");
+    return reportError("Invalid bit width, must be a 24-bit integer");
   if (PrefAlign < ABIAlign)
     return reportError(
         "Preferred alignment cannot be less than the ABI alignment");
index 519f5c1..b7eab74 100644 (file)
@@ -1,3 +1,3 @@
 ; RUN: not llvm-as < %s 2>&1 | FileCheck %s
 target datalayout = "i16777216:16:16"
-; CHECK: Invalid bit width, must be a 24bit integer
+; CHECK: Invalid bit width, must be a 24-bit integer
index 2d946d3..99a6a60 100644 (file)
@@ -1,3 +1,3 @@
 ; RUN: not llvm-as < %s 2>&1 | FileCheck %s
 target datalayout = "p16777216:64:64:64"
-; CHECK: Invalid address space, must be a 24bit integer
+; CHECK: Invalid address space, must be a 24-bit integer