Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit a286fc0

Browse files
committed
Silence anonymous type in anonymous union warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177135 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent cba46dc commit a286fc0

File tree

6 files changed

+250
-197
lines changed

6 files changed

+250
-197
lines changed

include/llvm/ExecutionEngine/GenericValue.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@ typedef void* PointerTy;
2424
class APInt;
2525

2626
struct GenericValue {
27+
struct IntPair {
28+
unsigned int first;
29+
unsigned int second;
30+
};
2731
union {
2832
double DoubleVal;
2933
float FloatVal;
3034
PointerTy PointerVal;
31-
struct { unsigned int first; unsigned int second; } UIntPairVal;
35+
struct IntPair UIntPairVal;
3236
unsigned char Untyped[8];
3337
};
3438
APInt IntVal; // also used for long doubles

lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

+46-37
Original file line numberDiff line numberDiff line change
@@ -160,44 +160,53 @@ class AArch64Operand : public MCParsedAsmOperand {
160160

161161
SMLoc StartLoc, EndLoc;
162162

163+
struct ImmWithLSLOp {
164+
const MCExpr *Val;
165+
unsigned ShiftAmount;
166+
bool ImplicitAmount;
167+
};
168+
169+
struct CondCodeOp {
170+
A64CC::CondCodes Code;
171+
};
172+
173+
struct FPImmOp {
174+
double Val;
175+
};
176+
177+
struct ImmOp {
178+
const MCExpr *Val;
179+
};
180+
181+
struct RegOp {
182+
unsigned RegNum;
183+
};
184+
185+
struct ShiftExtendOp {
186+
A64SE::ShiftExtSpecifiers ShiftType;
187+
unsigned Amount;
188+
bool ImplicitAmount;
189+
};
190+
191+
struct SysRegOp {
192+
const char *Data;
193+
unsigned Length;
194+
};
195+
196+
struct TokOp {
197+
const char *Data;
198+
unsigned Length;
199+
};
200+
163201
union {
164-
struct {
165-
const MCExpr *Val;
166-
unsigned ShiftAmount;
167-
bool ImplicitAmount;
168-
} ImmWithLSL;
169-
170-
struct {
171-
A64CC::CondCodes Code;
172-
} CondCode;
173-
174-
struct {
175-
double Val;
176-
} FPImm;
177-
178-
struct {
179-
const MCExpr *Val;
180-
} Imm;
181-
182-
struct {
183-
unsigned RegNum;
184-
} Reg;
185-
186-
struct {
187-
A64SE::ShiftExtSpecifiers ShiftType;
188-
unsigned Amount;
189-
bool ImplicitAmount;
190-
} ShiftExtend;
191-
192-
struct {
193-
const char *Data;
194-
unsigned Length;
195-
} SysReg;
196-
197-
struct {
198-
const char *Data;
199-
unsigned Length;
200-
} Tok;
202+
struct ImmWithLSLOp ImmWithLSL;
203+
struct CondCodeOp CondCode;
204+
struct FPImmOp FPImm;
205+
struct ImmOp Imm;
206+
struct RegOp Reg;
207+
struct ShiftExtendOp ShiftExtend;
208+
struct SysRegOp SysReg;
209+
struct TokOp Tok;
201210
};
202211

203212
AArch64Operand(KindTy K, SMLoc S, SMLoc E)

lib/Target/ARM/AsmParser/ARMAsmParser.cpp

+120-96
Original file line numberDiff line numberDiff line change
@@ -316,103 +316,127 @@ class ARMOperand : public MCParsedAsmOperand {
316316
SMLoc StartLoc, EndLoc;
317317
SmallVector<unsigned, 8> Registers;
318318

319+
struct CCOp {
320+
ARMCC::CondCodes Val;
321+
};
322+
323+
struct CopOp {
324+
unsigned Val;
325+
};
326+
327+
struct CoprocOptionOp {
328+
unsigned Val;
329+
};
330+
331+
struct ITMaskOp {
332+
unsigned Mask:4;
333+
};
334+
335+
struct MBOptOp {
336+
ARM_MB::MemBOpt Val;
337+
};
338+
339+
struct IFlagsOp {
340+
ARM_PROC::IFlags Val;
341+
};
342+
343+
struct MMaskOp {
344+
unsigned Val;
345+
};
346+
347+
struct TokOp {
348+
const char *Data;
349+
unsigned Length;
350+
};
351+
352+
struct RegOp {
353+
unsigned RegNum;
354+
};
355+
356+
// A vector register list is a sequential list of 1 to 4 registers.
357+
struct VectorListOp {
358+
unsigned RegNum;
359+
unsigned Count;
360+
unsigned LaneIndex;
361+
bool isDoubleSpaced;
362+
};
363+
364+
struct VectorIndexOp {
365+
unsigned Val;
366+
};
367+
368+
struct ImmOp {
369+
const MCExpr *Val;
370+
};
371+
372+
/// Combined record for all forms of ARM address expressions.
373+
struct MemoryOp {
374+
unsigned BaseRegNum;
375+
// Offset is in OffsetReg or OffsetImm. If both are zero, no offset
376+
// was specified.
377+
const MCConstantExpr *OffsetImm; // Offset immediate value
378+
unsigned OffsetRegNum; // Offset register num, when OffsetImm == NULL
379+
ARM_AM::ShiftOpc ShiftType; // Shift type for OffsetReg
380+
unsigned ShiftImm; // shift for OffsetReg.
381+
unsigned Alignment; // 0 = no alignment specified
382+
// n = alignment in bytes (2, 4, 8, 16, or 32)
383+
unsigned isNegative : 1; // Negated OffsetReg? (~'U' bit)
384+
};
385+
386+
struct PostIdxRegOp {
387+
unsigned RegNum;
388+
bool isAdd;
389+
ARM_AM::ShiftOpc ShiftTy;
390+
unsigned ShiftImm;
391+
};
392+
393+
struct ShifterImmOp {
394+
bool isASR;
395+
unsigned Imm;
396+
};
397+
398+
struct RegShiftedRegOp {
399+
ARM_AM::ShiftOpc ShiftTy;
400+
unsigned SrcReg;
401+
unsigned ShiftReg;
402+
unsigned ShiftImm;
403+
};
404+
405+
struct RegShiftedImmOp {
406+
ARM_AM::ShiftOpc ShiftTy;
407+
unsigned SrcReg;
408+
unsigned ShiftImm;
409+
};
410+
411+
struct RotImmOp {
412+
unsigned Imm;
413+
};
414+
415+
struct BitfieldOp {
416+
unsigned LSB;
417+
unsigned Width;
418+
};
419+
319420
union {
320-
struct {
321-
ARMCC::CondCodes Val;
322-
} CC;
323-
324-
struct {
325-
unsigned Val;
326-
} Cop;
327-
328-
struct {
329-
unsigned Val;
330-
} CoprocOption;
331-
332-
struct {
333-
unsigned Mask:4;
334-
} ITMask;
335-
336-
struct {
337-
ARM_MB::MemBOpt Val;
338-
} MBOpt;
339-
340-
struct {
341-
ARM_PROC::IFlags Val;
342-
} IFlags;
343-
344-
struct {
345-
unsigned Val;
346-
} MMask;
347-
348-
struct {
349-
const char *Data;
350-
unsigned Length;
351-
} Tok;
352-
353-
struct {
354-
unsigned RegNum;
355-
} Reg;
356-
357-
// A vector register list is a sequential list of 1 to 4 registers.
358-
struct {
359-
unsigned RegNum;
360-
unsigned Count;
361-
unsigned LaneIndex;
362-
bool isDoubleSpaced;
363-
} VectorList;
364-
365-
struct {
366-
unsigned Val;
367-
} VectorIndex;
368-
369-
struct {
370-
const MCExpr *Val;
371-
} Imm;
372-
373-
/// Combined record for all forms of ARM address expressions.
374-
struct {
375-
unsigned BaseRegNum;
376-
// Offset is in OffsetReg or OffsetImm. If both are zero, no offset
377-
// was specified.
378-
const MCConstantExpr *OffsetImm; // Offset immediate value
379-
unsigned OffsetRegNum; // Offset register num, when OffsetImm == NULL
380-
ARM_AM::ShiftOpc ShiftType; // Shift type for OffsetReg
381-
unsigned ShiftImm; // shift for OffsetReg.
382-
unsigned Alignment; // 0 = no alignment specified
383-
// n = alignment in bytes (2, 4, 8, 16, or 32)
384-
unsigned isNegative : 1; // Negated OffsetReg? (~'U' bit)
385-
} Memory;
386-
387-
struct {
388-
unsigned RegNum;
389-
bool isAdd;
390-
ARM_AM::ShiftOpc ShiftTy;
391-
unsigned ShiftImm;
392-
} PostIdxReg;
393-
394-
struct {
395-
bool isASR;
396-
unsigned Imm;
397-
} ShifterImm;
398-
struct {
399-
ARM_AM::ShiftOpc ShiftTy;
400-
unsigned SrcReg;
401-
unsigned ShiftReg;
402-
unsigned ShiftImm;
403-
} RegShiftedReg;
404-
struct {
405-
ARM_AM::ShiftOpc ShiftTy;
406-
unsigned SrcReg;
407-
unsigned ShiftImm;
408-
} RegShiftedImm;
409-
struct {
410-
unsigned Imm;
411-
} RotImm;
412-
struct {
413-
unsigned LSB;
414-
unsigned Width;
415-
} Bitfield;
421+
struct CCOp CC;
422+
struct CopOp Cop;
423+
struct CoprocOptionOp CoprocOption;
424+
struct MBOptOp MBOpt;
425+
struct ITMaskOp ITMask;
426+
struct IFlagsOp IFlags;
427+
struct MMaskOp MMask;
428+
struct TokOp Tok;
429+
struct RegOp Reg;
430+
struct VectorListOp VectorList;
431+
struct VectorIndexOp VectorIndex;
432+
struct ImmOp Imm;
433+
struct MemoryOp Memory;
434+
struct PostIdxRegOp PostIdxReg;
435+
struct ShifterImmOp ShifterImm;
436+
struct RegShiftedRegOp RegShiftedReg;
437+
struct RegShiftedImmOp RegShiftedImm;
438+
struct RotImmOp RotImm;
439+
struct BitfieldOp Bitfield;
416440
};
417441

418442
ARMOperand(KindTy K) : MCParsedAsmOperand(), Kind(K) {}

lib/Target/MBlaze/AsmParser/MBlazeAsmParser.cpp

+28-22
Original file line numberDiff line numberDiff line change
@@ -82,29 +82,35 @@ struct MBlazeOperand : public MCParsedAsmOperand {
8282

8383
SMLoc StartLoc, EndLoc;
8484

85+
struct TokOp {
86+
const char *Data;
87+
unsigned Length;
88+
};
89+
90+
struct RegOp {
91+
unsigned RegNum;
92+
};
93+
94+
struct ImmOp {
95+
const MCExpr *Val;
96+
};
97+
98+
struct MemOp {
99+
unsigned Base;
100+
unsigned OffReg;
101+
const MCExpr *Off;
102+
};
103+
104+
struct FslImmOp {
105+
const MCExpr *Val;
106+
};
107+
85108
union {
86-
struct {
87-
const char *Data;
88-
unsigned Length;
89-
} Tok;
90-
91-
struct {
92-
unsigned RegNum;
93-
} Reg;
94-
95-
struct {
96-
const MCExpr *Val;
97-
} Imm;
98-
99-
struct {
100-
unsigned Base;
101-
unsigned OffReg;
102-
const MCExpr *Off;
103-
} Mem;
104-
105-
struct {
106-
const MCExpr *Val;
107-
} FslImm;
109+
struct TokOp Tok;
110+
struct RegOp Reg;
111+
struct ImmOp Imm;
112+
struct MemOp Mem;
113+
struct FslImmOp FslImm;
108114
};
109115

110116
MBlazeOperand(KindTy K) : MCParsedAsmOperand(), Kind(K) {}

0 commit comments

Comments
 (0)