llvm-project/llvm/unittests/ADT
Raphael Isemann f60e319419 ADT: Fix that APSInt's string constructor claims it requires 5 bits to store a zero
Summary:

When constructing an APSInt from a string, the constructor doesn't correctly
truncate the bit width of the result if the passed in string was "0" (or any
alternative way to express 0 like "-0" or "000"). Instead of 1 (which is the
smallest allowed bit width) it returns an APSInt with a bit width of 5.

The reason is that the constructor checks that it never truncates the result to
the invalid bit width of 0, so when it calculates that storing a "0" doesn't
require any bits it just keeps the original overestimated bit width (which
happens to be 5).

This patch just sets the bit width of the result to 1 if the required bit width
is 0.

Reviewers: arphaman, dexonsmith

Reviewed By: dexonsmith

Subscribers: hiraditya, dexonsmith, JDevlieghere, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D81329
2020-06-10 16:36:33 +02:00
..
APFloatTest.cpp Make IEEEFloat::roundToIntegral more standard conformant 2020-03-11 10:38:46 +07:00
APIntTest.cpp [APInt] set all bits for getBitsSetWithWrap if loBit == hiBit 2020-06-08 22:55:24 -04:00
APSIntTest.cpp ADT: Fix that APSInt's string constructor claims it requires 5 bits to store a zero 2020-06-10 16:36:33 +02:00
AnyTest.cpp
ArrayRefTest.cpp [ADR] ArrayRefTest: disable SizeTSizedOperations test - it's UB. 2019-10-10 12:22:33 +00:00
BitVectorTest.cpp Fix bug in SmallBitVector::find_next_unset 2020-04-24 13:50:30 -07:00
BitmaskEnumTest.cpp
BreadthFirstIteratorTest.cpp
BumpPtrListTest.cpp
CMakeLists.txt [llvm][ADT] Move TypeSwitch class from MLIR to LLVM 2020-04-14 15:14:41 -07:00
CoalescingBitVectorTest.cpp [LiveDebugValues] Speed up removeEntryValue, NFC 2020-06-01 11:02:36 -07:00
DAGDeltaAlgorithmTest.cpp
DeltaAlgorithmTest.cpp
DenseMapTest.cpp [ADT] Allow K to be incomplete during DenseMap<K*, V> instantiation 2020-02-28 14:24:04 -08:00
DenseSetTest.cpp [ADT] Add DenseSetImpl(begin, end) 2020-05-01 10:10:45 -07:00
DepthFirstIteratorTest.cpp
DirectedGraphTest.cpp [DDG] DirectedGraph as a base class for various dependence graphs such 2019-07-25 18:23:22 +00:00
EnumeratedArrayTest.cpp [DDG] Data Dependence Graph - Pi Block 2019-11-08 15:46:08 -05:00
EquivalenceClassesTest.cpp
FallibleIteratorTest.cpp
FloatingPointMode.cpp Separately track input and output denormal mode 2020-02-04 12:59:21 -05:00
FoldingSet.cpp
FunctionExtrasTest.cpp
FunctionRefTest.cpp FunctionRef: Strip cv qualifiers in the converting constructor 2020-03-27 16:31:58 -07:00
HashingTest.cpp
IListBaseTest.cpp
IListIteratorTest.cpp
IListNodeBaseTest.cpp
IListNodeTest.cpp
IListSentinelTest.cpp
IListTest.cpp
ImmutableListTest.cpp
ImmutableMapTest.cpp
ImmutableSetTest.cpp
IntEqClassesTest.cpp
IntervalMapTest.cpp [ADT] Add CoalescingBitVector, implemented using IntervalMap [1/3] 2020-02-27 12:39:46 -08:00
IntrusiveRefCntPtrTest.cpp
IteratorTest.cpp [ADT] Move drop_begin from iterator_range.h into STLExtras. 2019-11-14 08:10:59 -08:00
MapVectorTest.cpp Github access test: remove unnecessary whitespaces. 2020-05-20 09:53:44 +01:00
MappedIteratorTest.cpp
OptionalTest.cpp Revert "Unconditionally enable lvalue function designators; NFC" 2020-01-22 12:40:39 -05:00
PackedVectorTest.cpp
PointerEmbeddedIntTest.cpp PointerLikeTypeTraits: Standardize NumLowBitsAvailable on static constexpr rather than anonymous enum 2020-01-16 15:30:50 -08:00
PointerIntPairTest.cpp PointerLikeTypeTraits: Standardize NumLowBitsAvailable on static constexpr rather than anonymous enum 2020-01-16 15:30:50 -08:00
PointerSumTypeTest.cpp
PointerUnionTest.cpp Removed PointerUnion3 and PointerUnion4 aliases in favor of the variadic template 2020-01-14 18:56:29 +01:00
PostOrderIteratorTest.cpp
PriorityWorklistTest.cpp
RangeAdapterTest.cpp
SCCIteratorTest.cpp
STLExtrasTest.cpp Use C++14-style return type deduction in LLVM. 2020-02-11 07:38:42 -08:00
ScopeExitTest.cpp
SequenceTest.cpp
SetVectorTest.cpp
SimpleIListTest.cpp [ADT/STLExtras.h] - Add llvm::is_sorted wrapper and update callers. 2020-04-14 14:11:02 +03:00
SmallPtrSetTest.cpp [ADT] Add equality operator for SmallPtrSet 2019-11-06 11:17:51 +07:00
SmallSetTest.cpp [ADT] add equality operator for SmallSet 2019-10-29 17:33:57 -07:00
SmallStringTest.cpp [SmallString] Add explicit conversion to std::string 2020-01-29 10:17:10 -08:00
SmallVectorTest.cpp
SparseBitVectorTest.cpp
SparseMultiSetTest.cpp
SparseSetTest.cpp
StatisticTest.cpp [ADT][Statistics] Fix test after rL374490 2019-10-11 07:19:54 +00:00
StringExtrasTest.cpp [ADT] Add locale-independent isSpace() to StringExtras. NFC 2020-05-02 15:20:05 +02:00
StringMapTest.cpp [Allocator] Make Deallocate() pass alignment and make it use (de)allocate_buffer 2020-05-02 16:08:46 +02:00
StringRefTest.cpp [ADT] Implicitly convert between StringRef and std::string_view when we have C++17 2020-01-28 13:56:12 +01:00
StringSetTest.cpp NFC: Clean up the implementation of StringPool a bit, and remove dependence on some "implicitly MallocAllocator" based methods on StringMapEntry. This allows reducing the #includes in StringMapEntry.h. 2020-04-12 16:37:17 -07:00
StringSwitchTest.cpp
TestGraph.h [ADT] Fixed -Wdeprecated-copy warning. NFCI 2019-11-28 00:49:42 +01:00
TinyPtrVectorTest.cpp Add TinyPtrVector support for general pointer-like things. 2019-08-20 23:29:28 +00:00
TripleTest.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
TwineTest.cpp
TypeSwitchTest.cpp [llvm][ADT] Move TypeSwitch class from MLIR to LLVM 2020-04-14 15:14:41 -07:00
TypeTraitsTest.cpp [mlir][NFC] Remove the STLExtras.h header file now that it has been merged into LLVM. 2020-04-14 15:14:41 -07:00
WaymarkingTest.cpp [ADT] Implement the Waymarking as an independent utility 2020-03-31 17:08:24 +03:00