diff --git a/src/compiler/backend/tests.rs b/src/compiler/backend/tests.rs
index 2f0cce5..62ff63e 100644
--- a/src/compiler/backend/tests.rs
+++ b/src/compiler/backend/tests.rs
@@ -12,7 +12,7 @@ fn test_emit() {
 (dec out-color:*v4f32o Output)
 (entry main Fragment OriginUpperLeft (:frag-coord :out-color))
 (fun (main) :<>
-  (store-ptr (out-color)
+  (store-ptr out-color
     (v4f32i (/ (.xy (load-ptr frag-coord))
                (v2f32 1920.0 1080.0)) 
             1.0 
@@ -49,3 +49,58 @@ fn test_type_parse() {
     assert_eq!(parse_type(&"f32".to_string()), Float(32));
     assert_eq!(parse_type(&"s32".to_string()), Int(32));
 }
+
+#[test]
+fn test_block_ssa() {
+    use crate::compiler::backend::*;
+    use crate::compiler::*;
+    use crate::parser::*;
+    let src = "
+    (module Shader Logical GLSL450)
+(import :std GLSL.std.450)
+(bind (out-color:*f32) (Location 0))
+(dec out-color:*f32 Output)
+(entry main Fragment OriginUpperLeft (:out-color))
+(fun (main) :<>
+  (store-ptr out-color 1.0))
+";
+    let ast = parse(tokenize(src));
+    let mut module = meta_compile(ast.unwrap()).unwrap();
+    let fun = module.functions.pop().unwrap();
+    let block = fun.ast.unwrap();
+    let block = block
+        .list()
+        .unwrap()
+        .get(0)
+        .unwrap()
+        .clone();
+    println!("{:#?}", block);
+    let mut vars = vec![];
+    let mut constants = vec![];
+    let mut counter = Box::new(0);
+    let mut stack = vec![];
+    let mut out = vec![];
+    for v in &module.globals {
+        vars.push((v.name.clone(), v.typ.clone()));
+    }
+    compile_ast_ssa(
+        block,
+        &mut vars,
+        &mut constants,
+        &mut counter,
+        &mut stack,
+        &mut out,
+    );
+    println!("\n---constants:---\n{:#?}\n------", constants);
+    println!("\n---vars:---\n{:#?}\n------", vars);
+    println!("\n---stack:---\n{:#?}\n------", stack);
+    println!("\n---counter---\n{}\n------", counter);
+    println!("\n---out---");
+    for (a, b) in &out {
+        match a {
+            Some(a) => println!("%{} = {}", a, b),
+            None => println!("{}", b),
+        }
+    }
+    println!("------");
+}
diff --git a/src/parser/tests.rs b/src/parser/tests.rs
index 8e94147..4a96b68 100644
--- a/src/parser/tests.rs
+++ b/src/parser/tests.rs
@@ -44,7 +44,7 @@ fn test_parse() {
 (dec out-color:*v4f32o Output)
 (entry main Fragment OriginUpperLeft (:frag-coord :out-color))
 (fun (main) :<>
-  (store-ptr (out-color)
+  (store-ptr out-color
     (v4f32i (/ (.xy (load-ptr frag-coord))
                (v2f32 1920.0 1080.0)) 
             1.0 
@@ -111,9 +111,7 @@ fn test_parse() {
             Ast::Symbol(Localised::dummy_location(":<>".to_string())),
             Ast::List(Localised::dummy_location(vec![
                 Ast::Symbol(Localised::dummy_location("store-ptr".to_string())),
-                Ast::List(Localised::dummy_location(vec![Ast::Symbol(
-                    Localised::dummy_location("out-color".to_string()),
-                )])),
+                Ast::Symbol(Localised::dummy_location("out-color".to_string())),
                 Ast::List(Localised::dummy_location(vec![
                     Ast::Symbol(Localised::dummy_location("v4f32i".to_string())),
                     Ast::List(Localised::dummy_location(vec![