OSDN Git Service

[lldb] Fix TestComplexInt on ARM
authorRaphael Isemann <teemperor@gmail.com>
Fri, 19 Jun 2020 15:46:21 +0000 (17:46 +0200)
committerRaphael Isemann <teemperor@gmail.com>
Fri, 19 Jun 2020 15:47:16 +0000 (17:47 +0200)
On the buildbot long and int have the same size but long and long long don't,
so the bug where we find the first type by size will produce a different error.
Make the test dynamic based on int/long/long long size to fix the bot.

lldb/test/API/lang/c/complex_int/TestComplexInt.py

index 8d9344e..9bd0c37 100644 (file)
@@ -16,12 +16,19 @@ class TestCase(TestBase):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c"))
 
+        long_size_eq_int = self.frame().EvaluateExpression("sizeof(long) == sizeof(int)")
+
         # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong.
         self.expect_expr("complex_int", result_type="_Complex int", result_value="4294967295 + 4294967294i")
-        self.expect_expr("complex_long", result_type="_Complex long")
-
         self.expect_expr("complex_unsigned", result_type="_Complex int", result_value="1 + 2i")
-        self.expect_expr("complex_unsigned_long", result_type="_Complex long", result_value="1 + 2i")
+
+        # FIXME: We get the type wrong if long has the same size as int.
+        if long_size_eq_int.GetValue() == "true":
+            self.expect_expr("complex_long", result_type="_Complex int")
+            self.expect_expr("complex_unsigned_long", result_type="_Complex int", result_value="1 + 2i")
+        else:
+            self.expect_expr("complex_long", result_type="_Complex long")
+            self.expect_expr("complex_unsigned_long", result_type="_Complex long", result_value="1 + 2i")
 
     @no_debug_info_test
     def test_long_long(self):
@@ -30,5 +37,10 @@ class TestCase(TestBase):
 
         # FIXME: We get the type wrong if long has the same size as long long.
         # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong.
-        self.expect_expr("complex_long_long", result_type="_Complex long")
-        self.expect_expr("complex_unsigned_long_long", result_type="_Complex long", result_value="1 + 2i")
+        long_size_eq_long_long = self.frame().EvaluateExpression("sizeof(long) == sizeof(long long)")
+        if long_size_eq_long_long.GetValue() == "true":
+            self.expect_expr("complex_long_long", result_type="_Complex long")
+            self.expect_expr("complex_unsigned_long_long", result_type="_Complex long", result_value="1 + 2i")
+        else:
+            self.expect_expr("complex_long_long", result_type="_Complex long long")
+            self.expect_expr("complex_unsigned_long_long", result_type="_Complex long long", result_value="1 + 2i")