socsvn commit: r272288 - soc2014/dpl/llvm_examples

dpl at FreeBSD.org dpl at FreeBSD.org
Tue Aug 12 14:00:37 UTC 2014


Author: dpl
Date: Tue Aug 12 14:00:35 2014
New Revision: 272288
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=272288

Log:
  Created a dir with llvm examples to be taken for compiling.

Added:
  soc2014/dpl/llvm_examples/
  soc2014/dpl/llvm_examples/general.c
  soc2014/dpl/llvm_examples/general.ll
  soc2014/dpl/llvm_examples/structs.c

Added: soc2014/dpl/llvm_examples/general.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/dpl/llvm_examples/general.c	Tue Aug 12 14:00:35 2014	(r272288)
@@ -0,0 +1,37 @@
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+addone(int n)
+{
+	return (n+1);
+}
+
+int
+main(int argc, char *argv[])
+{
+	int num;
+
+	if (argc != 2)
+		err(1, "Usage: %s number", argv[0]);
+	
+	if (addone(1) != 2)
+		printf("what!");
+
+	num = atoi(argv[1]);
+
+	switch (num) {
+	case 42:
+	case 1:
+		num = addone(num);
+		break;
+	case 10:
+		printf("Ten!\n");
+		break;
+	default:
+		printf("Waaaat\n");
+	}
+
+	return (num);
+}

Added: soc2014/dpl/llvm_examples/general.ll
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/dpl/llvm_examples/general.ll	Tue Aug 12 14:00:35 2014	(r272288)
@@ -0,0 +1,96 @@
+; ModuleID = 'test.c'
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-freebsd11.0"
+
+ at .str = private unnamed_addr constant [17 x i8] c"Usage: %s number\00", align 1
+ at .str1 = private unnamed_addr constant [6 x i8] c"what!\00", align 1
+ at .str2 = private unnamed_addr constant [6 x i8] c"Ten!\0A\00", align 1
+ at .str3 = private unnamed_addr constant [8 x i8] c"Waaaat\0A\00", align 1
+
+; Function Attrs: nounwind uwtable
+define i32 @addone(i32 %n) #0 {
+entry:
+  %n.addr = alloca i32, align 4
+  store i32 %n, i32* %n.addr, align 4
+  %0 = load i32* %n.addr, align 4
+  %add = add nsw i32 %0, 1
+  ret i32 %add
+}
+
+; Function Attrs: nounwind uwtable
+define i32 @main(i32 %argc, i8** %argv) #0 {
+entry:
+  %retval = alloca i32, align 4
+  %argc.addr = alloca i32, align 4
+  %argv.addr = alloca i8**, align 8
+  %num = alloca i32, align 4
+  store i32 0, i32* %retval
+  store i32 %argc, i32* %argc.addr, align 4
+  store i8** %argv, i8*** %argv.addr, align 8
+  %0 = load i32* %argc.addr, align 4
+  %cmp = icmp ne i32 %0, 2
+  br i1 %cmp, label %if.then, label %if.end
+
+if.then:                                          ; preds = %entry
+  %1 = load i8*** %argv.addr, align 8
+  %arrayidx = getelementptr inbounds i8** %1, i64 0
+  %2 = load i8** %arrayidx, align 8
+  call void (i32, i8*, ...)* @err(i32 1, i8* getelementptr inbounds ([17 x i8]* @.str, i32 0, i32 0), i8* %2) #3
+  unreachable
+
+if.end:                                           ; preds = %entry
+  %call = call i32 @addone(i32 1)
+  %cmp1 = icmp ne i32 %call, 2
+  br i1 %cmp1, label %if.then2, label %if.end4
+
+if.then2:                                         ; preds = %if.end
+  %call3 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str1, i32 0, i32 0))
+  br label %if.end4
+
+if.end4:                                          ; preds = %if.then2, %if.end
+  %3 = load i8*** %argv.addr, align 8
+  %arrayidx5 = getelementptr inbounds i8** %3, i64 1
+  %4 = load i8** %arrayidx5, align 8
+  %call6 = call i32 @atoi(i8* %4)
+  store i32 %call6, i32* %num, align 4
+  %5 = load i32* %num, align 4
+  switch i32 %5, label %sw.default [
+    i32 42, label %sw.bb
+    i32 1, label %sw.bb
+    i32 10, label %sw.bb8
+  ]
+
+sw.bb:                                            ; preds = %if.end4, %if.end4
+  %6 = load i32* %num, align 4
+  %call7 = call i32 @addone(i32 %6)
+  store i32 %call7, i32* %num, align 4
+  br label %sw.epilog
+
+sw.bb8:                                           ; preds = %if.end4
+  %call9 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str2, i32 0, i32 0))
+  br label %sw.epilog
+
+sw.default:                                       ; preds = %if.end4
+  %call10 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8]* @.str3, i32 0, i32 0))
+  br label %sw.epilog
+
+sw.epilog:                                        ; preds = %sw.default, %sw.bb8, %sw.bb
+  %7 = load i32* %num, align 4
+  ret i32 %7
+}
+
+; Function Attrs: noreturn
+declare void @err(i32, i8*, ...) #1
+
+declare i32 @printf(i8*, ...) #2
+
+declare i32 @atoi(i8*) #2
+
+attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { noreturn "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #3 = { noreturn }
+
+!llvm.ident = !{!0}
+
+!0 = metadata !{metadata !"FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512"}

Added: soc2014/dpl/llvm_examples/structs.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/dpl/llvm_examples/structs.c	Tue Aug 12 14:00:35 2014	(r272288)
@@ -0,0 +1,21 @@
+#include <sys/socket.h>
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+
+#include <stdio.h>
+
+struct mbuf gmbuf;
+
+int
+main()
+{
+	struct mbuf *m;
+	int pktlen;
+	struct ip *ip = mtod(m, struct ip *);
+
+	m = &gmbuf;
+	pktlen = m->pkthdr.len;
+	
+	return (0);
+}


More information about the svn-soc-all mailing list