[llvm] r188875 - MC CFG: Keep pointer to parent MCModule in created MCFunctions.
David Blaikie
dblaikie at gmail.com
Wed Aug 21 10:19:00 PDT 2013
On Wed, Aug 21, 2013 at 12:27 AM, Ahmed Bougacha
<ahmed.bougacha at gmail.com> wrote:
> Author: ab
> Date: Wed Aug 21 02:27:55 2013
> New Revision: 188875
>
> URL: http://llvm.org/viewvc/llvm-project?rev=188875&view=rev
> Log:
> MC CFG: Keep pointer to parent MCModule in created MCFunctions.
Again, I'd prefer to see the use-case rather than dead code, but for a
sufficiently large change intermediate pieces of dead code may be the
best choice (this caveat goes for the same comment I'll probably make
about several more patches in this series).
> Also, drive-by cleaning around createFunction.
The drive by cleanup could/should've been committed as soon as you saw
it, thus reducing the density of this patch dump & making review
easier.
>
> Modified:
> llvm/trunk/include/llvm/MC/MCFunction.h
> llvm/trunk/include/llvm/MC/MCModule.h
> llvm/trunk/lib/MC/MCFunction.cpp
> llvm/trunk/lib/MC/MCModule.cpp
>
> Modified: llvm/trunk/include/llvm/MC/MCFunction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCFunction.h?rev=188875&r1=188874&r2=188875&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCFunction.h (original)
> +++ llvm/trunk/include/llvm/MC/MCFunction.h Wed Aug 21 02:27:55 2013
> @@ -74,21 +74,22 @@ public:
> };
>
> /// \brief Represents a function in machine code, containing MCBasicBlocks.
> -/// MCFunctions are created using MCModule::createFunction.
> +/// MCFunctions are created by MCModule.
> class MCFunction {
> MCFunction (const MCFunction&) LLVM_DELETED_FUNCTION;
> MCFunction& operator=(const MCFunction&) LLVM_DELETED_FUNCTION;
>
> std::string Name;
> + MCModule *ParentModule;
> typedef std::vector<MCBasicBlock*> BasicBlockListTy;
> BasicBlockListTy Blocks;
>
> // MCModule owns the function.
> friend class MCModule;
> - MCFunction(StringRef Name);
> -public:
> + MCFunction(StringRef Name, MCModule *Parent);
> ~MCFunction();
>
> +public:
> /// \brief Create an MCBasicBlock backed by Insts and add it to this function.
> /// \param Insts Sequence of straight-line code backing the basic block.
> /// \returns The newly created basic block.
>
> Modified: llvm/trunk/include/llvm/MC/MCModule.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCModule.h?rev=188875&r1=188874&r2=188875&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCModule.h (original)
> +++ llvm/trunk/include/llvm/MC/MCModule.h Wed Aug 21 02:27:55 2013
> @@ -23,6 +23,7 @@
> namespace llvm {
>
> class MCAtom;
> +class MCBasicBlock;
> class MCDataAtom;
> class MCFunction;
> class MCObjectDisassembler;
> @@ -88,8 +89,8 @@ public:
> atom_iterator atom_end() { return Atoms.end(); }
> /// @}
>
> - /// \name Create a new MCFunction.
> - MCFunction *createFunction(const StringRef &Name);
> + /// \brief Create a new MCFunction.
> + MCFunction *createFunction(StringRef Name);
>
> /// \name Access to the owned function list.
> /// @{
>
> Modified: llvm/trunk/lib/MC/MCFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCFunction.cpp?rev=188875&r1=188874&r2=188875&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCFunction.cpp (original)
> +++ llvm/trunk/lib/MC/MCFunction.cpp Wed Aug 21 02:27:55 2013
> @@ -9,15 +9,15 @@
>
> #include "llvm/MC/MCFunction.h"
> #include "llvm/MC/MCAtom.h"
> -#include "llvm/Support/raw_ostream.h"
> +#include "llvm/MC/MCModule.h"
> #include <algorithm>
>
> using namespace llvm;
>
> // MCFunction
>
> -MCFunction::MCFunction(StringRef Name)
> - : Name(Name)
> +MCFunction::MCFunction(StringRef Name, MCModule *Parent)
> + : Name(Name), ParentModule(Parent)
> {}
>
> MCFunction::~MCFunction() {
>
> Modified: llvm/trunk/lib/MC/MCModule.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCModule.cpp?rev=188875&r1=188874&r2=188875&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCModule.cpp (original)
> +++ llvm/trunk/lib/MC/MCModule.cpp Wed Aug 21 02:27:55 2013
> @@ -54,9 +54,13 @@ void MCModule::remap(MCAtom *Atom, uint6
> assert(*I == Atom && "Previous atom mapping was invalid!");
> Atoms.erase(I);
>
> + // FIXME: special case NewBegin == Atom->Begin
> +
> // Insert the new mapping.
> AtomListTy::iterator NewI = std::lower_bound(atom_begin(), atom_end(),
> NewBegin, AtomComp);
> + assert((NewI == atom_end() || (*NewI)->getBeginAddr() > Atom->End)
> + && "Offset range already occupied!");
> Atoms.insert(NewI, Atom);
>
> // Update the atom internal bounds.
> @@ -80,8 +84,8 @@ MCAtom *MCModule::findAtomContaining(uin
> return 0;
> }
>
> -MCFunction *MCModule::createFunction(const StringRef &Name) {
> - Functions.push_back(new MCFunction(Name));
> +MCFunction *MCModule::createFunction(StringRef Name) {
> + Functions.push_back(new MCFunction(Name, this));
> return Functions.back();
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list