Inline1
diff --git a/llvm/tools/inline1/CMakeLists.txt b/llvm/tools/inline1/CMakeLists.txt
new file mode 100644
index 0000000..4415429
--- /dev/null
+++ b/llvm/tools/inline1/CMakeLists.txt
@@ -0,0 +1,12 @@
+set(LLVM_LINK_COMPONENTS
+  Core
+  )
+
+add_llvm_tool(inline1
+  t1.c
+  t2.c
+  t3.c
+
+  DEPENDS
+  intrinsics_gen
+  )
diff --git a/llvm/tools/inline1/t1.c b/llvm/tools/inline1/t1.c
new file mode 100644
index 0000000..b58c608
--- /dev/null
+++ b/llvm/tools/inline1/t1.c
@@ -0,0 +1,13 @@
+#ifdef ALWAYS_INLINE 
+__attribute__((always_inline))
+#endif
+int foo(int a, int b) {
+  int s= 0;
+  for(int i = a; i < b; ++i)
+    s+=i;
+  return s*3;
+}
+
+int small(int a) {
+ return a + 3;
+}
diff --git a/llvm/tools/inline1/t2.c b/llvm/tools/inline1/t2.c
new file mode 100644
index 0000000..e2875eb
--- /dev/null
+++ b/llvm/tools/inline1/t2.c
@@ -0,0 +1,11 @@
+int foo(int a, int b);
+int small(int);
+
+int goo(int c, int d) {
+  int s= 0;
+  for(int i = c; i < d; ++i)
+    s+=foo(i, d);
+  for(int i = c*s; i < d*s*3; ++i)
+    s+=i*3 + small(i);
+  return s;
+}
diff --git a/llvm/tools/inline1/t3.c b/llvm/tools/inline1/t3.c
new file mode 100644
index 0000000..e138890
--- /dev/null
+++ b/llvm/tools/inline1/t3.c
@@ -0,0 +1,9 @@
+int foo(int a, int b); 
+int goo(int a, int b); 
+int small(int);
+
+int main() {
+  int s = small(3);
+  s =+ goo(3,2)* goo(5,1) * small(s*2);
+  return foo(s, s+1)- small(s+3);
+}