URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 301 |
Rev 338 |
// { dg-do compile }
|
// { dg-do compile }
|
// { dg-options "-fshort-enums -w" }
|
// { dg-options "-fshort-enums -w" }
|
|
|
// PR c++/20008
|
// PR c++/20008
|
|
|
// We failed to compile this because CFG cleanup left the switch
|
// We failed to compile this because CFG cleanup left the switch
|
// statement intact, whereas expand_case expected at least one
|
// statement intact, whereas expand_case expected at least one
|
// in-range case to remain.
|
// in-range case to remain.
|
|
|
typedef enum _SECStatus {
|
typedef enum _SECStatus {
|
SECWouldBlock = -2,
|
SECWouldBlock = -2,
|
SECFailure = -1,
|
SECFailure = -1,
|
SECSuccess = 0
|
SECSuccess = 0
|
} SECStatus;
|
} SECStatus;
|
|
|
typedef enum {
|
typedef enum {
|
SEC_ERROR_BAD_SIGNATURE = (-0x2000) + 10
|
SEC_ERROR_BAD_SIGNATURE = (-0x2000) + 10
|
} SECErrorCodes;
|
} SECErrorCodes;
|
|
|
void g(void);
|
void g(void);
|
void f(SECStatus status)
|
void f(SECStatus status)
|
{
|
{
|
switch( status )
|
switch( status )
|
{
|
{
|
case SEC_ERROR_BAD_SIGNATURE :
|
case SEC_ERROR_BAD_SIGNATURE :
|
// This case can be optimized away in C++ (but apparently not in
|
// This case can be optimized away in C++ (but apparently not in
|
// C), because the enum type is defined with a narrow range.
|
// C), because the enum type is defined with a narrow range.
|
g();
|
g();
|
break ;
|
break ;
|
}
|
}
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.