Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Empty compaction tables defined #802

Closed
llvmbot opened this issue Aug 26, 2004 · 5 comments
Closed

Empty compaction tables defined #802

llvmbot opened this issue Aug 26, 2004 · 5 comments
Labels
bugzilla Issues migrated from bugzilla llvm:bitcode regression

Comments

@llvmbot
Copy link
Collaborator

llvmbot commented Aug 26, 2004

Bugzilla Link 430
Resolution FIXED
Resolved on Feb 22, 2010 12:54
Version 1.3
OS All
Reporter LLVM Bugzilla Contributor

Extended Description

In all the simple code cases I've examined by hand so far, empty compaction
tables are defined for the functions that remain after full linking and inlining
(in both the cases below, a single function remains).

Case #​1

int main( void )
{
return( 0 );
}

Case #​2

#include <stdio.h>

int main( void )
{
puts( "Hello world!" );
return( 0 );
}

@llvmbot
Copy link
Collaborator Author

llvmbot commented Aug 26, 2004

Bytecode For Robert's First Example
This bytecode file has an empty compaction table in it.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Aug 26, 2004

Bytecode For Robert's Second Example
This also has an empty compaction table in it.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Aug 26, 2004

Verified that this is a bug. The empty compaction table is not being elided.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Aug 26, 2004

This is a regression introduced in release 1.3 with the Type != Value change.
The problem is that the compaction table now consists of a Type list followed by
a set of planes of Values. Previously, it had just the planes of Values (because
Types were Values). Because the type list must write a 0 byte to indicate there
are no types, the block is not zero length and thus not automatically elided,
even if there are no planes of Values.

The fix for this isn't straight foward. You don't know that the planes of Values
won't all be omitted until you traverse them all (the compaction table can be
full of empty planes if that makes any sense).

I'll look into this when I have time. It only affects the size of the bytecode
file, not the quality of it.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Aug 27, 2004

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 3, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla llvm:bitcode regression
Projects
None yet
Development

No branches or pull requests

1 participant