summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/AsmParser/LLParser.cpp2
-rw-r--r--llvm/lib/IR/DebugInfoMetadata.cpp10
-rw-r--r--llvm/test/Assembler/invalid-mdlocation-overflow-line.ll6
-rw-r--r--llvm/test/Assembler/mdlocation.ll4
-rw-r--r--llvm/unittests/IR/MetadataTest.cpp13
5 files changed, 13 insertions, 22 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 65627097fdf..6bf3d803a21 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -2946,7 +2946,7 @@ struct MDUnsignedField : public MDFieldImpl<uint64_t> {
: ImplTy(Default), Max(Max) {}
};
struct LineField : public MDUnsignedField {
- LineField() : MDUnsignedField(0, UINT32_MAX >> 8) {}
+ LineField() : MDUnsignedField(0, UINT32_MAX) {}
};
struct ColumnField : public MDUnsignedField {
ColumnField() : MDUnsignedField(0, UINT16_MAX) {}
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp
index 467d21ad36a..c540cc45a61 100644
--- a/llvm/lib/IR/DebugInfoMetadata.cpp
+++ b/llvm/lib/IR/DebugInfoMetadata.cpp
@@ -24,19 +24,12 @@ MDLocation::MDLocation(LLVMContext &C, StorageType Storage, unsigned Line,
"Expected a scope and optional inlined-at");
// Set line and column.
- assert(Line < (1u << 24) && "Expected 24-bit line");
assert(Column < (1u << 16) && "Expected 16-bit column");
SubclassData32 = Line;
SubclassData16 = Column;
}
-static void adjustLine(unsigned &Line) {
- // Set to unknown on overflow. Still use 24 bits for now.
- if (Line >= (1u << 24))
- Line = 0;
-}
-
static void adjustColumn(unsigned &Column) {
// Set to unknown on overflow. We only have 16 bits to play with here.
if (Column >= (1u << 16))
@@ -47,8 +40,7 @@ MDLocation *MDLocation::getImpl(LLVMContext &Context, unsigned Line,
unsigned Column, Metadata *Scope,
Metadata *InlinedAt, StorageType Storage,
bool ShouldCreate) {
- // Fixup line/column.
- adjustLine(Line);
+ // Fixup column.
adjustColumn(Column);
if (Storage == Uniqued) {
diff --git a/llvm/test/Assembler/invalid-mdlocation-overflow-line.ll b/llvm/test/Assembler/invalid-mdlocation-overflow-line.ll
index 8e19f6919bf..535b4c9a5c9 100644
--- a/llvm/test/Assembler/invalid-mdlocation-overflow-line.ll
+++ b/llvm/test/Assembler/invalid-mdlocation-overflow-line.ll
@@ -3,7 +3,7 @@
!0 = !{}
; CHECK-NOT: error
-!1 = !MDLocation(line: 16777215, scope: !0)
+!1 = !MDLocation(line: 4294967295, scope: !0)
-; CHECK: <stdin>:[[@LINE+1]]:24: error: value for 'line' too large, limit is 16777215
-!2 = !MDLocation(line: 16777216, scope: !0)
+; CHECK: <stdin>:[[@LINE+1]]:24: error: value for 'line' too large, limit is 4294967295
+!2 = !MDLocation(line: 4294967296, scope: !0)
diff --git a/llvm/test/Assembler/mdlocation.ll b/llvm/test/Assembler/mdlocation.ll
index c0a7b24cc75..e095d900d64 100644
--- a/llvm/test/Assembler/mdlocation.ll
+++ b/llvm/test/Assembler/mdlocation.ll
@@ -19,5 +19,5 @@
!5 = !MDLocation(scope: !0)
!6 = !MDLocation(scope: !0, column: 0, line: 0)
-; CHECK-NEXT: !4 = !MDLocation(line: 16777215, column: 65535, scope: !0)
-!7 = !MDLocation(line: 16777215, column: 65535, scope: !0)
+; CHECK-NEXT: !4 = !MDLocation(line: 4294967295, column: 65535, scope: !0)
+!7 = !MDLocation(line: 4294967295, column: 65535, scope: !0)
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp
index 8282017ed0e..ce55d954fb7 100644
--- a/llvm/unittests/IR/MetadataTest.cpp
+++ b/llvm/unittests/IR/MetadataTest.cpp
@@ -538,21 +538,20 @@ TEST_F(MDLocationTest, Overflow) {
EXPECT_EQ(2u, L->getLine());
EXPECT_EQ(7u, L->getColumn());
}
- unsigned U24 = 1u << 24;
unsigned U16 = 1u << 16;
{
- MDLocation *L = MDLocation::get(Context, U24 - 1, U16 - 1, N);
- EXPECT_EQ(U24 - 1, L->getLine());
+ MDLocation *L = MDLocation::get(Context, UINT32_MAX, U16 - 1, N);
+ EXPECT_EQ(UINT32_MAX, L->getLine());
EXPECT_EQ(U16 - 1, L->getColumn());
}
{
- MDLocation *L = MDLocation::get(Context, U24, U16, N);
- EXPECT_EQ(0u, L->getLine());
+ MDLocation *L = MDLocation::get(Context, UINT32_MAX, U16, N);
+ EXPECT_EQ(UINT32_MAX, L->getLine());
EXPECT_EQ(0u, L->getColumn());
}
{
- MDLocation *L = MDLocation::get(Context, U24 + 1, U16 + 1, N);
- EXPECT_EQ(0u, L->getLine());
+ MDLocation *L = MDLocation::get(Context, UINT32_MAX, U16 + 1, N);
+ EXPECT_EQ(UINT32_MAX, L->getLine());
EXPECT_EQ(0u, L->getColumn());
}
}
OpenPOWER on IntegriCloud