diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cases/phientryimplicitmix.ll | 30 | ||||
-rwxr-xr-x | tests/runner.py | 36 |
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 |