Added .bc files to gitignore, moved FindSentinels around
so there's a header file I can include, added a stub of NullAnnotator.
Updated SConstruct to also compile NullAnnotator.
Fixed up FindSentinels so that it looks at Arguments
as a way to get at BasicBlock - code is now restructured
to check whether an array argument's sentinel checks are all
optional. Updated .expecteds to match new outputs and verified
results. I will shortly be adding tests with multiple array
arguments and multiple sentinel checks for each argument.
Added some basic tests with multiple array arguments, including
one test with multiple functions to verify that the arguments are
not being accumulated across functions (they aren't). Added and
verified expected files for each test.
Added accessor method to FindSentinels, filled out more of the
skeleton of NullAnnotator. Now I just need to work out how
to walk the call graph and add that logic, and write tests
before we can start trying this on some real world problems!
Convert several "for" loops to use the newer C++11 range-based style.
Much more readable!
Whitespace-only changes to match indentation and brace style used elsewhere.
Add many const qualifiers, especially to container element types.

For types which are non-const pointers to const data, use "const Foo
*" instead of "Foo const *".  These are actually equivalent, but it's
far more common for C/C++ programmers to put the qualifiers before the
type in situations like this.  Putting it after would definitely make
some folks tilt their head sideways, and possibly even misinterpret
what part the "const" applies to.
Some changes from meeting and my own brainstorm on how to work over
callsites.
Use references instead of pointers for some function arguments that
must never be null.

Don't bother passing both an Argument and its containing Function.  We
can trivially recover the latter given only the former.
Merge branch 'interprocedural-analysis' of https://github.com/AlisaMaas/CArrayIntrospection into interprocedural-analysis

Conflicts:
	FindSentinels.hh
	NullAnnotator.cc
Merge branch 'interprocedural-analysis' of https://github.com/AlisaMaas/CArrayIntrospection into interprocedural-analysis

Conflicts:
	NullAnnotator.cc
Avoid looking up the same key repeatedly when the map has not changed.

Instead, look it up just once and hang on to the result for multiple
uses.  The "result" here might either be an iterator returned by
find() or a reference to the mapped-to value returned by at() or the
"[]" operator.
Add a "plugin" build target alias that just builds the LLVM plugin.
Merge branch 'interprocedural-analysis' of github.com:AlisaMaas/CArrayIntrospection into interprocedural-analysis
More readable way to check for map (or set) containment.
Avoid making copies of several containers; use const references instead.
More readable way to check for map (or set) containment.
Added callsite searching logic. The bulk of the logic is now
complete, pending test cases to check that the code works as expected.
Merge branch 'interprocedural-analysis' of https://github.com/AlisaMaas/CArrayIntrospection into interprocedural-analysis

Conflicts:
	NullAnnotator.cc
Encapsulate iteration over just the array arguments of a function.

We were already doing this in several places, but with cloned copies
of the code for doing it.  Now we have it nicely packaged up for easy
reuse.