aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/DwarfWriter.cpp6
-rw-r--r--lib/Target/TargetData.cpp6
-rw-r--r--lib/VMCore/Verifier.cpp10
3 files changed, 16 insertions, 6 deletions
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp
index 9d54d42960..0ade7a25d5 100644
--- a/lib/CodeGen/DwarfWriter.cpp
+++ b/lib/CodeGen/DwarfWriter.cpp
@@ -58,9 +58,9 @@ class DIEValue;
//===----------------------------------------------------------------------===//
/// DWLabel - Labels are used to track locations in the assembler file.
-/// Labels appear in the form <prefix><Tag><Number>, where the tag is a
-/// category of label (Ex. location) and number is a value unique in that
-/// category.
+/// Labels appear in the form @verbatim <prefix><Tag><Number> @endverbatim,
+/// where the tag is a category of label (Ex. location) and number is a value
+/// unique in that category.
class DWLabel {
public:
/// Tag - Label category tag. Should always be a staticly declared C string.
diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp
index bb1ad3271b..bb1fff5de5 100644
--- a/lib/Target/TargetData.cpp
+++ b/lib/Target/TargetData.cpp
@@ -146,10 +146,10 @@ const TargetAlignElem TargetData::InvalidAlignmentElem =
<i>[E|e]</i>: Endianness. "E" specifies a big-endian target data model, "e"
specifies a little-endian target data model.
<br><br>
- <i>p:<size>:<abi_align>:<pref_align></i>: Pointer size, ABI and preferred
- alignment.
+ <i>p:@verbatim<size>:<abi_align>:<pref_align>@endverbatim</i>: Pointer size,
+ ABI and preferred alignment.
<br><br>
- <i><type><size>:<abi_align>:<pref_align></i>: Numeric type alignment. Type is
+ <i>@verbatim<type><size>:<abi_align>:<pref_align>@endverbatim</i>: Numeric type alignment. Type is
one of <i>i|f|v|a</i>, corresponding to integer, floating point, vector (aka
packed) or aggregate. Size indicates the size, e.g., 32 or 64 bits.
\p
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 86a72c44fe..c01f0fe9cc 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -370,6 +370,9 @@ void Verifier::visitFunction(Function &F) {
ParamAttr::ByVal | ParamAttr::InReg |
ParamAttr::Nest | ParamAttr::StructRet;
+ const uint16_t MutuallyIncompatible2 =
+ ParamAttr::ZExt | ParamAttr::SExt;
+
const uint16_t IntegerTypeOnly =
ParamAttr::SExt | ParamAttr::ZExt;
@@ -386,6 +389,9 @@ void Verifier::visitFunction(Function &F) {
uint16_t RetI = Attrs->getParamAttrs(0) & ReturnIncompatible;
Assert1(!RetI, "Attribute " + Attrs->getParamAttrsText(RetI) +
"should not apply to functions!", &F);
+ uint16_t MutI = Attrs->getParamAttrs(0) & MutuallyIncompatible2;
+ Assert1(MutI != MutuallyIncompatible2, "Attributes" +
+ Attrs->getParamAttrsText(MutI) + "are incompatible!", &F);
for (FunctionType::param_iterator I = FT->param_begin(),
E = FT->param_end(); I != E; ++I, ++Idx) {
@@ -400,6 +406,10 @@ void Verifier::visitFunction(Function &F) {
Assert1(!(MutI & (MutI - 1)), "Attributes " +
Attrs->getParamAttrsText(MutI) + "are incompatible!", &F);
+ uint16_t MutI2 = Attr & MutuallyIncompatible2;
+ Assert1(MutI2 != MutuallyIncompatible2, "Attributes" +
+ Attrs->getParamAttrsText(MutI2) + "are incompatible!", &F);
+
uint16_t IType = Attr & IntegerTypeOnly;
Assert1(!IType || FT->getParamType(Idx-1)->isInteger(),
"Attribute " + Attrs->getParamAttrsText(IType) +