Attach metadata to generated IR with pointers to original AST Stmts.

This is done in two parts: a MetadataInserter object is added to CodeGenFunction, and keeps a stack of Stmt pointers. If a Stmt is being traversed by CodeGen it is pushed onto the stack, and removed when traversal is finished. Secondly, we make IRBuilder use a custom Inserter, which has knowledge of the MetadataInserter being used, and attaches Metadata appropriately to any Instruction that it inserts. Because certain IRBuilderBase functions do not use the Inserter (CreateMemSet, CreateMemCpy, CreateMemMove), we use a custom IRBuilder which extends llvm::IRBuilder and implements custom versions of these functions to catch the inserted Instruction and attach Metadata to it.
Don't emit Metadata for Instructions with no known source Stmt.
Attach metadata to generated IR with pointers to original AST Stmts.

This is done in two parts: a MetadataInserter object is added to CodeGenFunction, and keeps a stack of Stmt pointers. If a Stmt is being traversed by CodeGen it is pushed onto the stack, and removed when traversal is finished. Secondly, we make IRBuilder use a custom Inserter, which has knowledge of the MetadataInserter being used, and attaches Metadata appropriately to any Instruction that it inserts. Because certain IRBuilderBase functions do not use the Inserter (CreateMemSet, CreateMemCpy, CreateMemMove), we use a custom IRBuilder which extends llvm::IRBuilder and implements custom versions of these functions to catch the inserted Instruction and attach Metadata to it.
Don't emit Metadata for Instructions with no known source Stmt.
Attach metadata to generated IR with pointers to original AST Stmts.

This is done in two parts: a MetadataInserter object is added to CodeGenFunction, and keeps a stack of Stmt pointers. If a Stmt is being traversed by CodeGen it is pushed onto the stack, and removed when traversal is finished. Secondly, we make IRBuilder use a custom Inserter, which has knowledge of the MetadataInserter being used, and attaches Metadata appropriately to any Instruction that it inserts. Because certain IRBuilderBase functions do not use the Inserter (CreateMemSet, CreateMemCpy, CreateMemMove), we use a custom IRBuilder which extends llvm::IRBuilder and implements custom versions of these functions to catch the inserted Instruction and attach Metadata to it.
Don't emit Metadata for Instructions with no known source Stmt.
Attach metadata to generated IR with pointers to original AST Stmts.

This is done in two parts: a MetadataInserter object is added to CodeGenFunction, and keeps a stack of Stmt pointers. If a Stmt is being traversed by CodeGen it is pushed onto the stack, and removed when traversal is finished. Secondly, we make IRBuilder use a custom Inserter, which has knowledge of the MetadataInserter being used, and attaches Metadata appropriately to any Instruction that it inserts. Because certain IRBuilderBase functions do not use the Inserter (CreateMemSet, CreateMemCpy, CreateMemMove), we use a custom IRBuilder which extends llvm::IRBuilder and implements custom versions of these functions to catch the inserted Instruction and attach Metadata to it.
Attach metadata to generated IR with pointers to original AST Stmts.

This is done in two parts: a MetadataInserter object is added to CodeGenFunction, and keeps a stack of Stmt pointers. If a Stmt is being traversed by CodeGen it is pushed onto the stack, and removed when traversal is finished. Secondly, we make IRBuilder use a custom Inserter, which has knowledge of the MetadataInserter being used, and attaches Metadata appropriately to any Instruction that it inserts. Because certain IRBuilderBase functions do not use the Inserter (CreateMemSet, CreateMemCpy, CreateMemMove), we use a custom IRBuilder which extends llvm::IRBuilder and implements custom versions of these functions to catch the inserted Instruction and attach Metadata to it.
Don't emit Metadata for Instructions with no known source Stmt.
Merge branch 'seec-clang' of github.com:mheinsen/seec-clang into seec-clang
Merge branch 'master' into seec-clang
Merge branch 'seec-clang' of github.com:mheinsen/seec-clang into seec-clang
Merge branch 'master' into seec-clang
Merge branch 'master' into seec-clang
Merge branch 'seec-clang' of github.com:mheinsen/seec-clang into seec-clang
Merge branch 'master' into seec-clang
Merge branch 'master' into seec-clang
Merge branch 'seec-clang' of github.com:mheinsen/seec-clang into seec-clang
Merge branch 'master' into seec-clang

Conflicts:
	lib/CodeGen/CGBuilder.h
Merge branch 'master' into seec-clang