CVS Broken?

I just updated from CVS, and after doing a clean rebuild I get this error:

/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h: In static member function ‘static bool llvm::DbgInfoIntrinsic::classof(const llvm::IntrinsicInst*)’:
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h:77: error: ‘dbg_declare’ is not a member of ‘llvm::Intrinsic’
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h: In static member function ‘static bool llvm::DbgDeclareInst::classof(const llvm::IntrinsicInst*)’:
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h:172: error: ‘dbg_declare’ is not a member of ‘llvm::Intrinsic’
make[1]: *** [/Users/bocchino/llvm-checkin/obj/lib/VMCore/Debug/Function.o] Error 1

Rob

Robert L. Bocchino Jr.

Ph.D. Student, Computer Science

University of Illinois, Urbana-Champaign

I just updated from CVS, and after doing a clean rebuild I get this error:

Are you sure that no conflicts prevented updating from going smoothly? How are you building (srcdir ==/!= objdir)?

-Chris

/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h: In static member function 'static bool llvm::DbgInfoIntrinsic::classof(const llvm::IntrinsicInst*)':
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h:77: error: 'dbg_declare' is not a member of 'llvm::Intrinsic'
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h: In static member function 'static bool llvm::DbgDeclareInst::classof(const llvm::IntrinsicInst*)':
/Users/bocchino/llvm-checkin/src/include/llvm/IntrinsicInst.h:172: error: 'dbg_declare' is not a member of 'llvm::Intrinsic'
make[1]: *** [/Users/bocchino/llvm-checkin/obj/lib/VMCore/Debug/Function.o] Error 1

Rob

Robert L. Bocchino Jr.
Ph.D. Student, Computer Science
University of Illinois, Urbana-Champaign

-Chris

I did a utils/cvsupdate, and there are no conflicts. srcdir != objdir. This is on persephone.

Are you not getting this error? Perhaps I should check out a fresh tree and try to compile it?

Rob

I did a utils/cvsupdate, and there are no conflicts. srcdir != objdir. This is on persephone.

Are you not getting this error? Perhaps I should check out a fresh tree and try to compile it?

Nope, I don't think anyone else is getting this error. If you could try a fresh build that would be great, I'll fire off an objdir != srcdir build to see if that is it.

Thanks Rob,

-Chris

OK, when I copy $(SRCDIR)/include/llvm/Intrinsics.gen to $(OBJDIR)/include/llvm/ by hand after building (and failing) once, the build succeeds. This is definitely a makefile bug.

Rob

OK, when I copy $(SRCDIR)/include/llvm/Intrinsics.gen to $(OBJDIR)/include/llvm/ by hand after building (and failing) once, the build succeeds. This is definitely a makefile bug.

It looks like the problem also goes away if I just delete $(OBJDIR)/include/llvm/Intrinsics.gen (and then it doesn’t get regenerated there).

Rob

Robert L. Bocchino Jr.

Ph.D. Student, Computer Science

University of Illinois, Urbana-Champaign

Ah, ok. This sounds like a makefile-bug-that-has-already-been-fixed. In previous cvs versions we kept it in the srcdir, but lately have moved it to objdir. Because of how vpath stuff works (?) the wrong one is getting picked up.

Reid, does this sound right to you?

-Chris

I've done several CVS head builds today .. no problems on Linux.

Reid.

I’m guessing the problem occurred because I hadn’t updated in a while (maybe a couple of weeks?) and I had an old Intrinsics.gen file hanging around in my source directory that was getting picked up by the makefile for some reason. This is a bug, but maybe it’s harmless because there’s a onetime workaround (delete the file by hand) and it won’t be a problem for anyone checking out a fresh tree.

Rob

Yes, I remember fixing that problem.

Its not a bug, its just the way things are. By design, the source
directory's include files take precedence over the object directory's
include files. That is, on the command line we use:

-I$(LLVM_SRC_ROOT)/include -I$(LLVM_OBJ_ROOT)/include

Since you had something in the srcdir, that took precendence, even
thought it was building the new version into the objdir.

Not fun, but there aren't any other good alternatives.

Reid.