summaryrefslogtreecommitdiffstats
path: root/lldb/test/functionalities
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2015-07-22 14:53:37 +0000
committerTamas Berghammer <tberghammer@google.com>2015-07-22 14:53:37 +0000
commitb6a04a141cb0f0a6b2832f360cc2aaf4569d5d59 (patch)
treebe8932eca7fa58d74c73482a1760d9cf5129663c /lldb/test/functionalities
parent5e73d2523ff7c97dabb037cc31ffc211e8fe0f82 (diff)
downloadbcm5719-llvm-b6a04a141cb0f0a6b2832f360cc2aaf4569d5d59.tar.gz
bcm5719-llvm-b6a04a141cb0f0a6b2832f360cc2aaf4569d5d59.zip
Improve SysV ABI for ARM to handle return values with vector return type
This is required to print out the rerun value of funcions returning types with the following attributes: __attribute__((__vector_size__(8))); __attribute__((ext_vector_type(2))); Differential revision: http://reviews.llvm.org/D11416 llvm-svn: 242903
Diffstat (limited to 'lldb/test/functionalities')
-rw-r--r--lldb/test/functionalities/return-value/TestReturnValue.py11
-rw-r--r--lldb/test/functionalities/return-value/call-func.c55
2 files changed, 51 insertions, 15 deletions
diff --git a/lldb/test/functionalities/return-value/TestReturnValue.py b/lldb/test/functionalities/return-value/TestReturnValue.py
index 8791b88ae6b..2c7b866aa6f 100644
--- a/lldb/test/functionalities/return-value/TestReturnValue.py
+++ b/lldb/test/functionalities/return-value/TestReturnValue.py
@@ -81,7 +81,7 @@ class ReturnValueTestCase(TestBase):
in_child_str = in_child.GetValue()
ret_child_str = ret_child.GetValue()
- self.assertTrue (in_child_str == ret_child_str)
+ self.assertEqual(in_child_str, ret_child_str)
def do_return_value(self):
"""Test getting return values from stepping out."""
@@ -213,10 +213,13 @@ class ReturnValueTestCase(TestBase):
# icc and gcc don't support this extension.
if self.getCompiler().endswith('clang'):
- self.return_and_test_struct_value ("return_vector_size_float32")
- self.return_and_test_struct_value ("return_ext_vector_size_float32")
+ self.return_and_test_struct_value ("return_vector_size_float32_8")
+ self.return_and_test_struct_value ("return_vector_size_float32_16")
+ self.return_and_test_struct_value ("return_vector_size_float32_32")
+ self.return_and_test_struct_value ("return_ext_vector_size_float32_2")
+ self.return_and_test_struct_value ("return_ext_vector_size_float32_4")
+ self.return_and_test_struct_value ("return_ext_vector_size_float32_8")
-
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
diff --git a/lldb/test/functionalities/return-value/call-func.c b/lldb/test/functionalities/return-value/call-func.c
index c7c68d5b977..0c026ffcca1 100644
--- a/lldb/test/functionalities/return-value/call-func.c
+++ b/lldb/test/functionalities/return-value/call-func.c
@@ -301,17 +301,46 @@ return_one_int_one_pointer (struct one_int_one_pointer value)
return value;
}
-typedef float vector_size_float32 __attribute__((__vector_size__(16)));
-typedef float ext_vector_size_float32 __attribute__((ext_vector_type(4)));
+typedef float vector_size_float32_8 __attribute__((__vector_size__(8)));
+typedef float vector_size_float32_16 __attribute__((__vector_size__(16)));
+typedef float vector_size_float32_32 __attribute__((__vector_size__(32)));
-vector_size_float32
-return_vector_size_float32 (vector_size_float32 value)
+typedef float ext_vector_size_float32_2 __attribute__((ext_vector_type(2)));
+typedef float ext_vector_size_float32_4 __attribute__((ext_vector_type(4)));
+typedef float ext_vector_size_float32_8 __attribute__((ext_vector_type(8)));
+
+vector_size_float32_8
+return_vector_size_float32_8 (vector_size_float32_8 value)
+{
+ return value;
+}
+
+vector_size_float32_16
+return_vector_size_float32_16 (vector_size_float32_16 value)
{
return value;
}
-ext_vector_size_float32
-return_ext_vector_size_float32 (ext_vector_size_float32 value)
+vector_size_float32_32
+return_vector_size_float32_32 (vector_size_float32_32 value)
+{
+ return value;
+}
+
+ext_vector_size_float32_2
+return_ext_vector_size_float32_2 (ext_vector_size_float32_2 value)
+{
+ return value;
+}
+
+ext_vector_size_float32_4
+return_ext_vector_size_float32_4 (ext_vector_size_float32_4 value)
+{
+ return value;
+}
+
+ext_vector_size_float32_8
+return_ext_vector_size_float32_8 (ext_vector_size_float32_8 value)
{
return value;
}
@@ -366,9 +395,13 @@ main ()
return_one_int_one_double_packed ((struct one_int_one_double_packed) {10, 20.0});
return_one_int_one_long ((struct one_int_one_long) {10, 20});
- return_vector_size_float32 (( vector_size_float32 ){1.5, 2.25, 4.125, 8.0625});
- return_ext_vector_size_float32 ((ext_vector_size_float32){ 16.5, 32.25, 64.125, 128.0625});
-
- return 0;
-
+ return_vector_size_float32_8 (( vector_size_float32_8 ){1.5, 2.25});
+ return_vector_size_float32_16 (( vector_size_float32_16 ){1.5, 2.25, 4.125, 8.0625});
+ return_vector_size_float32_32 (( vector_size_float32_32 ){1.5, 2.25, 4.125, 8.0625, 7.89, 8.52, 6.31, 9.12});
+
+ return_ext_vector_size_float32_2 ((ext_vector_size_float32_2){ 16.5, 32.25});
+ return_ext_vector_size_float32_4 ((ext_vector_size_float32_4){ 16.5, 32.25, 64.125, 128.0625});
+ return_ext_vector_size_float32_8 ((ext_vector_size_float32_8){ 16.5, 32.25, 64.125, 128.0625, 1.59, 3.57, 8.63, 9.12 });
+
+ return 0;
}
OpenPOWER on IntegriCloud