On 01/07/2013 01:42 PM, Steven Bosscher wrote:
For optimizations it's a bit more difficult.
Somewhat. For what I'm suggesting, the way we'd miss an optimization
would be if by removing the unreachable block and simplifying the CFG we
ultimately remove a conditional which produced a result whic
On 01/07/2013 01:42 PM, Steven Bosscher wrote:
typedef enum fruits { banana = 0, apple = 1, pear = 2, orange = 3 } fruit;
extern void price_fruit_of_the_day (int);
void
discount_of_the_day (fruit f)
{
int p, c = (int) f;
switch (f)
{
case banana:
UNREACHABLE ();
case a
On Tue, Jan 8, 2013 at 5:16 PM, Jeff Law wrote:
> On 01/08/2013 04:26 AM, Richard Biener wrote:
>
>>
>> The issue is VRP - when you remove unreachable blocks you lose the
>> conditional statement as it is no longer necessary and thus the predicate
>> you can derive value-ranges from.
>
> Understoo
On Tue, Jan 8, 2013 at 12:32 PM, Richard Biener wrote:
> Does it handle side-effects on the builtin-unreachable path correctly?
>
> int b;
> int a;
> extern void foo ();
> int main()
> {
> if (!a)
>{
> if (!b)
>foo ();
> __builtin_unreachable ();
>}
> }
>
> ---
>
> void
On 01/08/2013 04:26 AM, Richard Biener wrote:
The issue is VRP - when you remove unreachable blocks you lose the
conditional statement as it is no longer necessary and thus the predicate
you can derive value-ranges from.
Understood. Perhaps we could eliminate them after the first VRP pass,
bu
On Sat, Jan 5, 2013 at 9:10 PM, Steven Bosscher wrote:
> On Thu, Jan 3, 2013 at 9:51 PM, Jeff Law wrote:
>> On 01/03/2013 12:01 PM, Steven Bosscher wrote:
>>>
>>> Hello,
>>>
>>> Consider the following test case:
>>>
>>> void bar (void);
>>> int foo (int b, int c, int d)
>>> {
>>>int r = 0;
>>>
On Mon, Jan 7, 2013 at 8:45 PM, Jeff Law wrote:
> On 01/05/2013 01:10 PM, Steven Bosscher wrote:
>>>
>>>
>>> Presumably BB7 was created in response to the builtin_unreachable?
>>
>>
>> Yes. The block only contains the BB_UNREACHABLE call. It is cleaned up
>> at the end of the GIMPLE passes pipelin
On Mon, Jan 7, 2013 at 8:45 PM, Jeff Law wrote:
> Before diving into the patch I think we should figure out why we see such
> different effects of eliminating these paths from the CFG. Your assertion
> is eliminating them will result in more false positives and less
> optimization while my assert
On 01/05/2013 01:10 PM, Steven Bosscher wrote:
Presumably BB7 was created in response to the builtin_unreachable?
Yes. The block only contains the BB_UNREACHABLE call. It is cleaned up
at the end of the GIMPLE passes pipeline, in the fold-all-builtins
pass (most __builtin_unreachable calls are
On Sat, Jan 5, 2013 at 9:10 PM, Steven Bosscher wrote:
> Bootstrapped&tested on powerpc64-unknown-linux-gnu.
And to be clear, bootstrapped with this patch on top:
Index: system.h
===
--- system.h(revision 194924)
+++ system.h(
On Thu, Jan 3, 2013 at 9:51 PM, Jeff Law wrote:
> On 01/03/2013 12:01 PM, Steven Bosscher wrote:
>>
>> Hello,
>>
>> Consider the following test case:
>>
>> void bar (void);
>> int foo (int b, int c, int d)
>> {
>>int r = 0;
>>if (b)
>> res = b * 2 + 4;
>>if (c)
>> {
>>
11 matches
Mail list logo