From 2bef1a6b25d938210547cd0f5ba4a08abdad2583 Mon Sep 17 00:00:00 2001 From: Anders Waldenborg Date: Wed, 23 Oct 2013 08:10:20 +0000 Subject: Add llvm-c-test tool for testing llvm-c This provides rudimentary testing of the llvm-c api. The following commands are implemented: * --module-dump Read bytecode from stdin - print ir * --module-list-functions Read bytecode from stdin - list summary of functions * --module-list-globals Read bytecode from stdin - list summary of globals * --targets-list List available targets * --object-list-sections Read object file from stdin - list sections * --object-list-symbols Read object file from stdin - list symbols (like nm) * --disassemble Read lines of triple, hex ascii machine code from stdin - print disassembly * --calc Read lines of name, rpn from stdin - print generated module ir Differential-Revision: http://llvm-reviews.chandlerc.com/D1776 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193233 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Bindings/llvm-c/calc.test | 15 +++++++++++++++ test/Bindings/llvm-c/disassemble.test | 29 +++++++++++++++++++++++++++++ test/Bindings/llvm-c/functions.ll | 31 +++++++++++++++++++++++++++++++ test/Bindings/llvm-c/globals.ll | 7 +++++++ test/Bindings/llvm-c/lit.local.cfg | 3 +++ 5 files changed, 85 insertions(+) create mode 100644 test/Bindings/llvm-c/calc.test create mode 100644 test/Bindings/llvm-c/disassemble.test create mode 100644 test/Bindings/llvm-c/functions.ll create mode 100644 test/Bindings/llvm-c/globals.ll create mode 100644 test/Bindings/llvm-c/lit.local.cfg (limited to 'test/Bindings') diff --git a/test/Bindings/llvm-c/calc.test b/test/Bindings/llvm-c/calc.test new file mode 100644 index 0000000..36a76e6 --- /dev/null +++ b/test/Bindings/llvm-c/calc.test @@ -0,0 +1,15 @@ +; RUN: llvm-c-test --calc <%s | FileCheck %s + +; constant folding +test 100 200 + +;CHECK: ModuleID = 'test' +;CHECK: define i64 @test +;CHECK: { +;CHECK: ret i64 300 +;CHECK: } + +arg1 0 @ 0 @ * 1 @ 1 @ * + +;CHECK: ModuleID = 'arg1' +;CHECK: getelementptr +;CHECK: load +;CHECK: ret diff --git a/test/Bindings/llvm-c/disassemble.test b/test/Bindings/llvm-c/disassemble.test new file mode 100644 index 0000000..201e914 --- /dev/null +++ b/test/Bindings/llvm-c/disassemble.test @@ -0,0 +1,29 @@ +; RUN: llvm-c-test --disassemble < %s | FileCheck %s + + +arm-linux-android 44 26 1f e5 0c 10 4b e2 02 20 81 e0 +;CHECK: triple: arm-linux-android +;CHECK: ldr r2, [pc, #-1604] +;CHECK: sub r1, r11, #12 +;CHECK: 02 20 81 e0 +;CHECK: add r2, r1, r2 + +x86_64-linux-unknown 48 83 c4 38 5b 5d 41 5c 41 5d 41 5e 41 5f c3 +;CHECK: triple: x86_64-linux-unknown +;CHECK: addq $56, %rsp +;CHECK: popq %rbx +;CHECK: popq %rbp +;CHECK: popq %r12 +;CHECK: popq %r13 +;CHECK: popq %r14 +;CHECK: popq %r15 +;CHECK: ret + +i686-apple-darwin 0f b7 4c 24 0a e8 29 ce ff ff +;CHECK: movzwl 10(%esp), %ecx +;CHECK: calll -12759 + +i686-linux-unknown dd 44 24 04 d9 e1 c3 +;CHECK: fldl 4(%esp) +;CHECK: fabs +;CHECK: ret diff --git a/test/Bindings/llvm-c/functions.ll b/test/Bindings/llvm-c/functions.ll new file mode 100644 index 0000000..4503fb1 --- /dev/null +++ b/test/Bindings/llvm-c/functions.ll @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | llvm-c-test --module-list-functions | FileCheck %s + +define i32 @X() { +entry: + br label %l1 + +l1: + br label %l2 + +l2: + br label %l3 + +l3: + ret i32 1234 +} +;CHECK: FunctionDefinition: X [#bb=4] + + +define i32 @Z(i32 %a) { +entry: + %0 = tail call i32 @Y(i32 %a) + ret i32 %0 +} + +;CHECK: FunctionDefinition: Z [#bb=1] +;CHECK: calls: Y +;CHECK: #isn: 2 + +declare i32 @Y(i32) +;CHECK: FunctionDeclaration: Y + diff --git a/test/Bindings/llvm-c/globals.ll b/test/Bindings/llvm-c/globals.ll new file mode 100644 index 0000000..a38f08b --- /dev/null +++ b/test/Bindings/llvm-c/globals.ll @@ -0,0 +1,7 @@ +; RUN: llvm-as < %s | llvm-c-test --module-list-globals | FileCheck %s + +@foo = constant [7 x i8] c"foobar\00", align 1 +;CHECK: GlobalDefinition: foo [7 x i8]* + +@bar = common global i32 0, align 4 +;CHECK: GlobalDefinition: bar i32* diff --git a/test/Bindings/llvm-c/lit.local.cfg b/test/Bindings/llvm-c/lit.local.cfg new file mode 100644 index 0000000..270a7f2 --- /dev/null +++ b/test/Bindings/llvm-c/lit.local.cfg @@ -0,0 +1,3 @@ +targets = set(config.root.targets_to_build.split()) +if not (targets & set(["X86", "ARM"])): + config.unsupported = True -- cgit v1.1