diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-08-25 14:29:48 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-08-25 14:55:25 +0200 |
| commit | 96f388f0f55cfa1984daa70d7dc4faa63a85c590 (patch) | |
| tree | 5a8af02749000a8228f4d8f68720f088356faef6 /validation/linear | |
| parent | d46b7b2f9fc4769d8dce72913bfac370f1d69df5 (diff) | |
| parent | 3f06ccfcc0be01c0d5bc6a982c2fbadf62fa502a (diff) | |
| download | sparse-dev-96f388f0f55cfa1984daa70d7dc4faa63a85c590.tar.gz | |
Merge branch 'ssa' into tip
* do 'classical' SSA conversion (via the iterated dominance frontier).
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/linear')
| -rw-r--r-- | validation/linear/compound-literal00.c | 18 | ||||
| -rw-r--r-- | validation/linear/compound-literal01.c | 18 | ||||
| -rw-r--r-- | validation/linear/compound-literal02.c | 19 | ||||
| -rw-r--r-- | validation/linear/logical.c | 70 | ||||
| -rw-r--r-- | validation/linear/stray-phisrc.c | 25 |
5 files changed, 90 insertions, 60 deletions
diff --git a/validation/linear/compound-literal00.c b/validation/linear/compound-literal00.c new file mode 100644 index 00000000..f3069d2c --- /dev/null +++ b/validation/linear/compound-literal00.c @@ -0,0 +1,18 @@ +struct bfs { + int a: 2; + int b: 30; +}; + +int foo(void) +{ + return (struct bfs){ .a = 1, .b = 2}.b; +} + +/* + * check-name: compound-literal00.c + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret\\..*\\$2 + * check-error-end + */ diff --git a/validation/linear/compound-literal01.c b/validation/linear/compound-literal01.c new file mode 100644 index 00000000..e45fade3 --- /dev/null +++ b/validation/linear/compound-literal01.c @@ -0,0 +1,18 @@ +struct bfs { + int a: 2; + int b: 30; +}; + +int foo(void) +{ + struct bfs bf = { .a = 1, .b = 2 }; + return (struct bfs[]){bf}[0].b; +} + +/* + * check-name: compound-literal01.c + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret\\..*\\$2 + */ diff --git a/validation/linear/compound-literal02.c b/validation/linear/compound-literal02.c new file mode 100644 index 00000000..87b98d76 --- /dev/null +++ b/validation/linear/compound-literal02.c @@ -0,0 +1,19 @@ +struct bfs { + int a: 2; + int b: 30; +}; + +int bar(void) +{ + struct bfs bf = { .a = 1, .b = 4 }; + return (struct bfs[]){bf, { .a = 3, .b = 6}}[1].b; +} + +/* + * check-name: compound-literal02.c + * check-command: test-linearize -Wno-decl $file + * + * check-known-to-fail + * check-output-ignore + * check-output-contains: ret\\..*\\$6 + */ diff --git a/validation/linear/logical.c b/validation/linear/logical.c index 148ad427..0f502c6b 100644 --- a/validation/linear/logical.c +++ b/validation/linear/logical.c @@ -56,7 +56,7 @@ ou: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi5 <- $1 + phisrc.32 %phi4 <- $1 load.32 %r11 <- 0[i] setne.1 %r12 <- %r11, $0 cbr %r12, .L7, .L6 @@ -68,16 +68,16 @@ ou: trunc.3 %r16 <- (32) %r15 setne.1 %r17 <- %r16, $0 zext.32 %r18 <- (1) %r17 - phisrc.32 %phi6 <- %r18 + phisrc.32 %phi5 <- %r18 br .L7 .L7: - phi.32 %r19 <- %phi5, %phi6 - phisrc.32 %phi7(return) <- %r19 + phi.32 %r19 <- %phi4, %phi5 + phisrc.32 %phi6(return) <- %r19 br .L5 .L5: - phi.32 %r20 <- %phi7(return) + phi.32 %r20 <- %phi6(return) ret.32 %r20 @@ -86,7 +86,7 @@ ol: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi9 <- $1 + phisrc.32 %phi7 <- $1 load.32 %r21 <- 0[i] setne.1 %r22 <- %r21, $0 cbr %r22, .L11, .L10 @@ -96,16 +96,16 @@ ol: load.64 %r24 <- 8[%r23] setne.1 %r25 <- %r24, $0 zext.32 %r26 <- (1) %r25 - phisrc.32 %phi10 <- %r26 + phisrc.32 %phi8 <- %r26 br .L11 .L11: - phi.32 %r27 <- %phi9, %phi10 - phisrc.32 %phi11(return) <- %r27 + phi.32 %r27 <- %phi7, %phi8 + phisrc.32 %phi9(return) <- %r27 br .L9 .L9: - phi.32 %r28 <- %phi11(return) + phi.32 %r28 <- %phi9(return) ret.32 %r28 @@ -114,7 +114,7 @@ od: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi13 <- $1 + phisrc.32 %phi10 <- $1 load.32 %r29 <- 0[i] setne.1 %r30 <- %r29, $0 cbr %r30, .L15, .L14 @@ -125,16 +125,16 @@ od: setfval.64 %r33 <- 0.000000e+00 fcmpune.1 %r34 <- %r32, %r33 zext.32 %r35 <- (1) %r34 - phisrc.32 %phi14 <- %r35 + phisrc.32 %phi11 <- %r35 br .L15 .L15: - phi.32 %r36 <- %phi13, %phi14 - phisrc.32 %phi15(return) <- %r36 + phi.32 %r36 <- %phi10, %phi11 + phisrc.32 %phi12(return) <- %r36 br .L13 .L13: - phi.32 %r37 <- %phi15(return) + phi.32 %r37 <- %phi12(return) ret.32 %r37 @@ -143,7 +143,7 @@ as: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi17 <- $0 + phisrc.32 %phi13 <- $0 load.32 %r38 <- 0[i] setne.1 %r39 <- %r38, $0 cbr %r39, .L18, .L19 @@ -155,16 +155,16 @@ as: trunc.2 %r43 <- (32) %r42 setne.1 %r44 <- %r43, $0 zext.32 %r45 <- (1) %r44 - phisrc.32 %phi18 <- %r45 + phisrc.32 %phi14 <- %r45 br .L19 .L19: - phi.32 %r46 <- %phi18, %phi17 - phisrc.32 %phi19(return) <- %r46 + phi.32 %r46 <- %phi14, %phi13 + phisrc.32 %phi15(return) <- %r46 br .L17 .L17: - phi.32 %r47 <- %phi19(return) + phi.32 %r47 <- %phi15(return) ret.32 %r47 @@ -173,7 +173,7 @@ au: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi21 <- $0 + phisrc.32 %phi16 <- $0 load.32 %r48 <- 0[i] setne.1 %r49 <- %r48, $0 cbr %r49, .L22, .L23 @@ -185,16 +185,16 @@ au: trunc.3 %r53 <- (32) %r52 setne.1 %r54 <- %r53, $0 zext.32 %r55 <- (1) %r54 - phisrc.32 %phi22 <- %r55 + phisrc.32 %phi17 <- %r55 br .L23 .L23: - phi.32 %r56 <- %phi22, %phi21 - phisrc.32 %phi23(return) <- %r56 + phi.32 %r56 <- %phi17, %phi16 + phisrc.32 %phi18(return) <- %r56 br .L21 .L21: - phi.32 %r57 <- %phi23(return) + phi.32 %r57 <- %phi18(return) ret.32 %r57 @@ -203,7 +203,7 @@ al: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi25 <- $0 + phisrc.32 %phi19 <- $0 load.32 %r58 <- 0[i] setne.1 %r59 <- %r58, $0 cbr %r59, .L26, .L27 @@ -213,16 +213,16 @@ al: load.64 %r61 <- 8[%r60] setne.1 %r62 <- %r61, $0 zext.32 %r63 <- (1) %r62 - phisrc.32 %phi26 <- %r63 + phisrc.32 %phi20 <- %r63 br .L27 .L27: - phi.32 %r64 <- %phi26, %phi25 - phisrc.32 %phi27(return) <- %r64 + phi.32 %r64 <- %phi20, %phi19 + phisrc.32 %phi21(return) <- %r64 br .L25 .L25: - phi.32 %r65 <- %phi27(return) + phi.32 %r65 <- %phi21(return) ret.32 %r65 @@ -231,7 +231,7 @@ ad: <entry-point> store.32 %arg1 -> 0[i] store.64 %arg2 -> 0[b] - phisrc.32 %phi29 <- $0 + phisrc.32 %phi22 <- $0 load.32 %r66 <- 0[i] setne.1 %r67 <- %r66, $0 cbr %r67, .L30, .L31 @@ -242,16 +242,16 @@ ad: setfval.64 %r70 <- 0.000000e+00 fcmpune.1 %r71 <- %r69, %r70 zext.32 %r72 <- (1) %r71 - phisrc.32 %phi30 <- %r72 + phisrc.32 %phi23 <- %r72 br .L31 .L31: - phi.32 %r73 <- %phi30, %phi29 - phisrc.32 %phi31(return) <- %r73 + phi.32 %r73 <- %phi23, %phi22 + phisrc.32 %phi24(return) <- %r73 br .L29 .L29: - phi.32 %r74 <- %phi31(return) + phi.32 %r74 <- %phi24(return) ret.32 %r74 diff --git a/validation/linear/stray-phisrc.c b/validation/linear/stray-phisrc.c deleted file mode 100644 index e9f35c89..00000000 --- a/validation/linear/stray-phisrc.c +++ /dev/null @@ -1,25 +0,0 @@ -static int foo(int **g) -{ - int i = 1; - int *a[2]; - int **p; - - a[1] = &i; - if (g) - p = g; - else - p = &a[0]; - p += 1; // will point to a[1] = &i - if (!g) - **p = 0; - return i; -} - -/* - * check-name: stray phisrc - * check-command: test-linearize -Wno-decl $file - * check-known-to-fail - * - * check-output-ignore - * check-output-excludes: phisrc\\. - */ |
