[LLVM] Uninitialized member in copy constructor in DataLayout.h

Peng Cheng gm4cheng at gmail.com
Wed Feb 27 11:33:33 PST 2013


I cannot create an llvm ir for regression test.  I test the llvm ir, which
causes the uninitialized value in my program, with llc, but cannot
reproduce the issue with valgrind.  I think that it is related to the order
and types of different ir transformations between llc and my program, or
llc goes to the branch to create DataLayout directly from Module, not from
copy constructor. Maybe someone familiar with the ir transformation details
could come up a test case.

But if you follows the llvm tutorial at
http://llvm.org/docs/tutorial/LangImpl4.html

OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));

This would put a bomb in your code.  When you were lucky, StackNaturalAlign
is given some value and program works; otherwise, lead to undefined
behaviors and days to debug...


On Wed, Feb 27, 2013 at 12:05 AM, David Blaikie <dblaikie at gmail.com> wrote:

> On Tue, Feb 26, 2013 at 8:37 PM, Peng Cheng <gm4cheng at gmail.com> wrote:
> > The usual llvm regression tests for a standard constructor bug seems
> like an
> > overkill, leading to many wasteful code exercises, such as ir reading,
> > optimization, code generation, ...
>
> While I'm the last to advocate for indirect testing, this is generally
> the attitude in the LLVM project - to exercise from the actual
> user-programs. This ensures better coverage (though not necessarily
> actually /testing/ all of that, of course) in some ways, worse
> coverage in others.
>
> > Are there any other places to place the unit tests for classes in llvm
> code
> > base?  Simply to test whether all the necessary fields are initialized
> after
> > the copy constructor.
>
> We do have true API-level unit tests as well - just not often written,
> usually only for core/generic data structures & the like.
>
> >
> >
> > On Tue, Feb 26, 2013 at 10:51 PM, David Blaikie <dblaikie at gmail.com>
> wrote:
> >>
> >> On Tue, Feb 26, 2013 at 7:34 PM, Peng Cheng <gm4cheng at gmail.com> wrote:
> >> > It did not fail on any valgrind bots.  But when I used valgrind to
> check
> >> > my
> >> > jit engine based on llvm, I found the bug.
> >> >
> >> > Could you point to me an example of test case for the valgrind bot?  I
> >> > need
> >> > to see how the test infrastructure is setup in llvm.
> >>
> >> The current public valgrind bot (
> >> http://lab.llvm.org:8011/builders/clang-x86_64-linux-vg - there may be
> >> others) just runs the usual LLVM/Clang regression tests. So if you can
> >> construct a nice small/simple regression test you can add that (&
> >> limit the test to only running under valgrind, potentially)
> >>
> >> > On Tue, Feb 26, 2013 at 10:28 PM, David Blaikie <dblaikie at gmail.com>
> >> > wrote:
> >> >>
> >> >> On Tue, Feb 26, 2013 at 7:15 PM, Peng Cheng <gm4cheng at gmail.com>
> wrote:
> >> >> > The copy constructor of class DataLayout fails to initialize
> >> >> > StackNaturalAlign.  It could lead to conditional jump on
> >> >> > uninitialized
> >> >> > variables in member function exceedsNaturalStackAlignment.
> >> >>
> >> >> Does this fail any valgrind bots? Could you write a test case that
> >> >> would fail under valgrind?
> >> >>
> >> >> > See fix in the patch attached.
> >> >> >
> >> >> > _______________________________________________
> >> >> > llvm-commits mailing list
> >> >> > llvm-commits at cs.uiuc.edu
> >> >> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >> >> >
> >> >
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130227/0142c2c6/attachment.html>


More information about the llvm-commits mailing list