[llvm-commits] [PATCH] Add single entry / single exit accessors.

Tobias Grosser grosser at fim.uni-passau.de
Thu Jan 13 16:00:40 PST 2011


>>> >>  -    BasicBlock *Pred = *PI;
>>> >>  +    Pred = *PI;
>>> >>         if (DT->getNode(Pred)&&   !contains(Pred)) {
>>> >>  -      if (found) {
>>> >>  -        isSimple = false;
>>> >>  -        break;
>>> >>  -      }
>>> >>  -      found = true;
>>> >>  +      if (ee)
>>> >>  +        return 0;
>>> >>  +
>>> >>  +      ee = Pred;
>> >  Can you combine the two if conditions?
> I don't understand, as the predicate
> (DT->getNode(Pred)&&  !contains(Pred)) has to be valid for
> both statements inside the block, so I would have to recheck that in
> an else branch after merging both if's? Perhaps I'm just not thinking
> clearly, it's a bit late;-)

Don't mind. I just looked at the patch and did not see the assignment.

>>> >>  +bool Region::isSimple() const {
>>> >>  +  return !(isTopLevelRegion())
>>> >>  +&&   (getSingleEntryBlock() != 0)
>>> >>  +&&   (getSingleExitBlock() != 0);
>> >  I am not sure if my email has removed some spaces/tabs. But please
>> >  recheck indentation.
> I think so, the indentation is correct within my mail client. I attached
> two versions of the patch
>
> without *.svn.patch was generated using git diff --no-prefix ... and
> the other one was generated using git format-patch.
The format-patch one is fine. I changed this slightly to fit into one 
line. I believe this makes it more readable.

> +  /// @brief Return the first block of this region's single entry edge,
> +  ///        if existing.
> +  ///
> +  /// @return The BasicBlock starting this region's single entry edge,
> +  ///         else NULL.
> +  BasicBlock *getSingleEntryBlock() const;
> +
> +  /// @brief Return the first block of this region's single exit edge,
> +  ///        if existing.
> +  ///
> +  /// @return The BasicBlock starting this region's single exit edge,
> +  ///         else NULL.
> +  BasicBlock *getSingleExitBlock() const;

You forgot to rename the functions in the header file.

I committed the patch after fixing two items mentioned above:

http://llvm.org/viewvc/llvm-project/?view=rev&revision=123410

Thanks for your contribution

Tobi



More information about the llvm-commits mailing list