aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cases/phientryimplicitmix.ll30
-rwxr-xr-xtests/runner.py36
2 files changed, 61 insertions, 5 deletions
diff --git a/tests/cases/phientryimplicitmix.ll b/tests/cases/phientryimplicitmix.ll
new file mode 100644
index 00000000..9223c059
--- /dev/null
+++ b/tests/cases/phientryimplicitmix.ll
@@ -0,0 +1,30 @@
+; ModuleID = 'tests/hello_world.bc'
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128"
+target triple = "i386-pc-linux-gnu"
+
+; Phi nodes can refer to the entry. And the entry might be unnamed, and doesn't even have a consistent implicit name!
+
+@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*]
+
+; [#uses=0]
+define i32 @main() {
+ %retval = alloca i32, align 4 ; [#uses=1 type=i32*]
+ %16 = trunc i32 1 to i1
+ br i1 %16, label %whoosh, label %26, !dbg !1269853 ; [debug line = 3920:5]
+
+whoosh: ; preds = %1
+ %25 = trunc i32 1 to i1
+ br label %26
+
+; <label>:26 ; preds = %17, %1
+ %27 = phi i1 [ false, %1 ], [ %25, %whoosh ] ; [#uses=1 type=i1]
+ %28 = phi i1 [ true, %1 ], [ %25, %whoosh ] ; [#uses=1 type=i1]
+ store i32 0, i32* %retval
+ %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32]
+ %cal2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), i32 %27) ; make sure %27 is used
+ %cal3 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), i32 %28) ; make sure %28 is used
+ ret i32 1
+}
+
+; [#uses=1]
+declare i32 @printf(i8*, ...)
diff --git a/tests/runner.py b/tests/runner.py
index 93511589..4fd7ddfc 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -583,6 +583,37 @@ if 'benchmark' not in str(sys.argv) and 'sanity' not in str(sys.argv):
'*-1,34359738367,4294967295,1073741823*\n' +
'*prod:34*')
+ src = r'''
+ #include <stdio.h>
+ #include <limits>
+
+ int main()
+ {
+ long long i,j,k;
+
+ i = 0;
+ j = -1,
+ k = 1;
+
+ printf( "*\n" );
+ printf( "%s\n", i > j ? "Ok": "Fail" );
+ printf( "%s\n", k > i ? "Ok": "Fail" );
+ printf( "%s\n", k > j ? "Ok": "Fail" );
+ printf( "%s\n", i < j ? "Fail": "Ok" );
+ printf( "%s\n", k < i ? "Fail": "Ok" );
+ printf( "%s\n", k < j ? "Fail": "Ok" );
+ printf( "%s\n", (i-j) >= k ? "Ok": "Fail" );
+ printf( "%s\n", (i-j) <= k ? "Ok": "Fail" );
+ printf( "%s\n", i > std::numeric_limits<long long>::min() ? "Ok": "Fail" );
+ printf( "%s\n", i < std::numeric_limits<long long>::max() ? "Ok": "Fail" );
+ printf( "*\n" );
+ }
+ '''
+
+ self.do_run(src, '*\nOk\nOk\nOk\nOk\nOk\nOk\nOk\nOk\nOk\nOk\n*')
+
+ # stuff that also needs sign corrections
+
Settings.CORRECT_SIGNS = 1
src = r'''
@@ -4370,9 +4401,6 @@ def process(filename):
poppler = self.get_library('poppler',
[os.path.join('poppler', '.libs', self.get_shared_library_name('libpoppler.so.13')),
- os.path.join('goo', '.libs', 'libgoo.a'),
- os.path.join('fofi', '.libs', 'libfofi.a'),
- os.path.join('splash', '.libs', 'libsplash.a'),
os.path.join('utils', 'pdftoppm.o'),
os.path.join('utils', 'parseargs.o')],
configure_args=['--disable-libjpeg', '--disable-libpng', '--disable-poppler-qt', '--disable-poppler-qt4', '--disable-cms'])
@@ -5704,9 +5732,7 @@ f.close()
self.assertIdentical(expected, output.replace('\n\n', '\n'))
def test_reminder(self):
- assert False, 'Optimize makeGet/SetValue to do 16-bit reads/writes when possible, not just 8'
assert False, 'Ensure all opts including linktime apply to bindings generator. might need to adjust visibility of bindings C funcs'
- assert False, 'Optimize double version of fasta benchmark'
elif 'benchmark' in str(sys.argv):
# Benchmarks. Run them with argument |benchmark|. To run a specific test, do