uweigand created this revision. uweigand added reviewers: spyffe, clayborg. uweigand added a subscriber: lldb-commits. Herald added a subscriber: aemerson.
This fixes several test case failure on s390x caused by the fact that on this platform, the default "char" type is unsigned. - In ClangASTContext::GetBuiltinTypeForEncodingAndBitSize we should return an explicit *signed* char type for encoding eEncodingSint and bit size 8, instead of the default platform char type (which may be unsigned). This fix matches existing code in ClangASTContext::GetIntTypeFromBitSize, and fixes the TestClangASTContext.TestBuiltinTypeForEncodingAndBitSize unit test case. - The test/expression_command/char/TestExprsChar.py test case is known to fail on platforms defaulting to unsigned char (pr23069), and just needs to be xfailed on s390x like on arm. - The test/functionalities/watchpoint/watchpoint_on_vectors/main.c test case defines a vector of "char" and implicitly assumes to be signed. Use an explicit "signed char" instead. http://reviews.llvm.org/D18979 Files: packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c source/Symbol/ClangASTContext.cpp Index: source/Symbol/ClangASTContext.cpp =================================================================== --- source/Symbol/ClangASTContext.cpp +++ source/Symbol/ClangASTContext.cpp @@ -783,8 +783,8 @@ break; case eEncodingSint: - if (QualTypeMatchesBitSize (bit_size, ast, ast->CharTy)) - return CompilerType (ast, ast->CharTy); + if (QualTypeMatchesBitSize (bit_size, ast, ast->SignedCharTy)) + return CompilerType (ast, ast->SignedCharTy); if (QualTypeMatchesBitSize (bit_size, ast, ast->ShortTy)) return CompilerType (ast, ast->ShortTy); if (QualTypeMatchesBitSize (bit_size, ast, ast->IntTy)) Index: packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c =================================================================== --- packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c +++ packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c @@ -6,7 +6,7 @@ // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// -typedef char v4i8 __attribute__ ((vector_size(4))); +typedef signed char v4i8 __attribute__ ((vector_size(4))); v4i8 global_vector = {1, 2, 3, 4}; int Index: packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py =================================================================== --- packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py +++ packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py @@ -57,7 +57,7 @@ def test_default_char(self): self.do_test() - @expectedFailureAll(archs=["arm", "aarch64"], bugnumber="llvm.org/pr23069") + @expectedFailureAll(archs=["arm", "aarch64", "s390x"], bugnumber="llvm.org/pr23069") @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765") def test_signed_char(self): self.do_test(dictionary={'CFLAGS_EXTRAS': '-fsigned-char'})
Index: source/Symbol/ClangASTContext.cpp =================================================================== --- source/Symbol/ClangASTContext.cpp +++ source/Symbol/ClangASTContext.cpp @@ -783,8 +783,8 @@ break; case eEncodingSint: - if (QualTypeMatchesBitSize (bit_size, ast, ast->CharTy)) - return CompilerType (ast, ast->CharTy); + if (QualTypeMatchesBitSize (bit_size, ast, ast->SignedCharTy)) + return CompilerType (ast, ast->SignedCharTy); if (QualTypeMatchesBitSize (bit_size, ast, ast->ShortTy)) return CompilerType (ast, ast->ShortTy); if (QualTypeMatchesBitSize (bit_size, ast, ast->IntTy)) Index: packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c =================================================================== --- packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c +++ packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c @@ -6,7 +6,7 @@ // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// -typedef char v4i8 __attribute__ ((vector_size(4))); +typedef signed char v4i8 __attribute__ ((vector_size(4))); v4i8 global_vector = {1, 2, 3, 4}; int Index: packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py =================================================================== --- packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py +++ packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py @@ -57,7 +57,7 @@ def test_default_char(self): self.do_test() - @expectedFailureAll(archs=["arm", "aarch64"], bugnumber="llvm.org/pr23069") + @expectedFailureAll(archs=["arm", "aarch64", "s390x"], bugnumber="llvm.org/pr23069") @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765") def test_signed_char(self): self.do_test(dictionary={'CFLAGS_EXTRAS': '-fsigned-char'})
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits