diff options
| author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-08-28 22:58:50 +0000 |
|---|---|---|
| committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-08-28 22:58:50 +0000 |
| commit | b09eb9f1c2b2e36b49b32e149a82a49380a4f4b0 (patch) | |
| tree | e31cb5ae9ad2438b05b9c3cd069b4176c099604b /llvm/unittests | |
| parent | a37b065e8fa57ae40d14dfdb5afed4628129b1ea (diff) | |
| download | bcm5719-llvm-b09eb9f1c2b2e36b49b32e149a82a49380a4f4b0.tar.gz bcm5719-llvm-b09eb9f1c2b2e36b49b32e149a82a49380a4f4b0.zip | |
DI: Set DILexicalBlock columns >= 65536 to 0/unknown
This fixes PR24621 and matches what we do for `DILocation`. Although
the limit seems somewhat artificial, there are places in the backend
that also assume 16-bit columns, so we may as well just be consistent
about the limits.
llvm-svn: 246349
Diffstat (limited to 'llvm/unittests')
| -rw-r--r-- | llvm/unittests/IR/MetadataTest.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index 6741c79afc9..661f965660e 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -1591,6 +1591,32 @@ TEST_F(DILexicalBlockTest, get) { EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp))); } +TEST_F(DILexicalBlockTest, Overflow) { + DISubprogram *SP = getSubprogram(); + DIFile *F = getFile(); + { + auto *LB = DILexicalBlock::get(Context, SP, F, 2, 7); + EXPECT_EQ(2u, LB->getLine()); + EXPECT_EQ(7u, LB->getColumn()); + } + unsigned U16 = 1u << 16; + { + auto *LB = DILexicalBlock::get(Context, SP, F, UINT32_MAX, U16 - 1); + EXPECT_EQ(UINT32_MAX, LB->getLine()); + EXPECT_EQ(U16 - 1, LB->getColumn()); + } + { + auto *LB = DILexicalBlock::get(Context, SP, F, UINT32_MAX, U16); + EXPECT_EQ(UINT32_MAX, LB->getLine()); + EXPECT_EQ(0u, LB->getColumn()); + } + { + auto *LB = DILexicalBlock::get(Context, SP, F, UINT32_MAX, U16 + 1); + EXPECT_EQ(UINT32_MAX, LB->getLine()); + EXPECT_EQ(0u, LB->getColumn()); + } +} + typedef MetadataTest DILexicalBlockFileTest; TEST_F(DILexicalBlockFileTest, get) { |

