diff options
| author | Tamas Berghammer <tberghammer@google.com> | 2015-07-22 14:53:37 +0000 |
|---|---|---|
| committer | Tamas Berghammer <tberghammer@google.com> | 2015-07-22 14:53:37 +0000 |
| commit | b6a04a141cb0f0a6b2832f360cc2aaf4569d5d59 (patch) | |
| tree | be8932eca7fa58d74c73482a1760d9cf5129663c /lldb/test/functionalities | |
| parent | 5e73d2523ff7c97dabb037cc31ffc211e8fe0f82 (diff) | |
| download | bcm5719-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.py | 11 | ||||
| -rw-r--r-- | lldb/test/functionalities/return-value/call-func.c | 55 |
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; } |

