[llvm-commits] [llvm] r163247 - in /llvm/trunk/lib/Target/X86/Disassembler: X86Disassembler.cpp X86DisassemblerDecoder.c X86DisassemblerDecoder.h
Roman Divacky
rdivacky at freebsd.org
Wed Sep 5 14:42:38 PDT 2012
Basically this:
int main() {
const int *cp;
int *p = (int *)cp;
}
pes ~/openacc$ g++48 -Wcast-qual gcc48-warning.cpp
gcc48-warning.cpp: In function 'int main()':
gcc48-warning.cpp:3:19: warning: cast from type 'const int*' to type 'int*' casts away qualifiers [-Wcast-qual]
int *p = (int *)cp;
^
pes ~/openacc$ clang++ -Wcast-qual gcc48-warning.cpp
pes ~/openacc$
In some places we cast away the const qualifier needlessly.
On Wed, Sep 05, 2012 at 05:22:34PM -0400, Chandler Carruth wrote:
> My question here is similar to the question on other commits here:
>
> What is the warning or error that detects this? Is it correct?
>
> If so, could you file bugs to add this to Clang? We shouldn't have this
> type of divergent syntaxes between GCC and Clang...
>
>
> On Wed, Sep 5, 2012 at 5:17 PM, Roman Divacky <rdivacky at freebsd.org> wrote:
>
> > Author: rdivacky
> > Date: Wed Sep 5 16:17:34 2012
> > New Revision: 163247
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=163247&view=rev
> > Log:
> > Use const properly so that we dont remove const qualifier from region and
> > MII
> > by casting. Found with gcc48.
> >
> > Modified:
> > llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp
> > llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
> > llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
> >
> > Modified: llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp
> > URL:
> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp?rev=163247&r1=163246&r2=163247&view=diff
> >
> > ==============================================================================
> > --- llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp (original)
> > +++ llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp Wed Sep 5
> > 16:17:34 2012
> > @@ -44,7 +44,7 @@
> > dbgs() << file << ":" << line << ": " << s;
> > }
> >
> > -const char *x86DisassemblerGetInstrName(unsigned Opcode, void *mii) {
> > +const char *x86DisassemblerGetInstrName(unsigned Opcode, const void *mii)
> > {
> > const MCInstrInfo *MII = static_cast<const MCInstrInfo *>(mii);
> > return MII->getName(Opcode);
> > }
> > @@ -95,8 +95,8 @@
> > /// be a pointer to a MemoryObject.
> > /// @param byte - A pointer to the byte to be read.
> > /// @param address - The address to be read.
> > -static int regionReader(void* arg, uint8_t* byte, uint64_t address) {
> > - MemoryObject* region = static_cast<MemoryObject*>(arg);
> > +static int regionReader(const void* arg, uint8_t* byte, uint64_t address)
> > {
> > + const MemoryObject* region = static_cast<const MemoryObject*>(arg);
> > return region->readByte(address, byte);
> > }
> >
> > @@ -135,10 +135,10 @@
> >
> > int ret = decodeInstruction(&internalInstr,
> > regionReader,
> > - (void*)®ion,
> > + (const void*)®ion,
> > loggerFn,
> > (void*)&vStream,
> > - (void*)MII,
> > + (const void*)MII,
> > address,
> > fMode);
> >
> >
> > Modified: llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
> > URL:
> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c?rev=163247&r1=163246&r2=163247&view=diff
> >
> > ==============================================================================
> > --- llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
> > (original)
> > +++ llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c Wed
> > Sep 5 16:17:34 2012
> > @@ -719,7 +719,7 @@
> > * @return - 0 if the ModR/M could be read when needed or was not
> > needed;
> > * nonzero otherwise.
> > */
> > -static int getID(struct InternalInstruction* insn, void *miiArg) {
> > +static int getID(struct InternalInstruction* insn, const void *miiArg) {
> > uint8_t attrMask;
> > uint16_t instructionID;
> >
> > @@ -1621,10 +1621,10 @@
> > */
> > int decodeInstruction(struct InternalInstruction* insn,
> > byteReader_t reader,
> > - void* readerArg,
> > + const void* readerArg,
> > dlog_t logger,
> > void* loggerArg,
> > - void* miiArg,
> > + const void* miiArg,
> > uint64_t startLoc,
> > DisassemblerMode mode) {
> > memset(insn, 0, sizeof(struct InternalInstruction));
> >
> > Modified: llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
> > URL:
> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h?rev=163247&r1=163246&r2=163247&view=diff
> >
> > ==============================================================================
> > --- llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
> > (original)
> > +++ llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h Wed
> > Sep 5 16:17:34 2012
> > @@ -403,7 +403,7 @@
> > * be read from.
> > * @return - -1 if the byte cannot be read for any reason; 0
> > otherwise.
> > */
> > -typedef int (*byteReader_t)(void* arg, uint8_t* byte, uint64_t address);
> > +typedef int (*byteReader_t)(const void* arg, uint8_t* byte, uint64_t
> > address);
> >
> > /*
> > * dlog_t - Type for the logging function that the consumer can provide to
> > @@ -422,7 +422,7 @@
> > /* Reader interface (C) */
> > byteReader_t reader;
> > /* Opaque value passed to the reader */
> > - void* readerArg;
> > + const void* readerArg;
> > /* The address of the next byte to read via the reader */
> > uint64_t readerCursor;
> >
> > @@ -561,10 +561,10 @@
> > */
> > int decodeInstruction(struct InternalInstruction* insn,
> > byteReader_t reader,
> > - void* readerArg,
> > + const void* readerArg,
> > dlog_t logger,
> > void* loggerArg,
> > - void* miiArg,
> > + const void* miiArg,
> > uint64_t startLoc,
> > DisassemblerMode mode);
> >
> > @@ -579,7 +579,7 @@
> > unsigned line,
> > const char *s);
> >
> > -const char *x86DisassemblerGetInstrName(unsigned Opcode, void *mii);
> > +const char *x86DisassemblerGetInstrName(unsigned Opcode, const void *mii);
> >
> > #ifdef __cplusplus
> > }
> >
> >
> > _______________________________________________
> > 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