diff options
author | Giuliano Procida <gprocida@google.com> | 2023-11-17 09:28:30 +0000 |
---|---|---|
committer | Giuliano Procida <gprocida@google.com> | 2023-11-20 12:59:25 +0000 |
commit | 51b5cb889f948751d23a24151dcea0e63e3ed8f5 (patch) | |
tree | 2da9f1976439f8cd9a94abad684970b1ee03e4c9 | |
parent | 1a6b9013517601f0ec82ab1b0dbb8c657608cf96 (diff) | |
download | stg-51b5cb889f948751d23a24151dcea0e63e3ed8f5.tar.gz |
test cases: simplify reference/type tests
These test cases no longer test more than needed nor require passing
`-fstandalone-debug` to Clang.
PiperOrigin-RevId: 583304173
Change-Id: I74e8ae1cff8fb1a43ef000aa1089e6de8321484e
-rw-r--r-- | test_cases/abigail_reader/reference/expected/type_cc.abi_stg | 117 | ||||
-rw-r--r-- | test_cases/abigail_reader/reference/type.cc.xml | 43 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/expected/type_cc.o_o_flat | 39 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/expected/type_cc.o_o_plain | 39 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/expected/type_cc.o_o_small | 25 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/expected/type_cc.o_o_viz | 59 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/type.0.cc | 18 | ||||
-rw-r--r-- | test_cases/diff_tests/reference/type.1.cc | 18 | ||||
-rw-r--r-- | test_cases/info_tests/reference/expected/type_cc.elf_stg | 118 | ||||
-rw-r--r-- | test_cases/info_tests/reference/type.cc | 18 |
10 files changed, 142 insertions, 352 deletions
diff --git a/test_cases/abigail_reader/reference/expected/type_cc.abi_stg b/test_cases/abigail_reader/reference/expected/type_cc.abi_stg index f50e7d0..8c173af 100644 --- a/test_cases/abigail_reader/reference/expected/type_cc.abi_stg +++ b/test_cases/abigail_reader/reference/expected/type_cc.abi_stg @@ -1,126 +1,67 @@ version: 0x00000002 root_id: 0x84ea5130 -special { - id: 0x48b5725f - kind: VOID -} -pointer_reference { - id: 0x0483e6f8 - kind: POINTER - pointee_type_id: 0x384f7d7c -} pointer_reference { - id: 0x24b3ee1b + id: 0x13580d6c kind: POINTER - pointee_type_id: 0xb88f5ef1 -} -pointer_reference { - id: 0x547353fb - kind: RVALUE_REFERENCE - pointee_type_id: 0xb88f5ef1 + pointee_type_id: 0x6720d32f } pointer_reference { - id: 0x74435b18 + id: 0x6398b08c kind: RVALUE_REFERENCE - pointee_type_id: 0x384f7d7c + pointee_type_id: 0x6720d32f } pointer_reference { - id: 0xc983f02f + id: 0xde581bbb kind: LVALUE_REFERENCE - pointee_type_id: 0x384f7d7c -} -pointer_reference { - id: 0xe9b3f8cc - kind: LVALUE_REFERENCE - pointee_type_id: 0xb88f5ef1 + pointee_type_id: 0x6720d32f } primitive { - id: 0x384f7d7c - name: "char" - bytesize: 0x00000001 -} -primitive { - id: 0xfc0e1dbd - name: "long" - bytesize: 0x00000008 + id: 0x6720d32f + name: "int" + bytesize: 0x00000004 } member { - id: 0x356c9a41 - name: "lref1" - type_id: 0xe9b3f8cc + id: 0xc46f84f6 + name: "lref" + type_id: 0xde581bbb offset: 64 } member { - id: 0xf58c07c5 - name: "lref2" - type_id: 0xc983f02f - offset: 256 + id: 0x46e392d8 + name: "ptr" + type_id: 0x13580d6c } member { - id: 0xfceed921 - name: "ptr1" - type_id: 0x24b3ee1b -} -member { - id: 0xbc0ffbf4 - name: "ptr2" - type_id: 0x0483e6f8 - offset: 192 -} -member { - id: 0x28142580 - name: "rref1" - type_id: 0x547353fb + id: 0x2a89c81c + name: "rref" + type_id: 0x6398b08c offset: 128 } -member { - id: 0x6f76291d - name: "rref2" - type_id: 0x74435b18 - offset: 320 -} -member { - id: 0xa04e65cb - name: "x" - type_id: 0xfc0e1dbd -} -struct_union { - id: 0xe507e03d - kind: STRUCT - name: "boo" - definition { - bytesize: 48 - member_id: 0xfceed921 - member_id: 0x356c9a41 - member_id: 0x28142580 - member_id: 0xbc0ffbf4 - member_id: 0xf58c07c5 - member_id: 0x6f76291d - } -} struct_union { id: 0xb88f5ef1 kind: STRUCT name: "foo" definition { - bytesize: 8 - member_id: 0xa04e65cb + bytesize: 24 + member_id: 0x46e392d8 + member_id: 0xc46f84f6 + member_id: 0x2a89c81c } } function { - id: 0x29d9a99c - return_type_id: 0x48b5725f - parameter_id: 0xe507e03d + id: 0xb3a33493 + return_type_id: 0x6720d32f + parameter_id: 0xb88f5ef1 } elf_symbol { - id: 0x1f6f1cb8 - name: "_Z4func3boo" + id: 0x68629c2b + name: "_Z4func3foo" is_defined: true symbol_type: FUNCTION - type_id: 0x29d9a99c + type_id: 0xb3a33493 full_name: "func" } interface { id: 0x84ea5130 - symbol_id: 0x1f6f1cb8 + symbol_id: 0x68629c2b } diff --git a/test_cases/abigail_reader/reference/type.cc.xml b/test_cases/abigail_reader/reference/type.cc.xml index d90e8b4..9b620a3 100644 --- a/test_cases/abigail_reader/reference/type.cc.xml +++ b/test_cases/abigail_reader/reference/type.cc.xml @@ -1,45 +1,26 @@ <abi-corpus version='2.1'> <elf-function-symbols> - <elf-symbol name='_Z4func3boo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_Z4func3foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <abi-instr address-size='64' path='type.cc' language='LANG_C_plus_plus_14'> - <type-decl name='char' size-in-bits='8' id='a84c031d'/> - <type-decl name='long' size-in-bits='64' id='c2ecdf53'/> - <class-decl name='foo' size-in-bits='64' is-struct='yes' visibility='default' id='3f46facf'> + <type-decl name='int' size-in-bits='32' id='95e97e5e'/> + <class-decl name='foo' size-in-bits='192' is-struct='yes' visibility='default' id='3f46facf'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='x' type-id='c2ecdf53' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='boo' size-in-bits='384' is-struct='yes' visibility='default' id='f3e3f3fb'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ptr1' type-id='8750e847' visibility='default'/> + <var-decl name='ptr' type-id='7292109c' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='lref1' type-id='7b50d563' visibility='default'/> + <var-decl name='lref' type-id='769216e8' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rref1' type-id='653fbb9f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ptr2' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='lref2' type-id='2aa915e1' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='rref2' type-id='ef2d4845' visibility='default'/> + <var-decl name='rref' type-id='75f9e64a' visibility='default'/> </data-member> </class-decl> - <reference-type-def kind='lvalue' type-id='a84c031d' size-in-bits='64' id='2aa915e1'/> - <reference-type-def kind='rvalue' type-id='a84c031d' size-in-bits='64' id='ef2d4845'/> - <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> - <reference-type-def kind='lvalue' type-id='3f46facf' size-in-bits='64' id='7b50d563'/> - <reference-type-def kind='rvalue' type-id='3f46facf' size-in-bits='64' id='653fbb9f'/> - <pointer-type-def type-id='3f46facf' size-in-bits='64' id='8750e847'/> - <function-decl name='func' mangled-name='_Z4func3boo' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4func3boo'> - <parameter type-id='f3e3f3fb' name='a'/> - <return type-id='48b5725f'/> + <reference-type-def kind='lvalue' type-id='95e97e5e' size-in-bits='64' id='769216e8'/> + <reference-type-def kind='rvalue' type-id='95e97e5e' size-in-bits='64' id='75f9e64a'/> + <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> + <function-decl name='func' mangled-name='_Z4func3foo' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4func3foo'> + <parameter type-id='3f46facf' name='x'/> + <return type-id='95e97e5e'/> </function-decl> - <type-decl name='void' id='48b5725f'/> </abi-instr> </abi-corpus> diff --git a/test_cases/diff_tests/reference/expected/type_cc.o_o_flat b/test_cases/diff_tests/reference/expected/type_cc.o_o_flat index 50975e0..3120367 100644 --- a/test_cases/diff_tests/reference/expected/type_cc.o_o_flat +++ b/test_cases/diff_tests/reference/expected/type_cc.o_o_flat @@ -1,30 +1,17 @@ -function symbol 'void func(struct boo)' {_Z4func3boo} changed - type 'void(struct boo)' changed - parameter 1 type 'struct boo' changed - -type 'struct boo' changed - member 'struct foo* ptr1' changed - type 'struct foo*' changed - pointed-to type 'struct foo' changed - member 'struct foo& lref1' changed - type 'struct foo&' changed - referred-to type 'struct foo' changed - member 'struct foo&& rref1' changed - type 'struct foo&&' changed - referred-to type 'struct foo' changed - member changed from 'int* ptr2' to 'char* ptr2' - type changed from 'int*' to 'char*' - pointed-to type changed from 'int' to 'char' - member changed from 'int& lref2' to 'char& lref2' - type changed from 'int&' to 'char&' - referred-to type changed from 'int' to 'char' - member changed from 'int&& rref2' to 'char&& rref2' - type changed from 'int&&' to 'char&&' - referred-to type changed from 'int' to 'char' +function symbol changed from 'int func(struct foo)' {_Z4func3foo} to 'long func(struct foo)' {_Z4func3foo} + type changed from 'int(struct foo)' to 'long(struct foo)' + return type changed from 'int' to 'long' + parameter 1 type 'struct foo' changed type 'struct foo' changed - byte size changed from 4 to 8 - member changed from 'int x' to 'long x' - type changed from 'int' to 'long' + member changed from 'int* ptr' to 'long* ptr' + type changed from 'int*' to 'long*' + pointed-to type changed from 'int' to 'long' + member changed from 'int& lref' to 'long& lref' + type changed from 'int&' to 'long&' + referred-to type changed from 'int' to 'long' + member changed from 'int&& rref' to 'long&& rref' + type changed from 'int&&' to 'long&&' + referred-to type changed from 'int' to 'long' exit code 4 diff --git a/test_cases/diff_tests/reference/expected/type_cc.o_o_plain b/test_cases/diff_tests/reference/expected/type_cc.o_o_plain index fdcf94f..d4d461f 100644 --- a/test_cases/diff_tests/reference/expected/type_cc.o_o_plain +++ b/test_cases/diff_tests/reference/expected/type_cc.o_o_plain @@ -1,28 +1,15 @@ -function symbol 'void func(struct boo)' {_Z4func3boo} changed - type 'void(struct boo)' changed - parameter 1 type 'struct boo' changed - member 'struct foo* ptr1' changed - type 'struct foo*' changed - pointed-to type 'struct foo' changed - byte size changed from 4 to 8 - member changed from 'int x' to 'long x' - type changed from 'int' to 'long' - member 'struct foo& lref1' changed - type 'struct foo&' changed - referred-to type 'struct foo' changed - (already reported) - member 'struct foo&& rref1' changed - type 'struct foo&&' changed - referred-to type 'struct foo' changed - (already reported) - member changed from 'int* ptr2' to 'char* ptr2' - type changed from 'int*' to 'char*' - pointed-to type changed from 'int' to 'char' - member changed from 'int& lref2' to 'char& lref2' - type changed from 'int&' to 'char&' - referred-to type changed from 'int' to 'char' - member changed from 'int&& rref2' to 'char&& rref2' - type changed from 'int&&' to 'char&&' - referred-to type changed from 'int' to 'char' +function symbol changed from 'int func(struct foo)' {_Z4func3foo} to 'long func(struct foo)' {_Z4func3foo} + type changed from 'int(struct foo)' to 'long(struct foo)' + return type changed from 'int' to 'long' + parameter 1 type 'struct foo' changed + member changed from 'int* ptr' to 'long* ptr' + type changed from 'int*' to 'long*' + pointed-to type changed from 'int' to 'long' + member changed from 'int& lref' to 'long& lref' + type changed from 'int&' to 'long&' + referred-to type changed from 'int' to 'long' + member changed from 'int&& rref' to 'long&& rref' + type changed from 'int&&' to 'long&&' + referred-to type changed from 'int' to 'long' exit code 4 diff --git a/test_cases/diff_tests/reference/expected/type_cc.o_o_small b/test_cases/diff_tests/reference/expected/type_cc.o_o_small index 2634b3f..52343e7 100644 --- a/test_cases/diff_tests/reference/expected/type_cc.o_o_small +++ b/test_cases/diff_tests/reference/expected/type_cc.o_o_small @@ -1,17 +1,16 @@ -type 'struct boo' changed - member changed from 'int* ptr2' to 'char* ptr2' - type changed from 'int*' to 'char*' - pointed-to type changed from 'int' to 'char' - member changed from 'int& lref2' to 'char& lref2' - type changed from 'int&' to 'char&' - referred-to type changed from 'int' to 'char' - member changed from 'int&& rref2' to 'char&& rref2' - type changed from 'int&&' to 'char&&' - referred-to type changed from 'int' to 'char' +function symbol changed from 'int func(struct foo)' {_Z4func3foo} to 'long func(struct foo)' {_Z4func3foo} + type changed from 'int(struct foo)' to 'long(struct foo)' + return type changed from 'int' to 'long' type 'struct foo' changed - byte size changed from 4 to 8 - member changed from 'int x' to 'long x' - type changed from 'int' to 'long' + member changed from 'int* ptr' to 'long* ptr' + type changed from 'int*' to 'long*' + pointed-to type changed from 'int' to 'long' + member changed from 'int& lref' to 'long& lref' + type changed from 'int&' to 'long&' + referred-to type changed from 'int' to 'long' + member changed from 'int&& rref' to 'long&& rref' + type changed from 'int&&' to 'long&&' + referred-to type changed from 'int' to 'long' exit code 4 diff --git a/test_cases/diff_tests/reference/expected/type_cc.o_o_viz b/test_cases/diff_tests/reference/expected/type_cc.o_o_viz index d1baeea..e1d2baa 100644 --- a/test_cases/diff_tests/reference/expected/type_cc.o_o_viz +++ b/test_cases/diff_tests/reference/expected/type_cc.o_o_viz @@ -1,47 +1,26 @@ digraph "ABI diff" { "0" [shape=rectangle, label="'interface'"] - "1" [label="'void func(struct boo)' {_Z4func3boo}"] - "2" [label="'void(struct boo)'"] - "3" [shape=rectangle, label="'struct boo'"] - "4" [label="'struct foo* ptr1'"] - "5" [label="'struct foo*'"] - "6" [color=red, shape=rectangle, label="'struct foo'"] - "6" -> "6:0" - "6:0" [color=red, label="byte size changed from 4 to 8"] - "7" [label="'int x' -> 'long x'"] - "8" [color=red, label="'int' -> 'long'"] - "7" -> "8" [label=""] - "6" -> "7" [label=""] - "5" -> "6" [label="pointed-to"] + "1" [label="'int func(struct foo)' {_Z4func3foo} -> 'long func(struct foo)' {_Z4func3foo}"] + "2" [label="'int(struct foo)' -> 'long(struct foo)'"] + "3" [color=red, label="'int' -> 'long'"] + "2" -> "3" [label="return"] + "4" [shape=rectangle, label="'struct foo'"] + "5" [label="'int* ptr' -> 'long* ptr'"] + "6" [label="'int*' -> 'long*'"] + "6" -> "3" [label="pointed-to"] + "5" -> "6" [label=""] "4" -> "5" [label=""] - "3" -> "4" [label=""] - "9" [label="'struct foo& lref1'"] - "10" [label="'struct foo&'"] - "10" -> "6" [label="referred-to"] + "7" [label="'int& lref' -> 'long& lref'"] + "8" [label="'int&' -> 'long&'"] + "8" -> "3" [label="referred-to"] + "7" -> "8" [label=""] + "4" -> "7" [label=""] + "9" [label="'int&& rref' -> 'long&& rref'"] + "10" [label="'int&&' -> 'long&&'"] + "10" -> "3" [label="referred-to"] "9" -> "10" [label=""] - "3" -> "9" [label=""] - "11" [label="'struct foo&& rref1'"] - "12" [label="'struct foo&&'"] - "12" -> "6" [label="referred-to"] - "11" -> "12" [label=""] - "3" -> "11" [label=""] - "13" [label="'int* ptr2' -> 'char* ptr2'"] - "14" [label="'int*' -> 'char*'"] - "15" [color=red, label="'int' -> 'char'"] - "14" -> "15" [label="pointed-to"] - "13" -> "14" [label=""] - "3" -> "13" [label=""] - "16" [label="'int& lref2' -> 'char& lref2'"] - "17" [label="'int&' -> 'char&'"] - "17" -> "15" [label="referred-to"] - "16" -> "17" [label=""] - "3" -> "16" [label=""] - "18" [label="'int&& rref2' -> 'char&& rref2'"] - "19" [label="'int&&' -> 'char&&'"] - "19" -> "15" [label="referred-to"] - "18" -> "19" [label=""] - "3" -> "18" [label=""] - "2" -> "3" [label="parameter 1"] + "4" -> "9" [label=""] + "2" -> "4" [label="parameter 1"] "1" -> "2" [label=""] "0" -> "1" [label=""] } diff --git a/test_cases/diff_tests/reference/type.0.cc b/test_cases/diff_tests/reference/type.0.cc index 7bc1df8..b45c45c 100644 --- a/test_cases/diff_tests/reference/type.0.cc +++ b/test_cases/diff_tests/reference/type.0.cc @@ -1,17 +1,9 @@ struct foo { - int x; + int* ptr; + int& lref; + int&& rref; }; -struct boo { - foo* ptr1; - foo& lref1; - foo&& rref1; - - int* ptr2; - int& lref2; - int&& rref2; -}; - -void func(boo a) { - (void) a; +int func(foo x) { + return *x.ptr + x.lref + x.rref; } diff --git a/test_cases/diff_tests/reference/type.1.cc b/test_cases/diff_tests/reference/type.1.cc index 8ea06b2..a898be4 100644 --- a/test_cases/diff_tests/reference/type.1.cc +++ b/test_cases/diff_tests/reference/type.1.cc @@ -1,17 +1,9 @@ struct foo { - long x; + long* ptr; + long& lref; + long&& rref; }; -struct boo { - foo* ptr1; - foo& lref1; - foo&& rref1; - - char* ptr2; - char& lref2; - char&& rref2; -}; - -void func(boo a) { - (void) a; +long func(foo x) { + return *x.ptr + x.lref + x.rref; } diff --git a/test_cases/info_tests/reference/expected/type_cc.elf_stg b/test_cases/info_tests/reference/expected/type_cc.elf_stg index 09239cb..58bb765 100644 --- a/test_cases/info_tests/reference/expected/type_cc.elf_stg +++ b/test_cases/info_tests/reference/expected/type_cc.elf_stg @@ -1,128 +1,68 @@ version: 0x00000002 root_id: 0x84ea5130 -special { - id: 0x48b5725f - kind: VOID -} -pointer_reference { - id: 0x0483e6f8 - kind: POINTER - pointee_type_id: 0x384f7d7c -} pointer_reference { - id: 0x24b3ee1b + id: 0x13580d6c kind: POINTER - pointee_type_id: 0xb88f5ef1 -} -pointer_reference { - id: 0x547353fb - kind: RVALUE_REFERENCE - pointee_type_id: 0xb88f5ef1 + pointee_type_id: 0x6720d32f } pointer_reference { - id: 0x74435b18 + id: 0x6398b08c kind: RVALUE_REFERENCE - pointee_type_id: 0x384f7d7c + pointee_type_id: 0x6720d32f } pointer_reference { - id: 0xc983f02f + id: 0xde581bbb kind: LVALUE_REFERENCE - pointee_type_id: 0x384f7d7c -} -pointer_reference { - id: 0xe9b3f8cc - kind: LVALUE_REFERENCE - pointee_type_id: 0xb88f5ef1 + pointee_type_id: 0x6720d32f } primitive { - id: 0x384f7d7c - name: "char" - encoding: UNSIGNED_CHARACTER - bytesize: 0x00000001 -} -primitive { - id: 0xfc0e1dbd - name: "long" + id: 0x6720d32f + name: "int" encoding: SIGNED_INTEGER - bytesize: 0x00000008 + bytesize: 0x00000004 } member { - id: 0x356c9a41 - name: "lref1" - type_id: 0xe9b3f8cc + id: 0xc46f84f6 + name: "lref" + type_id: 0xde581bbb offset: 64 } member { - id: 0xf58c07c5 - name: "lref2" - type_id: 0xc983f02f - offset: 256 + id: 0x46e392d8 + name: "ptr" + type_id: 0x13580d6c } member { - id: 0xfceed921 - name: "ptr1" - type_id: 0x24b3ee1b -} -member { - id: 0xbc0ffbf4 - name: "ptr2" - type_id: 0x0483e6f8 - offset: 192 -} -member { - id: 0x28142580 - name: "rref1" - type_id: 0x547353fb + id: 0x2a89c81c + name: "rref" + type_id: 0x6398b08c offset: 128 } -member { - id: 0x6f76291d - name: "rref2" - type_id: 0x74435b18 - offset: 320 -} -member { - id: 0xa04e65cb - name: "x" - type_id: 0xfc0e1dbd -} -struct_union { - id: 0xe507e03d - kind: STRUCT - name: "boo" - definition { - bytesize: 48 - member_id: 0xfceed921 - member_id: 0x356c9a41 - member_id: 0x28142580 - member_id: 0xbc0ffbf4 - member_id: 0xf58c07c5 - member_id: 0x6f76291d - } -} struct_union { id: 0xb88f5ef1 kind: STRUCT name: "foo" definition { - bytesize: 8 - member_id: 0xa04e65cb + bytesize: 24 + member_id: 0x46e392d8 + member_id: 0xc46f84f6 + member_id: 0x2a89c81c } } function { - id: 0x29d9a99c - return_type_id: 0x48b5725f - parameter_id: 0xe507e03d + id: 0xb3a33493 + return_type_id: 0x6720d32f + parameter_id: 0xb88f5ef1 } elf_symbol { - id: 0x1f6f1cb8 - name: "_Z4func3boo" + id: 0x68629c2b + name: "_Z4func3foo" is_defined: true symbol_type: FUNCTION - type_id: 0x29d9a99c + type_id: 0xb3a33493 full_name: "func" } interface { id: 0x84ea5130 - symbol_id: 0x1f6f1cb8 + symbol_id: 0x68629c2b } diff --git a/test_cases/info_tests/reference/type.cc b/test_cases/info_tests/reference/type.cc index 8ea06b2..b45c45c 100644 --- a/test_cases/info_tests/reference/type.cc +++ b/test_cases/info_tests/reference/type.cc @@ -1,17 +1,9 @@ struct foo { - long x; + int* ptr; + int& lref; + int&& rref; }; -struct boo { - foo* ptr1; - foo& lref1; - foo&& rref1; - - char* ptr2; - char& lref2; - char&& rref2; -}; - -void func(boo a) { - (void) a; +int func(foo x) { + return *x.ptr + x.lref + x.rref; } |