aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-08-25 14:29:48 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-08-25 14:55:25 +0200
commit96f388f0f55cfa1984daa70d7dc4faa63a85c590 (patch)
tree5a8af02749000a8228f4d8f68720f088356faef6 /validation/linear
parentd46b7b2f9fc4769d8dce72913bfac370f1d69df5 (diff)
parent3f06ccfcc0be01c0d5bc6a982c2fbadf62fa502a (diff)
downloadsparse-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.c18
-rw-r--r--validation/linear/compound-literal01.c18
-rw-r--r--validation/linear/compound-literal02.c19
-rw-r--r--validation/linear/logical.c70
-rw-r--r--validation/linear/stray-phisrc.c25
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\\.
- */