[llvm-commits] [llvm] r164813 - /llvm/trunk/include/llvm/Operator.h

David Blaikie dblaikie at gmail.com
Wed Oct 3 10:22:38 PDT 2012


Oh, I see, this is an intermediate abstract class? I didn't test that
case, I was just directly instantiating the class I was testing.

OK, now I'm confused by this Operator type. How is it useful? If the
ctor is deleted then no derived type could ever be instantiated, could
it? So why would these be types at all instead of collections of
static utility functions?

On Wed, Oct 3, 2012 at 9:40 AM, Craig Topper <craig.topper at gmail.com> wrote:
> I didn't have any problems. Maybe it worked because the constructor was also
> deleted so there was no vtable created?
>
>
> On Wed, Oct 3, 2012 at 9:35 AM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> Looks like it's probably invalid - my simple tests show Clang failing
>> to link a simple program that does this. Did you not have that problem
>> when building these changes with Clang?
>>
>> On Wed, Oct 3, 2012 at 9:14 AM, Craig Topper <craig.topper at gmail.com>
>> wrote:
>> > I couldn't find anything in the standard either so I don't know.
>> >
>> >
>> > On Wed, Oct 3, 2012 at 12:38 AM, David Blaikie <dblaikie at gmail.com>
>> > wrote:
>> >>
>> >> On Fri, Sep 28, 2012 at 12:17 AM, Craig Topper <craig.topper at gmail.com>
>> >> wrote:
>> >> > Author: ctopper
>> >> > Date: Fri Sep 28 02:17:01 2012
>> >> > New Revision: 164813
>> >> >
>> >> > URL: http://llvm.org/viewvc/llvm-project?rev=164813&view=rev
>> >> > Log:
>> >> > Remove a LLVM_DELETED_FUNCTION from destructor to fix -std=c++11
>> >> > build
>> >> > on gcc 4.7.
>> >> >
>> >> > Modified:
>> >> >     llvm/trunk/include/llvm/Operator.h
>> >> >
>> >> > Modified: llvm/trunk/include/llvm/Operator.h
>> >> > URL:
>> >> >
>> >> > http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Operator.h?rev=164813&r1=164812&r2=164813&view=diff
>> >> >
>> >> >
>> >> > ==============================================================================
>> >> > --- llvm/trunk/include/llvm/Operator.h (original)
>> >> > +++ llvm/trunk/include/llvm/Operator.h Fri Sep 28 02:17:01 2012
>> >> > @@ -35,7 +35,9 @@
>> >> >    void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
>> >> >    void *operator new(size_t s) LLVM_DELETED_FUNCTION;
>> >> >    Operator() LLVM_DELETED_FUNCTION;
>> >> > -  ~Operator() LLVM_DELETED_FUNCTION;
>> >> > +  // NOTE: cannot use LLVM_DELETED_FUNCTION because gcc errors when
>> >> > deleting
>> >> > +  // an override of a non-deleted function.
>> >>
>> >> Any idea if this is standard or a GCC bug/feature? I can't find any
>> >> wording in the standard for this, but it might be a defect under
>> >> discussion, though I don't see anything at a quick glance.
>> >>
>> >> > +  ~Operator();
>> >> >
>> >> >  public:
>> >> >    /// getOpcode - Return the opcode for this Instruction or
>> >> > ConstantExpr.
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > llvm-commits mailing list
>> >> > llvm-commits at cs.uiuc.edu
>> >> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> >
>> >
>> >
>> >
>> > --
>> > ~Craig
>
>
>
>
> --
> ~Craig



More information about the llvm-commits mailing list