Skip to content

Commit b415325

Browse files
committed
Fix (and reenable) ppc64-align-struct.c test for non-assert builds.
llvm-svn: 212757
1 parent 2f6d821 commit b415325

File tree

1 file changed

+36
-37
lines changed

1 file changed

+36
-37
lines changed

clang/test/CodeGen/ppc64-align-struct.c

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// RUN: %clang_cc1 -faltivec -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
2-
// REQUIRES: asserts
32

43
#include <stdarg.h>
54

@@ -32,10 +31,10 @@ void test4 (int x, struct test4 y)
3231
}
3332

3433
// CHECK: define void @test1va(%struct.test1* noalias sret %agg.result, i32 signext %x, ...)
35-
// CHECK: %ap.cur = load i8** %ap
36-
// CHECK: %ap.next = getelementptr i8* %ap.cur, i64 8
37-
// CHECK: store i8* %ap.next, i8** %ap
38-
// CHECK: bitcast i8* %ap.cur to %struct.test1*
34+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
35+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[CUR]], i64 8
36+
// CHECK: store i8* %[[NEXT]], i8** %ap
37+
// CHECK: bitcast i8* %[[CUR]] to %struct.test1*
3938
struct test1 test1va (int x, ...)
4039
{
4140
struct test1 y;
@@ -47,14 +46,14 @@ struct test1 test1va (int x, ...)
4746
}
4847

4948
// CHECK: define void @test2va(%struct.test2* noalias sret %agg.result, i32 signext %x, ...)
50-
// CHECK: %ap.cur = load i8** %ap
51-
// CHECK: %[[TMP0:[0-9]+]] = ptrtoint i8* %ap.cur to i64
52-
// CHECK: %[[TMP1:[0-9]+]] = add i64 %[[TMP0]], 15
53-
// CHECK: %[[TMP2:[0-9]+]] = and i64 %[[TMP1]], -16
54-
// CHECK: %ap.align = inttoptr i64 %[[TMP2]] to i8*
55-
// CHECK: %ap.next = getelementptr i8* %ap.align, i64 16
56-
// CHECK: store i8* %ap.next, i8** %ap
57-
// CHECK: bitcast i8* %ap.align to %struct.test2*
49+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
50+
// CHECK: %[[TMP0:[^ ]+]] = ptrtoint i8* %[[CUR]] to i64
51+
// CHECK: %[[TMP1:[^ ]+]] = add i64 %[[TMP0]], 15
52+
// CHECK: %[[TMP2:[^ ]+]] = and i64 %[[TMP1]], -16
53+
// CHECK: %[[ALIGN:[^ ]+]] = inttoptr i64 %[[TMP2]] to i8*
54+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[ALIGN]], i64 16
55+
// CHECK: store i8* %[[NEXT]], i8** %ap
56+
// CHECK: bitcast i8* %[[ALIGN]] to %struct.test2*
5857
struct test2 test2va (int x, ...)
5958
{
6059
struct test2 y;
@@ -66,14 +65,14 @@ struct test2 test2va (int x, ...)
6665
}
6766

6867
// CHECK: define void @test3va(%struct.test3* noalias sret %agg.result, i32 signext %x, ...)
69-
// CHECK: %ap.cur = load i8** %ap
70-
// CHECK: %[[TMP0:[0-9]+]] = ptrtoint i8* %ap.cur to i64
71-
// CHECK: %[[TMP1:[0-9]+]] = add i64 %[[TMP0]], 15
72-
// CHECK: %[[TMP2:[0-9]+]] = and i64 %[[TMP1]], -16
73-
// CHECK: %ap.align = inttoptr i64 %[[TMP2]] to i8*
74-
// CHECK: %ap.next = getelementptr i8* %ap.align, i64 32
75-
// CHECK: store i8* %ap.next, i8** %ap
76-
// CHECK: bitcast i8* %ap.align to %struct.test3*
68+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
69+
// CHECK: %[[TMP0:[^ ]+]] = ptrtoint i8* %[[CUR]] to i64
70+
// CHECK: %[[TMP1:[^ ]+]] = add i64 %[[TMP0]], 15
71+
// CHECK: %[[TMP2:[^ ]+]] = and i64 %[[TMP1]], -16
72+
// CHECK: %[[ALIGN:[^ ]+]] = inttoptr i64 %[[TMP2]] to i8*
73+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[ALIGN]], i64 32
74+
// CHECK: store i8* %[[NEXT]], i8** %ap
75+
// CHECK: bitcast i8* %[[ALIGN]] to %struct.test3*
7776
struct test3 test3va (int x, ...)
7877
{
7978
struct test3 y;
@@ -85,10 +84,10 @@ struct test3 test3va (int x, ...)
8584
}
8685

8786
// CHECK: define void @test4va(%struct.test4* noalias sret %agg.result, i32 signext %x, ...)
88-
// CHECK: %ap.cur = load i8** %ap
89-
// CHECK: %ap.next = getelementptr i8* %ap.cur, i64 16
90-
// CHECK: store i8* %ap.next, i8** %ap
91-
// CHECK: bitcast i8* %ap.cur to %struct.test4*
87+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
88+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[CUR]], i64 16
89+
// CHECK: store i8* %[[NEXT]], i8** %ap
90+
// CHECK: bitcast i8* %[[CUR]] to %struct.test4*
9291
struct test4 test4va (int x, ...)
9392
{
9493
struct test4 y;
@@ -100,10 +99,10 @@ struct test4 test4va (int x, ...)
10099
}
101100

102101
// CHECK: define void @testva_longdouble(%struct.test_longdouble* noalias sret %agg.result, i32 signext %x, ...)
103-
// CHECK: %ap.cur = load i8** %ap
104-
// CHECK: %ap.next = getelementptr i8* %ap.cur, i64 16
105-
// CHECK: store i8* %ap.next, i8** %ap
106-
// CHECK: bitcast i8* %ap.cur to %struct.test_longdouble*
102+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
103+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[CUR]], i64 16
104+
// CHECK: store i8* %[[NEXT]], i8** %ap
105+
// CHECK: bitcast i8* %[[CUR]] to %struct.test_longdouble*
107106
struct test_longdouble { long double x; };
108107
struct test_longdouble testva_longdouble (int x, ...)
109108
{
@@ -116,14 +115,14 @@ struct test_longdouble testva_longdouble (int x, ...)
116115
}
117116

118117
// CHECK: define void @testva_vector(%struct.test_vector* noalias sret %agg.result, i32 signext %x, ...)
119-
// CHECK: %ap.cur = load i8** %ap
120-
// CHECK: %[[TMP0:[0-9]+]] = ptrtoint i8* %ap.cur to i64
121-
// CHECK: %[[TMP1:[0-9]+]] = add i64 %[[TMP0]], 15
122-
// CHECK: %[[TMP2:[0-9]+]] = and i64 %[[TMP1]], -16
123-
// CHECK: %ap.align = inttoptr i64 %[[TMP2]] to i8*
124-
// CHECK: %ap.next = getelementptr i8* %ap.align, i64 16
125-
// CHECK: store i8* %ap.next, i8** %ap
126-
// CHECK: bitcast i8* %ap.align to %struct.test_vector*
118+
// CHECK: %[[CUR:[^ ]+]] = load i8** %ap
119+
// CHECK: %[[TMP0:[^ ]+]] = ptrtoint i8* %[[CUR]] to i64
120+
// CHECK: %[[TMP1:[^ ]+]] = add i64 %[[TMP0]], 15
121+
// CHECK: %[[TMP2:[^ ]+]] = and i64 %[[TMP1]], -16
122+
// CHECK: %[[ALIGN:[^ ]+]] = inttoptr i64 %[[TMP2]] to i8*
123+
// CHECK: %[[NEXT:[^ ]+]] = getelementptr i8* %[[ALIGN]], i64 16
124+
// CHECK: store i8* %[[NEXT]], i8** %ap
125+
// CHECK: bitcast i8* %[[ALIGN]] to %struct.test_vector*
127126
struct test_vector { vector int x; };
128127
struct test_vector testva_vector (int x, ...)
129128
{

0 commit comments

Comments
 (0)