Chris's constant data sequence refactoring actually enabled printing
authorChandler Carruth <chandlerc@gmail.com>
Mon, 30 Jan 2012 23:47:44 +0000 (23:47 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 30 Jan 2012 23:47:44 +0000 (23:47 +0000)
vectors of all one bits to be printed more cleverly in the AsmPrinter.
Unfortunately, the byte value for all one bits is the same with
-fsigned-char as the error return of '-1'. Force this to be the unsigned
byte value when returning it to avoid this problem, and update the test
case for the shiny new behavior.

Yay for building LLVM and Clang with -funsigned-char.

Chris, please review, and let me know if there is any reason to not
desire this change. It seems good on the surface, and certainly intended
based on the code written.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149299 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/X86/fold-pcmpeqd-2.ll

index 78f3f1d32a73549a2a854cbe0c26f71628e318f0..1e55de4494cfeb84953e5a2c62edece5bef83296 100644 (file)
@@ -1558,7 +1558,7 @@ static int isRepeatedByteSequence(const ConstantDataSequential *V) {
   char C = Data[0];
   for (unsigned i = 1, e = Data.size(); i != e; ++i)
     if (Data[i] != C) return -1;
-  return C;
+  return static_cast<uint8_t>(C); // Ensure 255 is not returned as -1.
 }
 
 
index a7b3332cc27c5fb8c1e9e8b0781fed307715df46..9cf4607cf5b2393e2b1f03b9e51267121b6c60a7 100644 (file)
@@ -8,10 +8,7 @@
 ; RAGreedy defeats the test by splitting live ranges.
 
 ; Constant pool all-ones vector:
-; CHECK: .long 4294967295
-; CHECK-NEXT: .long 4294967295
-; CHECK-NEXT: .long 4294967295
-; CHECK-NEXT: .long 4294967295
+; CHECK: .space 16,255
 
 ; No pcmpeqd instructions, everybody uses the constant pool.
 ; CHECK: program_1: