diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-07-31 05:59:27 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:04:48 +0900 |
| commit | a7a805e3f11ed7d24c635aeefab7b7faed444d66 (patch) | |
| tree | 09b4eda143c830d91aa3d2882180189ac5b25bce /tests | |
| parent | 021b726b518a907ae023f40131d58964dbceea01 (diff) | |
| download | ducc-a7a805e3f11ed7d24c635aeefab7b7faed444d66.tar.gz ducc-a7a805e3f11ed7d24c635aeefab7b7faed444d66.tar.zst ducc-a7a805e3f11ed7d24c635aeefab7b7faed444d66.zip | |
feat: support assignment between objects larger than register size
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/072.sh | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/072.sh b/tests/072.sh new file mode 100644 index 0000000..9e7ab9b --- /dev/null +++ b/tests/072.sh @@ -0,0 +1,87 @@ +set -e + +cat <<'EOF' > expected +123 456 +0 0 +123 456 +EOF + +bash ../../test_diff.sh <<'EOF' +struct S { + int a; + int b; +}; +typedef struct S S; + +void* calloc(); +int printf(); + +int main() { + S* s1 = calloc(1, sizeof(S)); + S* s2 = calloc(1, sizeof(S)); + s1->a = 123; + s1->b = 456; + printf("%d %d\n", s1->a, s1->b); + printf("%d %d\n", s2->a, s2->b); + *s2 = *s1; + printf("%d %d\n", s2->a, s2->b); +} +EOF + +cat <<'EOF' > expected +123 456 +0 0 +123 456 +EOF + +bash ../../test_diff.sh <<'EOF' +struct S { + long a; + long b; +}; +typedef struct S S; + +void* calloc(); +int printf(); + +int main() { + S* s1 = calloc(1, sizeof(S)); + S* s2 = calloc(1, sizeof(S)); + s1->a = 123; + s1->b = 456; + printf("%d %d\n", s1->a, s1->b); + printf("%d %d\n", s2->a, s2->b); + *s2 = *s1; + printf("%d %d\n", s2->a, s2->b); +} +EOF + +cat <<'EOF' > expected +123 456 +0 0 +123 456 +EOF + +bash ../../test_diff.sh <<'EOF' +struct S { + long a; + long b; +}; +typedef struct S S; + +void* calloc(); +int printf(); + +int main() { + S s1; + S s2; + s1.a = 123; + s1.b = 456; + s2.a = 0; + s2.b = 0; + printf("%d %d\n", s1.a, s1.b); + printf("%d %d\n", s2.a, s2.b); + s2 = s1; + printf("%d %d\n", s2.a, s2.b); +} +EOF |
